Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцесоры_Ответы.docx
Скачиваний:
20
Добавлен:
17.03.2016
Размер:
1.98 Mб
Скачать

2.2.2 Віднімання цілих чисел. Синтаксис команд

  • SUB Приймач, Джерело, де

Приймач ← Приймач – Джерело

Пр. mov AX, 100

mov BX, 60

SUB AX, BX ; AX=60, BX=60

Команда SBB враховує позичання одиниці з старшого розряду.

  • SBB Приймач, Джерело, де

Приймач ← Приймач – Джерело – CF.

Приклад, коли в якості джерела виступає значення data, а в якості приймача – змінна mem.

mov AX, data

sub mem, AX ; AX = -256

membs dd 4, 8, 16, 32 ; address: leas+shift

mov BX, offset membs ; offset повертає базовий адрес масива.

mov DI, 5

lea SI, [BX, DI]

2.2.3 Множення цілих чисел. Синтаксис команд.

Команда MUL – множення без знака.

Перший множник поміщають завжди в регістр AL або AX, а другий – в регістр або змінну, яка являється джерелом.

  • MUL Джерело ; AX←(AL)·(Джерело – число 8 байт)

DX : AX ←(AL)·(Джерело – число 16 байт)

AH

AL

BX

AX

X

X

DX AX

AX

Пр. mov AL, 5

mov BL, 3

MUL BL ; AX=00Fh or AX=15

mov AX, 256

MUL BX ;DX=0001h and AX=0000h, or DX: AX = 65536

mov AL, 126

MUL fls ;AX=0276h or AX=630 (fls db 5)

Команда IMUL – множення з знаком.

  • IMUL Джерело ; аналогічно MUL, Джерело – число з знаком.

Пр. mov AL, -5

mov BL, 3

IMUL BL; AX=00Fh or AX=15.

2.2.4 Ділення цілих чисел. Синтаксис команд

Команда DIV – команда ділення цілих чисел без знака.

Дільник поміщається в регістр або змінну, які являються джерелом для DIV. Ділене завжди поміщається в регістр АХ або пару регістрів DX:AX.

Якщо число 8 байт, то його поміщають в AX(AH, AL).

Якщо число 16 байт, то відповідно пара регістрів DX:AX розглядається як старші і молодші розряди цього числа.

  • DIV Джерело ; AH, AL←(AH:AL)/(Джерело – число 8 байт)

;в AL отримане число, в AH – остача від ділення

;DX:AX ← (DX:AX) /(Джерело – число 16 байт)

; в AX – ціле число, в DX – остача від ділення.

AX

AH

AL

→ AL, AH – остача

DX

AX

→ AX, DX – остача

Пр. div numbers

mov AX, 506

mov BL, 50

div BL ;AL=0Ah, AH=06h

mov DX, word prt long+2 ; старша частина числа

mov AX, word ptr long ;молодша частина числа.

mov CX, 256

div CX ; AX=0100h, DX=0001h

Команда IDIV – ділення цілих чисел з знаком.

  • IDIV Джерело ;аналогічно DIV, джерело – число з знаком.

Пр. idiv numbers

mov AX, 506

mov BL, 50

idiv BL; AL=0Ah, AH=06h

mov AX,-506

mov BL, 50

idiv BL ;AL=F6h or AL=-10, AH=FAh (в AH знак F)

2.2.5 Арифметичний зсув вліво і вправо. Синтаксис команд

Команды ROL и ROR реализуют простой циклический сдвиг влево и вправо соответственно, помещая значение из выдвигаемого бита в освобождающийся бит.

Поле операнда команд сдвига имеет вид mem/reg,count. Опреанд count определяет число сдвигов и может быть указан как констан та 1 или как регистр CL. В первом случае выполняется сдвиг на один бит, а во втором число сдвигов определяется содержимым регистра CL, которое воспринимается как беззнаковое число.

Формат команды:

ROL    mem/reg,1            ROL            mem/reg,CL

ROR   mem/reg,1            ROR            mem/reg,CL

2.2.6 Безумовний перехід та порівняння. Синтаксис команд.

Команды безусловного перехода имеют общую мнемонику JMP.

Пример:

mov ah, 9

jmp label

add bl, al

label:

sub bl, ax

Для организации условного перехода применяется команда «сравнение операндов».

CMP операнд 1, операнд 2

Пример

.data

len equ 10;

.code

cmp ax, len

Jne m1( если не равно, переход на m1)

m1: ax < > len

2.2.7 Команди умовного переходу. Умови переходу.

Анализируют флаги после применения команды cmp и выполняют переход на метку по условию.

jne zF=0 если не равны значения операндов

je zF=1 если равно

jNz zF=0 если не ноль (опер_1 –опер_2)

jz zF=1если ноль (опер_1 –опер_2)

2.2.8 Логічні операції. Синтаксис команд

Команда логического умножения:

AND опер_1, опер_2

Устанавливает флаги sF,zF,pF

Логическое побитовое сложение

OR опер_1, опер_2

Устанавливает флаги sF, zF, pF, oF, cF

Логическое исключающее «или»:

XOR опер_1, опер_2

Устанавливает те же флаги

Логическое отрицание

NOT опер_1

Тема 2.3: Процедури та організація циклів. Перевірка стану стягів. Робота з адресами та покажчиками.

2.3.1 і 2.3.2 Команди циклічного зсуву вліво і вправо

Команды ROL и ROR реализуют простой циклический сдвиг влево и вправо соответственно, помещая значение из выдвигаемого бита в освобождающийся бит.

Поле операнда команд сдвига имеет вид mem/reg,count. Опреанд count определяет число сдвигов и может быть указан как констан та 1 или как регистр CL. В первом случае выполняется сдвиг на один бит, а во втором число сдвигов определяется содержимым регистра CL, которое воспринимается как беззнаковое число.

Формат команды:

ROL    mem/reg,1            ROL            mem/reg,CL

ROR   mem/reg,1            ROR            mem/reg,CL