ustify"> Існують різні способи адресації операндів, такі як:
. реєстрова
. безпосередня
. пряма
. побічно-реєстрова
. по базі зі зміщенням
. пряма з індексуванням
. по базі з індексуванням
. непряма адресація з масштабуванням
. базово-індексна з масштабуванням
. базово-індексна з масштабуванням і зміщенням.
адресації з 8 по 10 використовуються тільки в захищеному режимі.
Машинний формат двохадресна команди, для якої один операнд знаходиться завжди в регістрі, а другий - в регістрі або пам'яті можна представити таким чином:
disp H / disp L - старша / молодша частина зсуву.
Поля код операції і іноді reg визначають виконувану операцію.
Поле d визначає місце зберігання першого операнда.
Поле w визначає з якими даними працює команда: з байтами, або словами. Якщо w=0, команда працює з байтами, якщо w=1 - зі словами. - Визначає один операнд, бережене в регістрі.
Поля mod, disp H і disp L визначають другий операнд, який може зберігатися в регістрі або в пам'яті.
Якщо mod=11, то другий операнд знаходиться в регістрі, він визначається полем r / m, а disp H / disp - відсутня, команда буде займати 2 байта в пам'яті, якщо mod? 11, то другий операнд знаходиться в пам'яті, а значення поля mod визначає, як використовується зміщення:
reg і r/m000001010011100101110111w=0ALCLDLBLAHCHDHBHw=1AXCXDXBXSPBPSIDI
Фізична адреса визначається так:
r/mІАФА000 (BX) + (SI) + disp + (DS) 001 (BX) + (DI) + disp + (DS) 010 (BP) + (SI) + disp + ( SS) 011 (BP) + (DI) + disp + (SS) 100 (SI) + disp + (DS) 101 (DI) + disp + (DS) 110 (BP) + disp + (SS) 111 (BX) + disp + (DS)
7. Приклади команд пересилання з різними способами адресації операндів
У командах на асемблері результат завжди пересилається за адресою першого операнда.
) Регістрова адресація - операнд знаходиться в регістрі:
MOV AX, BX; (BX) ® AX, вміст регістра BX пересилається в регістр AX.
Машинний формат: 1001 0011 1100 0011
код операції=100100, d=1, w=1, mod=11, reg=000, r / m=011.
2) Безпосередня адресація - операнд знаходиться безпосередньо в команді:
AX, 25; 25 ® AX
CONST EQU 34h; іменована константа CONST
MOV AX, CONST; 34h ® AX
3) Пряма адресація - у команді міститься адреса операнда. Якщо відома адреса пам'яті, починаючи з якого розміщується операнд, то в команді можна безпосередньо вказати цю адресу:
AX, ES: 0001; ((ES) + 0001) ® AX.
- регістр сегмента даних, 0001 - зміщення всередині сегменту. Вміст двох байтів, починаючи з адреси (ES) + 0001 пересилаються в AX. Пряма адресація може бути записана за допомогою символічного імені, яке попередньо поставлено у відповідність деякою ад...