Принцип программного управления. Выполнение команд в микро – ЭВМ. Структура ЭВМ, страница 13

 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