Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ ЛЕКЦИЙ ПО АССЕМБЛЕРУ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
471.55 Кб
Скачать

Структура машинного оператора

{ Метка: } { Префикс } Мнемоника { Операнды } { ;Комментарии }

Элементы, заключенные в круглые скобки могут отсутствовать.

МЕТКА в процессе трансляции принимает значение адреса соответствующей команды. Метки как операнды присутствуют в операторах управления.

ПРЕФИКС – его наличие позволяет сформировать один из префиксных байт: блокировки LOCK или повторения REP.

МНЕМОНИКА – символические обозначения команд процессора. Например: ADD, SUB и т. д.

ОПЕРАНДЫ: MOV AX,data[SI] – два операнда

DEC AX – один операнд

XLAT – нет операндов

Комментарии – произвольный текст, который следует за точкой с запятой.

Директивы ассемблера

Директивы ассемблера и операторы определения данных имеют несколько иной формат, чем машинные операторы.

{ символическое имя } Директива { Операнды } { ;Комментарии }

СИМВОЛИЧЕСКОЕ ИМЯ – по своему смыслу близко к метке, т. е. задаёт имя директиве, например заголовок процедуры. Однако после трансляции символические имена, как и сами директивы в программе отсутствуют.

ДИРЕКТИВА – определяет действие, также как и мнемоника. Однако это действие выполняет ассемблер при трансляции программы.

Идентификаторы включают буквы, цифры и специальные символы: ? @ _ $; начинаются с буквы или с специального символа. Идентификаторы – это метки, имена в директивах ассемблера и имена переменных в операторах распределения данных (а также имена операндов в командных операторах).

Регистры – имеют стандартные имена. Регистрам приписаны стандартные типы:

тип BYTE – AL,AH,BL,BH,CL,CH,DL,DH;

тип WORD – AX,BX,CX,DX,BP,SP,SI,DI,CS,DS,SS,ES.

Директивы определения данных

[ Имя ] Dn выражение

A DB ? ; переменная A размером один байт не инициализирована;

B DB 10 DUP(?) ;переменная B - поле из 10 неинициализированных байтов;

┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐

Поле B │ * │ * │ * │ * │ * │ * │ * │ * │ * │ * │

└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘

C DB 10 DUP(0) ;переменная C – поле из 10 нулевых байтов;

┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐

Поле C │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │

└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘

D DB 'Группа ВТИ' ;символьная строка.

Символьные строки задаются только директивой DB.

┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐

Поле D │ Г │ р │ у │ п │ п │ а │ │ В │ Т │ И │

└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘

E DB -85 ;короткое целое со знаком.

Десятичная константа может задавать числа со знаком в диапазоне от -128 до 127. Например,

E DB -180

Число -180 может быть представлено только в слове FF4Ch. При этом старший байт отбрасывается. 4Ch = 76 в десятичной.

Если число больше 255, то выдается ошибка "Value out of range".

F DB 10b ;эквивалентно: F DB 2

1 DB -10b ;эквивалентно: F1 DB -2

Для двоичных чисел диапазон от 0b до 11111111b.

L DB 5Fh ;шестнадцатеричная константа;

L1 DB -5Fh

Диапазон шестнадцатеричных чисел от 0h до FFh.

Директива DB определяет и константы и начальные значения переменных. Константы не защищены от изменения значений, и в процессе работы могут быть использованы как переменные.

Типы ассемблера – BYTE и WORD. Здесь отсутствует разделение между BYTE и SHORTINT, WORD и INTEGER. и поэтому может возникнуть ряд проблем:

A2 DB 200; C8h

Если рассматривать это число как число без знака, то оно соответствует 200, а если учитывать знак, то -56

A3 DB 0F1h; F1h

A4 DB 011011b; 1Bh

A5 DB -011011b; E5h

A6 DB -200; 38h=56dec – поле определено неверно

A7 DB 300; -Out of Range (300>255)