Иллюстрированный самоучитель по Assembler


HLT Останов - часть 3


Для команды imul с двумя операндами их произведение записывается в первый операнд; второй операнд не изменяется. В качестве первого операнда могут выступать 16- или 32-разрядные регистры общего назначения; в качестве второго операнда - 16- или 32-разрядные регистры общего назначения, 16- или 32-битовые ячейки памяти или непосредственное значение. Оба операнда должны иметь один размер. Если результат умножения помещается в первый операнд, флаги CF и OF сбрасываются в 0. В противном случае они устанавливаются в 1.

Для команды imul с тремя операндами произведение второго и третьего операндов записывается в первый операнд. В качестве первого операнда могут выступать 16- или 32-разрядные регистры общего назначения; в качестве второго операнда - 16- или 32-разрядные регистры общего назначения или 16- или 32-битовые ячейки памяти; в качестве третьего операнда - только непосредственное значение. Два первых операнда должны иметь один размер. Если результат умножения помещается в первый операнд, флаги CF и OF сбрасываются в 0. В противном случае они устанавливаются в 1.

Пример 1


mov EAX,-1 ;Первый сомножитель

mov ESI,100000000 ;Второй сомножитель

imul ESI ;EDX=FFFFFFFFh,

;EAX=FA0AlF00h

;Результат=-100000000


Пример 2


;В полях данных

ор2 dd 100h ;Первый сомножитель

; В программном сегменте

mov EAX,400000h ;Второй сомножитель

imul EAX,op2 ;EAX=40000000h

Пример 3

mov BX,300h

imul АХ,ВХ,4 ;AX=300h*4=0C00h

IN Ввод из порта


Команда in вводит в регистр AL или АХ соответственно байт или слово из порта, указываемого вторым операндом. Адрес порта помещается в регистр DX. Если адрес порта не превышает 255, он может быть указан непосредственным значением. Указание регистра-приемника (AL или АХ) обязательно, хотя с другими регистрами команда in не работает, и их указывать нельзя. Команда не воздействует на флаги процессора.

Пример 1


in AL, 60h ;Ввод байта из порта 60h


Пример 2


mov DX,3D5h ;Адрес порта

in AL,DX ;Ввод байта из порта 3D5h

Допустимо использование в качестве операнда-приемника расширенного регистра ЕАХ (если адресуемое устройство позволяет прочитать из его порта двойное слово).




Начало  Назад  Вперед



Книжный магазин