Операнды, которые используются в операторах ассемблера, могут быть регистром (г), адресом памяти (mem), непосредственным значением, задаваемым прямо в операторе (imm), сегментным регистром (sr). В связи с этим существуют различные форматы одних и тех же команд:
· первый операнд - регистр, второй - адрес памяти. Результат помещается в регистр, указанный в операторе, например:
· первый операнд - адрес памяти, второй - регистр. Результат помещается по тому адресу, который используется в качество первого операнда.
· первый операнд - адрес памяти, второй - регистр. Результат помещается по тому адресу, который используется в качество первого операнда.
Способы адресации операндов. В программах на Assembler применяются следующие типы адресации операндов:
· регистровая;
· прямая;
· непосредственная;
· косвенная;
· базовая;
· индексная;
· базово-индексная.
Регистровая адресация подразумевает использование в качестве операнда регистра процессора, например: push DS mov BP,SP
При прямой адресации один операнд представляет собой адрес памяти, второй - регистр: mov DATA, АХ
Непосредственная адресация применяется, когда операнд длиной в байт или слово находится в ассемблерной команде: mov AX,4Ch
При использовании косвенной адресации исполнительный адрес формируется исходя из сегментного адреса в одном из сегментных регистров и смещения в регистрах ВХ, ВР,SI или DI, например: mov АL, [ВХ], mov АН, [SI].
В случае применения базовой адресации исполнительный адрес являетсй суммой значения смещения и содержимого регистра ВР или ВХ, например:
mov АХ, [ВР + 6]
mov [ВХ + Delta], АХ
При индексной адресации исполнительный адрес определяется как сумма значений указанного смещения и содержимого регистра SI или DI так же, как и при базовой адресации, например:
mov DX, [SI+5]
mov ES: [DI]+6, AL
Базово-индексная адресация подразумевает использование для вычисления исполнительного адреса суммы содержимого базового и индексного регистров, а также смещения, находящегося в операторе, например:
mov ВХ, [BP][SI]
mov ES:[BX+DI],AX