Режимы адресации
КОМАНДЫ
ОПРЕДЕЛЕНИЕ СЛОВА
ДИРЕКТИВЫ ОПРЕДЕЛЕНИЯ ДАННЫХ
[ Имя ] 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)
Аналогично DB, DW позволяет использовать десятичные, двоичные и шестнадцатеричные цифры.
Диапазон: 1) -32768..32767 – слово со знаком
2) 0..65535 – слово без знака
А DW -358
B DW 0F46Eh
C DW 10b
D DW 'PC'
При задании строковых констант символы располагаются в обратном порядке:
┌───┬───┐
поле D │'C'│'P'│
└───┴───┘
E DW 70000 – Out of range (70000>65535)
Директивы DD (двойное слово) и DQ (поле из четырех слов) используются аналогично.
ADD ОР1,ОР2 ;Сложение чисел со знаком
ОР1:=ОР1+ОР2
ОР1 – общий регистр
– ячейка памяти
ОР2 – общий регистр
– ячейка памяти
– непосредственный операнд (НО)
ADD A,SI
A:=A+SI
A – mem
SI – reg16
ADD AX , BB
reg16/ \mem16
ADD AX , 5
reg16/ \НО – выбирается из поля самой команды
После выборки этой команды первый операнд – в AX, а второй – в регистре команд, т. е. при выполнении операции сложения цикл обращения к памяти не требуется. В этом есть достоинство использования НО.
ADD AL,BX; – Type mismatch
byte/ \word
ADD AL,BH
ADD 5,AL; – Error
5 – это НО, который выбирается из поля команды, и запись результата в поле команды произвести невозможно, и первый операнд во всех командах не может быть НО.
В командах обработки данных формируются адреса операндов, которые указывают местоположение данных в памяти. В командах управления определяются адреса команд, которым передается управление, т. е. адреса переходов.
Способ определения адреса перехода или адреса операнда называется режимом адресации.