1) Непосредственный. Данное длинной 8 или 16 бит является частью команды. Например: выражение-константа: 12; 1010В; 08АH; ‘AB’; XX-YY-5.
mov ah,12;переслать в регистр ah значение 12
add ax,08AH;прибавить к содержимому регистра ax значение 08AH
2) Прямой. 16-битный эффективный адрес данного является частью команды. Например: переменная ± выражение- константа: CNT; CNT +5; ARRAY -5. Это означает, что соответствующие метки (переменные) определены предварительно в сегменте данных.
mov ah,cnt;переслать в регистр ah значение по адресу cnt
;относительно начала сегмента данных
add ax,cnt+5;прибавить к содержимому регистра ax значение по
;адресу, вычисляемому как сумма адреса cnt и 5
3) Регистровый. Данное содержится в определяемом командой регистре (Аx,bx,cx,dx,si,di,sp,bp).
Например: регистр: AX; BH; DL.
mov ah,al;переслать в регистр ah значение из регистра al
add ax,dx;прибавить к содержимому регистра ax значение из
;регистра dx
4) Регистровый косвенный. Эффективный адрес данного находится в базовом регистре BX или индексном регистре SI,DI:
.
Например: [регистр]: [BX].
mov ah,[bx];переслать в регистр ah значение по адресу, который
; находится в регистре bx
Таким образом, если в регистре bx находится значение 6, то в регистр ah пересылается информация, находящаяся по смещению 0006h относительно начала сегмента данных.
5) Регистровый относительный. Эффективный адрес равен сумме 8 или 16 битного смещения и содержимого базового или индексного регистров:
.
Например: переменная + [регистр±выражение константа]: CST[BX]; MES[SI+10H]; [BX-1].
mov ah,cst[si];переслать в регистр ah значение по адресу, который
;определяется как сумма смещения метки cst
;относительно начала сегмента данных и регистра si
При этом метка cst должна быть предварительно описана в сегменте данных. Если cst имеет смещение 0002h относительно начала сегмента данных, а в si записано значение 7h, то эффективный адрес данного относительно начала сегмента данных составит 0009h (0002h+7h).
6) Базовый индексный. Эффективный адрес равен сумме содержимого базового и индексного регистров, определяемых командой:
.
Например: [базовый регистр][индексный регистр]: [BX][DI].
mov ah,[bx][di];переслать в регистр ah значение по адресу,
;равному сумме содержимого регистров bx и di
Если в регистре bx записано значение 5h, а в регистре di – значение 3h, то в регистр ah пересылается информация по смещению 8h (5h+3h) относительно начала сегмента данных.
7) Относительный базовый индексный. Эффективный адрес равен сумме 8 или 16 битного смещения и базово - индексного адреса:
.
Например: переменная + [базовый регистр±выражение константа] [индексный регистр±выражение константа]: E[BX+5][SI-2]; DATA[BX][SI]; [BX+2][SI].
mov ah,data[bx][si];переслать в регистр ah значение по адресу,
;равному сумме смещения метки data
;относительно начала сегмента, содержимого
;регистра bx и содержимого регистра si
Если метка data имеет смещение 0002h, в регистре bx записано значение 8h, а в регистре si – значение 5h, то в регистр ah передается значение, находящееся по смещению 0015h относительно начала сегмента данных.