Разное по IT
  • Регистрация
1 1 1 1 1 1 1 1 1 1 Рейтинг 5.00 (1 Голос)

Руководство программиста по компилятору Alexander Assembler процессора КР580ВМ80

Содержание:

Общие вопросы написания и отладки программ для микропроцессора КР580ВМ80

Классический подход

Разработка программ с использованием компилятора и отладчика

Общие сведения о компиляторе AASM

Работа с компилятором

Запуск компилятора

Форматы файлов, создаваемых компилятором

Файл отчета компилятора

Файл отчета сканера

Возможности компилятора

Числа

Идентификаторы

Метки

Директивы компилятора

Сообщения об ошибках:

Общие вопросы написания и отладки программ для микропроцессора КР580ВМ80

Классический подход

Цикл разработки программы на ассемблере состоит из нескольких этапов:

¨  Первый - логический или концептуальный. На этом этапе нужно получить четкое представление о решаемой задаче, определить необходимые средства для ее решения, составить алгоритм будущей программы. Приступать к написанию программы не имея перед собой алгоритма решения нецелесообразно, особенно это относится к программированию на ассемблере, т. к. даже человек имеющий хорошее представление о предмете задачи и языке ассемблера не сможет учесть все мелочи и тонкости присущие программированию на этом языке(за исключением тривиальных задач).

¨  Второй - физический. На нем алгоритм, разработанный на первом этапе воплощается на языке конкретного ассемблера. Если алгоритм составлен достаточно подробно, то этот этап может быть несложен. После написания текста программы производится перевод мнемоник ассемблера в машинные коды по таблицам.

¨  Третий - отладочный. На нем машинные коды, полученные на втором этапе вводятся в память микропроцессорного устройства - отладчика( или монитора) и производится тестирование программы на правильность функционирования и отсутствие ошибок при выполнении.

В случае обнаружения ошибки на любом этапе приходится возвращаться на один или несколько этапов назад и начинать все сначала. Как можно убедиться, этот процесс является довольно сложным. Второй и третий этап усложняются тем, что приходится делать много монотонной работы и чтобы не сделать ‘ механической ’ ошибки приходится проявлять собранность и ангельское терпение.

Разработчики программного обеспечения для процессора КР580ВМ80 испытывали бы немалые трудности при написании и отладке серьезных программ и хлеб программиста был бы очень нелегким, если бы не существовали средства, позволяющие сильно облегчить этот процесс. К ним относятся компиляторы и отладчики.
Разработка программ с использованием компилятора и отладчика.

Компилятор - это программа, которая проверяет текст Вашей программы на наличие ошибок и, если их нет, производит перевод текста в машинные коды. Т. о. Вы лишаетесь удовольствия самим копаться в таблицах и высчитывать адреса для переходов вручную. Применение компилятора снимает с программиста весь этот монотонный труд и позволяет сконцентрироваться на сути задачи, не отвлекаясь на мелочи.

Отладчик - это программа, которая эмулирует на более мощной ЭВМ ту, для которой вы пишете программу, она позволяет выполнять программу по шагам и после каждого шага отображать состояние операционных регистров, памяти, портов ввода-вывода и т. д. Таким образом отпадает необходимость во вводе машинных кодов в реальное микропроцессорное устройство и осуществлять отладку на нем(это трудоемкий процесс, и кроме того, аппаратные отладчики имеют скудные средства для отображения и ввода информации, в то время как у персональных ЭВМ есть мониторы и клавиатуры).

При выявлении ошибки в программе исправляется текст программы, запускается компилятор, получаются машинные коды, запускается отладчик и производится повторная отладка.

Для получения информации об отладчике см -------------------------------.
Общие сведения о компиляторе AASM

AASM относится к компиляторам командной строки, т. е. все необходимые параметры для его работы указываются в командной строке при запуске. Внутренне компилятор состоит из двух независимых частей - сканера и схемы синтаксического разбора. Сканер производит проверку правильности записи идентификаторов, чисел и т. д. Кроме того, он перекодирует Вашу текстовую программу во внутренний числовой формат. Его работу можно сравнить с проверкой правильности орфографии в русском языке. Его задача - просто проверить, правильно ли написаны отдельные ‘ слова’, не вникая во все остальное. По той же аналогии - схема разбора проверяет правильность написания отдельных предложений(допустимость операндов у команды, диапазон указанных чисел и т. д.) Проверить правильность написания текста невозможно в принципе, для этого и нужен программист.
Работа с компилятором

Цикл работы с компилятором производится следующим образом: в любом текстовом редакторе под DOS пишется программа на языке ассемблера в текстовом виде. После этого производится запуск компилятора с параметром - именем вашего файла. Компилятор анализирует текст программы и в случае обнаружения ошибки выводит сообщение о ней, после чего его работа прекращается. Иначе(если ошибок нет) компилятор создает файл с расширением.mc, содержащий машинные коды. В случае ошибки она исправляется, компилятор запускается снова. Компилятор также может создавать вспомогательные файлы - файл отчета сканера (.scn) и файл отчета компиляции(.log), для этого нужно указать дополнительные параметры в командной стороке.
Запуск компилятора

1.  AASM.EXE /? - выдача короткой справочной информации о запуске компилятора.

2.  AASM.EXE - запуск без параметров выводит на экран текущие установки компилятора.

3.  AASM. EXE <file_name> {/l(-,+) /s(-,+) /c(-,+) /r(-,+) /t(-,+) /v<num> /w<num>}

<file_name> - имя файла, содержащего вашу программу. Обязательный параметр. Все остальные параметры необязательны.

/l+ разрешение файла отчета компиляции.

/l- запрещение файла отчета. По умолчанию файл не создается.

/s+ добавляет символьную информацию в файл машинных кодов. Если такая информация есть, у отладчика появляются некоторые дополнительные( и весьма приятные) возможности. В версии 1.01 эта возможность не реализована.

/c+ разрешение генерации файла сканера - файла машинных кодов. По умолчанию файл создается. Если его не создавать, будет произведена проверка на правильность синтаксиса.

/r+ разрешение сохранения временного файла с перекодированной программой сканером. С введением этого ключа появилась возможность просто проверить правильность написания операндов программы без создания каких - либо файлов. По умолчанию файл создается. Если его не создать, не сможет работать схема синтаксического разбора.

/t+ - разрешение генерации файла отчета сканера. Там записано. Что и как он опознал.

/v<num> - задает размер таблицы идентификаторов. Этот параметр следует менять только в том случае, когда в программе используется больше 50 (значение по умолчанию) имен. В этом случае компилятор выдаст сообщение об этом и прекратит работу.

/w<num>- задает размер таблицы чисел. Этот параметр следует менять только в том случае, когда в программе используется больше 100 (значение по умолчанию) цифер. В этом случае компилятор выдаст сообщение об этом и прекратит работу, когда дойдет до сто первого числа.

Примеры запуска:

C:>AASM laba2.asm

C:>AASM laba2.asm /l+

C:>AASM laba1.asm /l+ /t+

C:>AASM laba1.asm /l+ /v55 /w120
Форматы файлов, создаваемых компилятором
Файл отчета компилятора *.log

Текстовый файл, состоит из трех колонок:

<АДРЕС><МАШИННЫЕ КОДЫ><МНЕМОНИКА АССЕМБЛЕРА>

Например:

1F4½CA E2 O4 ½ Jz 04E2
Файл отчета сканера *.scn

Текстовый файл, состоит из строки мнемоники ассемблера и из пояснений, как ее понял сканер. И так для всех строк программы.

Например:

Jz 04E2

Jz - Operator

04E2 - HexNumber

Из чего видно, что сканер распознал Jz как оператор ассемблера, а 04Е2 - шестнадцатеричное число.
Возможности компилятора
Числа

Компилятор поддерживает числа в двух форматах - десятичном и шестнадцатеричном. По умолчанию число считается десятичным. Если необходимо указать на шестнадцатеричное счисление, то после числа ставят латинскую букву h. Этого можно не делать, если в числе используются символы A, B,C, D,E, F. Но число не может с них начинаться, оно обязательно должно начинаться с цифры.

Примеры:

10 - десятичное

10h - шестнадцатеричное

0А - шестнадцатеричное

0Аh - шестнадцатеричное
Идентификаторы

В идентификаторах можно использовать маленькие и большие латинские буквы и символ ‘_’. Длина имени - до 20 символов. Регистр букв не учитывается. Идентификаторы описываются по директие EQU. Их смысл - они являются синонимами чисел, их использование в программе повышает ее читабельность. Идентификаторы можно определять и использовать в любом месте программы.

Примеры:

My_first_name

Label1:
Метки

Метки - это идентификаторы после которых стоит двоеточие. Смысл меток - они скрывают за собой реальный адрес того места, где они были определены. Их можно использовать в командах переходов и вызова процедур. Метки можно использовать и до их определения(ссылки вперед) и после(ссылки назад).

Пример:

Label2: jmp Label2 - лучший способ ‘ повесить’ компьютер

Procedura: ; объявление процедуры

mvi a, 5 ;

.

.

ret ; выход из процедуры

call Procedura; ; вызов процедуры
Директивы компилятора

Директивы - это команды для компилятора. Всего их 5:

·  EQU - определение идентификатора. Формат директивы:

EQU <имя> значение

Здесь имя - это имя идентификатора, а значение - его численное значение. Примеры:

EQU Вeta 5 ; Beta:=5

EQU In_Port 12h ;

·  DB - директива определения байта(или байтов).

Формат директивы: DB byte{,byte}

Встретив ее, компилятор просто перемещает все следующие за ней байты в машинный код. Нужна для определения констант и массивов в памяти.

В одной строке можно определить до 20 байтов. Если нужно определить

больше, надо перейти на новую строку, написать DB и продолжить.

·  DW - директива определения слова(или слов).

Формат директивы: DB word{,word}

Слово - это число размером в два байта. Встретив ее, компилятор просто перемещает все следующие за ней слова в машинный код в следующем порядке: сначала младший байт, потом старший. В одной строке можно определить до 20 слов. Нужна для определения констант и массивов в памяти.

Примеры:

db 5

dw 65000

Array: db 5,6,7,8,9,15 ;определение массива с именем Array из 6

;элементов

·  ORG - директива указания начального адреса. Встретив ее компилятор следующую инструкцию размемтит по указанному адресу

Формат директивы: ORG addr.

Пример: ORG 100h

·  $ - директива указания смещения. Используется в операторах перехода. Формат директивы: $(+,-) <смещение>.

Смысл - адрес, отстоящий от текущего на + или - <смещение>. <смещение> - это число. Примеры:

JMP $+10h

JC $-128
Сообщения об ошибках:

 

Error in identifier or label

Ошибка в записи идентификатора или метки.

Error in number

Ошибка в записи числа.

Unrecognized symbol

Недопустимый символ.(Не буква и не. , ;)

Too many operands in line

Слишком много операндов в строке.

After <оператор> immediate byte needed

После оператора необходимо указать число размером в байт. Здесь <оператор> это ACI, ADI, SUI, SBI, ANI, XRI, ORI, CPI, IN, OUT.

After <оператор> RON needed

После оператора необходимо указать регистр общего назначения. Здесь <оператор> это ADD, ADC, DCR, ANA, SUB, SBB, XRA, CMP, INR, ORA

After <оператор> double RON needed

После оператора необходимо указать пару регистров общего назначения.(двойной регистр) Здесь <оператор> это DCX, DAD,INX

After <оператор> double RON or PSW needed

после оператора необходимо указать пару регистров общего назначения.(двойной регистр) или PSW Здесь <оператор> это POP, PUSH

Wrong immediate after RST (will be <7)

Ошибочное число в операторе RST(оно должно быть меньше 7).

After Rst number expected

После RST необходимо указать число

In MOV RON expected

Вкомманде MOV ожидался регистр общего назначения.

MOV m, m no opcode!

Нет такой команды.

Coma expected

Ожидалась запятая.

Immediate address or Identifier expected

Ожидалось непосредственное указание адреса или идентификатора

In LDAX B and D may be only

В команде LDAX могут указываться только парные регистры B и D

In MVI first ops RON expected

В команде MVI первый операнд должен быть регистром общего назначения.

In MVI second ops immediate expected

В команде MVI операнд должен быть непосредственно указанным числом.

In LXI first ops double RON expected

В команде LXI первый операнд должен быть двойным регистром общего назначения.

No number after ORG

После ORG не указано число.

After $ plus or minus expected

После $ ожидался плюс или минус.

After $ (+,) Number expected

После $ ,плюса или минуса ожидалось число(смещение)

In DW Number expected

В DW ожидалось число

In DW Coma expected

В DW ожидалась запятая

Too many numbers in DW

В DW указано слишком много чисел

In DB Number expected

В DВ ожидалось число

In DB Coma expected

В DB ожидалась запятая

Too many numbers in DB

В DB указано слишком много чисел

After EQU identifier expected

После EQU ожидался идентификатор

In EQU after identifier number needed

В EQU после идентификатора ожидалось число

Offset in $(+,-) too larche

Смещение, указанное в $(+,) слишком велико

Constant in <оператор> greater than $FF

Константа в операторе больше чем FFh. Здесь <оператор> это DB, ADI, ACI, SUI, SBI, ANI, XRI, ORI, CPI, MVI

Constant in <оператор> greater than $FFFF

Константа в операторе больше чем FFFFh. Здесь <оператор> это LXI, LHLD, LDA, SHLD, STA, CALL, CC, CM, CNC, CNZ, CP, CPE, CPO, CZ, IN, JC, JM, JMP, JNC, JNZ, JP, JPE, JPO, JZ, OUT

Label not defined

Метка не определена

Operator, label or directive expected

Ожидался оператор, метка или директива

No more place in table of Label and Identifyer

Не хватает места таблице меток и идентификаторов

No more place in table of Numbers

Не хватает места таблице чисел

Fatal error: Scaner can''t open input file

Неустранимая ошибка. Сканер не может открыть входной файл

Fatal error: Scaner can''t create output file

Неустранимая ошибка. Сканер не может создать выходной файл

Fatal error: Compiler can''t open scaner output file (.tmp)

Неустранимая ошибка. Компилятор не может открыть временный файл сканера

Fatal error: Compiler can''t create output file

Неустранимая ошибка. Компилятор не может создать выходной файл

Fatal error: Constant N х greater than FFFFh

Константа номер х больше чем FFFFh

Руководство программиста по компилятору alexander assembler процессора кр580вм80 - 5.0 out of 5 based on 1 vote

Добавить комментарий


Защитный код
Обновить

По темам:

История Украины

Культурология

Высшая математика

Информатика

Охотоведение

Статистика

География

Военная наука

Английский язык

Генетика

Разное

Технологиеские темы

Украинский язык

Филология

Философия

Химия

Экология

Социология

Физическое воспитание

Растениевосдство

Педагогика

История

Психология

Религиоведение

Плодоводство

Экономические темы

Бухгалтерские темы

Маркетинг

Иностранные языки

Ветеринарная медицина

Технические темы

Землеустройство

Медицинские темы

Творчество

Лесное и парковое хозяйство