Способы адресации данных

1. Непосредственная адресация. При непосредственной адресации операнд (байт или слово) размещается непосредственно в коде команды.

ADD AX,#220К содержимому регистра AX прибавляется 220 и результат сохраняется в AX
PUSH #1232hВ стек помещается число 1232h

2. Прямая регистровая адресация. Прямая регистровая адресация используется в тех случаях, когда операнд или результат размещается в RRAM и его адрес находится в пределах от 0000H до 00FFH. В этом случае для представления адреса может быть использован один байт в коде команды.

ADD AX,BX,CXСкладываются значения в регистрах BX и CX, результат сохраняется в регистре AX
INCB CLСодержимое счетчика CL увеличивается на 1

Остальные способы адресации используются при обращении к ячейкам памяти и регистрам RRAM, когда для указания адреса операнда требуется использовать два байта (адрес в формате "слово").

3. Косвенная адресация. При косвенной адресации адрес операнда, имеющий формат "слово", записывается в пару регистров в RRAM в область с адресами от 1AH до FFH, а адрес адреса операнда, имеющий формат "байт", входит в состав кода команды.

LD AX,[AX]В регистр AX пересылается значение из ячейки памяти с адресом, на который ссылается AX {AX MEM_WORD (AX)}
POP [AX]Из стека пересылается значение из ячейки памяти с адресом, на который ссылается AX;
{AX <- MEM_WORD MEM_WORD (AX) <- MEM_WORD (SP)};
SP <- SP+2

4. Косвенная адресация с автоинкрементом. При косвенной адресации с автоинкрементом после выполнения операции с данными адрес операнда увеличивается на 1, если операнд имеет формат "байт", или на 2, если операнд имеет формат "слово".

LD AX,[BX]+В регистр AX пересылается значение из ячейки памяти с адреcом, на который ссылается BX {BX <- MEM_WORD (BX)} и адрес увеличивается на два { BX <- BX+2}
PUSH [AX]+Из стека пересылается значение из ячейки памяти с адресом, на который ссылается AX;
{AX <- MEM_WORD MEM_WORD (AX) <- MEM_WORD (SP)};
SP <- SP+2

5. Индексная короткая адресация. При индексной адресации для задания адреса операнда A используют базовый адрес B и смещение (Offset) W. Адрес операнда образуется путем сложения базового адреса и смещения: A=D+W, где W - целое число со знаком в дополнительном коде.

Базовый адрес B, имеющий формат "слово", записывается в пару регистров в RRAM в область с адресами от 1AH до FFH, а адрес базового адреса, имеющего формат "байт", входит в состав кода команды. Смещение может быть представлено в форматах "байт" или "слово".

Если смещение имеет формат "байт" (-128<=W<=+127), индексная адресация является короткой.

LD AX,12[BX]В регистр AX пересылается значение из ячейки памяти с адресом, который определяется как сумма (BX+12);
{AX <- MEM_WORD (BX+12)}
MULB AX,BL,3[CX]В регистр AX пересылается результат умножения содержимого регистра BL и содержимого ячейки памяти c адресом, который определяется как сумма (СX+3)
{AX <- BL * MEM_BYTE (CX+3)}

6. Индексная длинная адресация. Если смещение имеет формат "слово" (-32768<=W<=+32767), индексная адресация является длинной.

AND AX,BX,TABLE[CX]В регистр AX пересылается результат логического умножения содержимого регистра BX и содержимого ячейки памяти с адресом, который определяется как сумма слова из таблицы и значения в регистре CX;
{AX <- BX and MEM_WORD(TABLE+CX]}
ST AX, TABLE[BX]Содержимое регистра AX пересылается в ячейку памяти с адресом, который определяется как сумма слова из таблицы и значения в регистре BX;
{MEM_WORD (TABLE+BX) <- AX}

<<< Содержание >>>