18. Адресация.
В памяти можно различать байты, слова, двойные слова и т.д. Слово – 2 рядом расположенных байта. Младший байт хранится по младшему адресу. Адресом слова является его младший байт.
Адреса объектов тоже можно различать в памяти виде 4 – байтных элементов – сегмент смещения. Причем слово с меньшим адресом – смещение, а с большим – сегмент.
Методы адресации: - адресация данных; - адресация переходов;
Методы адресации данных:
1.Непосредственная, при которой операнд длинной байт или слово является частью команды. Операнд помещается в посл. байты команды причем младший байт располагается по меньшему адресу --- mov ax,1234h
2.Прямая адресация, при которой смещение данного размером 16 бит явл. частью команды: mov ax,my_label
3.Регистровая адресация – операнд нах-ся в одном из регистров общего назначения или в одном из сегментных регистров, имя регистра определяется в самой команде ---- mov ax,bx
4.Косвенная регистровая адресация, при которой смещение данного размером 16 бит нах-ся в одном из регистров bx, si, di, bp: mov ax,[bx]; mov ax,cs:[bx] – используется префикс замены. Префикс замены не может исп-ся с IP и SP
5.Относительная косвенная регистровая адресация. Смещение данного размером 16 бит вычисл. как сумма смещения в команде размером 8 или 16 бит и знач. в одном из регистров. --- mov ax,[bx+10] – смещение данного в сегменте ds опр-ся суммой знач, кот. хр-ся в регистре bx и числа 10. mov ax,[bx]+10; mov ax,10[bx]
6.Базовая индексная адресация - смещение данного размером 16 бит опр-ся суммой знач. базового рег-ра (bx,bp), индексного рег-ра (si,di) и смещением в команде. --- mov ax, ax,my_array[bx][si]
7.Неявная адресация – адреса объектов задаются неявно кодом операций.
Методы адресации переходов:
1.Внутрисегментный прямой переход, где смещение очередной ком-ды в сегменте кода. Опр-ся суммированием в регистре ip значения со знач. смещения в 8 или 16 бит заданным в команде --- jmp my_label
2.Внутрисегментный косвенный переход - содержимое регистра ip заменяется 16 битовым значением заданного регистра или адресации данных кроме непосредственных. --- jmp [bx]Межсегментный прямой переход – сод-мое регистра в ip и cs зам-ся 2 словами расп-ся непосредственно в команде ---- jmp far ptr far label
3.Межсегментный косвенный переход – при этом сод-мое регистров ip,cs зам-ся 2 словами последовательно расп. в памяти (ip по младшему алресу). --- jmp dword ptr[bx]