Режимы адресации


КОМАНДЫ

ОПРЕДЕЛЕНИЕ СЛОВА

ДИРЕКТИВЫ ОПРЕДЕЛЕНИЯ ДАННЫХ

 

[ Имя ] 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 – это НО, который выбирается из поля команды, и запись результата в поле команды произвести невозможно, и первый операнд во всех командах не может быть НО.

 

 

 

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

Способ определения адреса перехода или адреса операнда называется режимом адресации.