47. Оператор в языке Ассемблера.
Программа написанная на Ассемблере состоит из последовательности предложений или операторов. Оператор в языке Ассемблер содержит 4 поля:
1. Метки;
2. Операции;
3. Операндов;
4. Комментарий.
Из этих полей необходимо лишь поле операции. Остальные могут отсутствовать.
метка операция операнды комментарии
LOOP: MOV R1, R2, пересылка.
Поле метки предназначено для записи символического имени данного оператора. Символическое имя требуется когда на оператор есть ссылка к программе хотя бы в каком–небудь другом операторе. Обычно в качестве символического имени применяют алфавитноцифровую последовательность начинающуюся с буквы максимальная длина которой меньше 8.
Поле операций содержит мнемоническую буквенную запись операции выполняемой оператором .
Поле операндов отведено для одного или нескольких операндов. Если их несколько, то обычно отделяются запятыми. В качестве операндов могут быть числа, символические имена , выражения. Причем в выражениях используются арифметические операции. Например команда операнд
JMP LOOP+DATA/2.
После комментариев служит для помещения туда текста не влияющего на выполнение оператора и служащего для пояснений этого оператора.
Поля отделяются друг от друга по крайней мере одним пробелом. В Ассемблере выделяют следующие группы операторов:
1. Операторы машинных команд.
2. Операторы псевдокоманд.
3. Макрокоманды.
4. Директивы.
48.Основные директивы языка Ассемблера:
Директивы – это команды управления Ассемблером. Они могут управлять режимом и формой выдачи листинга программы, обеспечивать выводы результатов трансляции, выбирать внешнее устройство для ввода исходной программы. Директивы не порождают команд в машинном коде. Segment
Формат:
имя директива операнд (параметры)
CODE SEGMENT PARA
STACK
COMMON
PUBLIC
CODE ENDS.
Директивы segment и ends должны иметь одинаковые имена. Если стоит параметр para, то происходит выравнивание, т.е. сегмент устанавливается на границе параграфа. Если параметр common и public, то выполняется объединение, т.е. данный сегмент может объединяться с другими сегментами в процессе компоновки после Ассемблирования. Stack используется для группировки отдельных сегментов при компоновке.
Prog
Формат:
Имя директива операнд
BEGIN PROG FAR
NEAR
RET
BEGIN ENDP.
Директива PROG описывает процедуру, которая исполняется в сегменте входов. Имя процедуры должно обязательно присутствовать и быть одинаковым для PROG и ENDP. Операнд FAR указывает загрузчику DOS, что начало данной процедуры является точкой входа для выполнения программы. Команда RET завершает выполнение программы и возвращает управление DOS. Сегмент может содержать несколько процедур.
ASSUME
Формат:
Имя директива операнд
ASSUME SS: имя стека, DS: имя сегмента данных,
CS: имя сегмента кодов.
Директива определяет назначение сегмента. Операнды могут записываться в любой последовательности. Если программа не использует какой –либо регистр, то его можно пропустить или написать ES: NOTHING.
END
Формат:
Имя директива операнд
END имя или процедура
END BTGIN
Директива END завершает программу.
49. Инициализация программы.
Требования DOS для инициализации программы:
1. Указать Ассемблеру какие сегментные регистры должны соответствовать сегментам.
2. Сохранить в стек адрес находящегося в регистре сегмента данных.
3. Записать в стек нулевой адрес.
4. Записать в регистр сегмента данных адрес сегмента данных.
STACK SEGMENT PARA ‘STACK’
STACK ENDS
DATA SEGMENT PARA ‘DATA’
DATA ENDS
CODE SEGMENT PARA ‘CODE’
BEGIN PROG FAR
ASSUME SS: STACK,DS: DATA,CS: CODE.
PUSH DS
SUB AX, AX
PUSH AX
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.