Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2021, 14:33   #1
devel2011
Пользователь
 
Регистрация: 24.10.2021
Сообщений: 17
Вопрос A51 в HEX

Привет, товарищи!
Прилетел мне исходник на assembler-е, с расширением *.А51
Программа написана под процессор 8051, в железе стоит АТ89С51.
Хотел по-быстренькому скомпилировать A51 в HEX, в Keil microVision/Moravia MCU 8051 IDE/C51ASM от Atmel - не вышло. Вываливаются ошибки при компиляции.

Первое, что бросилось в глаза, это объявление (инициализация) переменных. Пример:
KEY REG P0.1
Логика записи мне понятна: порт 0, линия 1 резервируем за переменной KEY.
Выяснил, что REG это псевдо-инструкция, и компилятор на нее ругается, как на синтаксическую ошибку. Таких строк с инициализацией много, соответственно дальнейший код не находит этих переменных, и сыпет в консоль еще кучу ошибок. Погуглил, нашел, что псевдо-инструкции (pseudo-ops) описаны в мануле "A51 8051 Cross-assembler", синтаксис соответствует. Но компиляторы пытаются принять эти псевдо-инструкции за команды ассемблера.
Еще один момент: самая первая строка файла FILE.A51 содержит запись " .CHIP 8051". Само по себе это указывает на конкретный МК. Но вот сама инструкция .CHIP мне нигде не попадается больше, кроме листингов COP8, где аналогично указывается чип.
Кроме файла FILE.A51 никаких других файлов (объектных, листинга и т.п.) нет.

Отсюда вопросы и глас о помощи. В какой среде был набит FILE.А51, как его скомпилировать в HEX?
devel2011 вне форума Ответить с цитированием
Старый 25.10.2021, 12:20   #2
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Вы же сами ответили на свой вопрос:
Цитата:
Сообщение от devel2011 Посмотреть сообщение
Но вот сама инструкция .CHIP мне нигде не попадается больше, кроме листингов COP8, где аналогично указывается чип.
Берете и компилите. Или подправляете под нужный синтаксис.
ForenLi вне форума Ответить с цитированием
Старый 25.10.2021, 16:31   #3
devel2011
Пользователь
 
Регистрация: 24.10.2021
Сообщений: 17
По умолчанию

Подправлять синтаксис не хотелось бы. По крайней мере пока.
Я не уверен, что инструкция .CHIP была только в COP8.
COP8, как я понял, детище National Semiconductor, а у нас Atmel.
У NS был свой NSASM и среда WCOP8. Могла ли она быть использована в проекте с AT89C51?
Я сомневаюсь.
Скорее всего, был какой-то IDE комплексный, с поддержкой разных МК, поэтому он имел свою встроенную инструкцию .CHIP для указания компилятору. Но я пока не нашел, какой IDE мог выкидывать в сырец такую инструкция. Что-то подобное делали IDE от Borland, добавляя в начало исходника архитектуру МК. Типа .486 и т.п. Может кто-то и CHIP вспомнит?
devel2011 вне форума Ответить с цитированием
Старый 25.10.2021, 22:41   #4
devel2011
Пользователь
 
Регистрация: 24.10.2021
Сообщений: 17
По умолчанию

Я хочу попробовать найти среду разработки, и сделать компиляцию в ней.
Понимаю, что 20+ лет назад, всяких ASM-ов и IDE было много, но не настолько много, чтобы задача была невыполнимой. Может кто-то накидает вариантов, кто что вспомнит, в каких IDE вообще возможно было под 8051 вести разработку ПО?
devel2011 вне форума Ответить с цитированием
Старый 26.10.2021, 12:33   #5
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Проще подправить синтаксис. Туже COP8 уже просто так не найти. Ну если хочется, то можете копаться ToolStick, Silicon Labs IDE, Keil, IAR, MPLAB, SDCC, eclipse + plugins, ...
ForenLi вне форума Ответить с цитированием
Старый 26.10.2021, 14:24   #6
devel2011
Пользователь
 
Регистрация: 24.10.2021
Сообщений: 17
По умолчанию

Правда ваша, поиски COP8 не увенчались успехом. Ну тогда вопросы по синтаксису.
Код:
        .CHIP   8051

QUARZ   EQU     4046            ;ЧАСТОТА КВАРЦА В kHz

KEY     REG     P0.1
ZV      REG     P0.5
TEST    REG     P0.6
DUP     REG     P0.7
Допустим, Keil. Он не знает директиву (псевдо-инструкцию) REG. Как правильно инициализировать эти переменные?
devel2011 вне форума Ответить с цитированием
Старый 26.10.2021, 15:43   #7
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Код:
KEY     EQU P0_1
ForenLi вне форума Ответить с цитированием
Старый 26.10.2021, 16:03   #8
devel2011
Пользователь
 
Регистрация: 24.10.2021
Сообщений: 17
По умолчанию

Что-то не так. Undefined Symbol (pass-2) получаю.
P0.1 является портом 0, бит 1. P0_1, видимо, воспринимается как другая переменная. Т.е. KEY EQU P0_1 требует объявления P0_1? =)
devel2011 вне форума Ответить с цитированием
Старый 26.10.2021, 16:06   #9
ForenLi
Форумчанин
 
Регистрация: 02.06.2021
Сообщений: 515
По умолчанию

Вы inc для АТ89С51 подключили?
ForenLi вне форума Ответить с цитированием
Старый 26.10.2021, 16:20   #10
devel2011
Пользователь
 
Регистрация: 24.10.2021
Сообщений: 17
По умолчанию

Нет. Я так понимаю, .CHIP 8051 (в каком-то другом IDE) указывала компилятору набор инструкций и регистров стандартного 8051. Я посчитал, что Keil "из коробки" по-дефолту использует инструкции 8051. Я лишь в настройках проекта указывал, что МК AT89C51.
Надо что-то еще прописать?

П.С. Пардон за тупость, асм в моей жизни был оч. давно. Что знал - забыл, а чего не знал... Мой преподаватель Юров сгорел бы от стыда, увидев, какие вопросы его бывший студент задает =(
devel2011 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка. Берём hex-код, шифруем hex-код, собираем всё в файл. Poltish Общие вопросы Delphi 2 21.08.2013 12:57
file->HEX HEX->BIN kakawkin Общие вопросы Delphi 1 25.04.2012 01:02
По HEX kompaky Общие вопросы по программированию, компьютерный форум 2 30.07.2011 19:12
Помогите с hex в с++ pavelstraut Помощь студентам 1 17.07.2009 23:29
C# и HEX megazz13 Помощь студентам 2 03.04.2009 00:32