A. Базовая (индексная) адресация. Используются регистры BP, BX, SI, DI.
Примеры:
mov [di],al ; в память
; засылается байт
mov ax,[di] ; из памяти
; загружается слово
mov [si],byte ptr 5 ; в память
; засылается байт 00000101
mov [bx],word ptr 5 ; в память
; засылается слово 00000000 00000101
mov [si],dword ptr 5 ; в память
; засылается двойное слово
; 00000000 00000000 00000000 00000101
in al,dx ; в аккумулятор (разряды 7..0)
; загружается байт из порта, который указан в DX
; обратите внимание на синтаксис (отсутствуют [])!
; в этой команде обращение не к памяти! Регистр
; DX не может содержать адрес памяти.
B. Базовая (индексная) адресация со смещением. Используются те же регистры BP, BX, SI, DI. Принято использовать базовые регистры слева, а индексные – справа от указанного в команде смещения.
Примеры:
mov [bp+10],al ; в память
; засылается байт
mov al,buffer[di] ; из памяти загружается байт
; из массива, номер байта указан в DI
C. Базовая индексная адресация. Используются те же регистры BP, BX, SI, DI..
Примеры:
mov [bx+si],al ; в память засылается байт
mov ax,[bx][di] ; из памяти загружается слово из массива,
; адресуемого BX, адрес слова указан в DI
D. Базовая индексная адресация со смещением. Используются те же регистры BP, BX, SI, DI..
Примеры:
mov [bx+si+1],al ; в память засылается байт
mov al,2[bp][di] ; из памяти загружается байт из массива,
; номер байта указан в DI, смещение 2
mov al,[bp+2][di] ; идентичная команда
mov al,[bp+di+2] ; идентичная команда
mov al,[bp]+2[di] ; идентичная команда
mov al,[bp][di]+2 ; идентичная команда