Регистровая адресация имеет место, если в команде указывается имя регистра, при этом учитывается размер операнда:
- если в команде указан, например, AL, то операнд хранится в регистре AL и его размер равен одному байту. То же для всех однобайтных регистров.
- Если в команде, например, BX, то операнд хранится в BX и имеет размер слова (два байта). То же для всех двухбайтных регистров.
Для хранения операндов и результатов могут использоваться РОН, индексные регистры и регистры-указатели.
Пример:
MOV AX, BX ; AX:=BX
ADD CX, AX ; CX:=AX
PUSH CX ; Затолкнуть в стек содержимое CX
Непосредственная адресация.
Операнд (8- или 16-разрядная константа) содержится непосредственно в теле команды, т.е. непосредственная адресация имеет место, если операнд указывается в команде численным значением (константа), в любой допустимой системе счисления (2,10,16). Т.к. результат по умолчанию сохраняется в первом операнде, нельзя адресовать непосредственно операнд, размещённый первым (т.е. нельзя MOV 15, AX).
Пример:
MOV AX, 100 ; AX:=100
ADD AX, 5 ; AX:=AX+5
MOV CX, 0FFFFH ; CX:=65535
Прямая адресация.
Прямая адресация имеет место, если операнд указывается именем, определённым в одном из сегментов.
Например:
MOV AX, X ; AX:=X ( Слово! )
ADD AH, B ; AH:=AH+B ( Байт! )
; где X и B ранее описаны