Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab1-7l.doc
Скачиваний:
2
Добавлен:
13.11.2019
Размер:
188.43 Кб
Скачать
  1. Арифметические операции

1) mov AX,op16 - пересылка слов - AX := op16 $@

mov AL,op8 - пересылка байтов - AL := op8 @

mov EAX,op32 - пересылка двойных слов - EAX := op32 @

2) add AX,op16 - сложение слов - AX := AX + op16 @

add AL,op8 - сложение байтов - AL := AL + op8 @

add EAX,op32 - сложение двойных слов - EAX:=EAX + op32 @

3) sub AX,op16 - вычитание слов - AX := AX - op16 @

sub AL,op8 - вычитание байтов - AL := AL - op8 @

sub EAX,op32 - вычитание двойных слов - EAL:= EAX - op32 @

4) mul op16 - умножение слов - (DX,AX) := AX * op16

(первый множитель в AX) DX ¬ старшая часть

AX ¬ младшая часть

mul op8 - умножение байтов - AX := AL * op8

(первый множитель в AL) AH ¬ старшая часть

AL ¬ младшая часть

mul op32 - умножение двойных слов - (EDX,EAX) := EAX * op32

(первый множитель в EAX) EDX ¬ старшая часть

EAX ¬ младшая часть

5) div op16 - деление двойного

слова на слово - DX := (DX,AX) mod op16

AX := (DX,AX) div op16

div op8 - деление на байт - AH := AX mod op8

AL := AX div op8

6) inc op16 - увеличение слова

на 1 (increment) - inc(op16) или

op16 := op16+1

inc op8 - увеличение байта

на 1 (increment) - inc(op8) или

op8 := op8+1

7) dec op16 - уменьшение слова

на 1 (decrement) - dec(op16) или

op16 := op16-1

dec op8 - уменьшение байта

на 1 (decrement) - dec(op8) или

op8 := op8-1

  1. Переходы

1) jmp <метка> - безусловный

переход - goto <метка>

2) cmp op1,op2 - сравнение

j<мнемокод> L1 - условный переход

по результату сравнения на метку L1

E - equal (равно)

N - not (не)

G - greater (больше) - для чисел со знаком

L - less (меньше) - для чисел со знаком

A - above (выше, больше) - для чисел без знака

B - below (ниже, меньше) - для чисел без знака

примеры:

cmp op1,op2 - переход если - if (op1=op2)

je L1 равенство then goto L1

cmp op1,op2 - переход если - if (op1<>op2)

jne L1 неравенство then goto L1

cmp op1,op2 - переход если - if (op1<op2)

jb L1 меньше then goto L1

cmp op1,op2 - переход если - if (op1>=op2)

jea L1 больше либо равно then goto L1

cmp op1,op2 - переход если - if (op1>=op2)

jnb L1 не меньше then goto L1

3) j<мнемокод> - условный переход

по значению флага

jc L1 - если был перенос - if (CF=1) then goto L1

jz L1 - если нуль - if (ZF=1) then goto L1

jo L1 - если переполнение - if (ОF=1) then goto L1

jnc L1 - если нет переноса - if (CF=0) then goto L1

jnz L1 - если не нуль - if (ZF=0) then goto L1

  1. Логические операции (интерес представляет только флаг нуля ZF)

1) not op16 - логическое - not(op16)

отрицание

not op8 - логическое - not(op8)

отрицание

2) and AX,op16 - конъюнкция - AX and op16 @

and AL,op8 - конъюнкция - AL and op8 @

3) test AX,op16 - проверка - аналогична команде AND, но

test AL,op8 - проверка результат никуда не записывается

4) or AX,op16 - дизъюнкция - AX or op16 @

or AL,op8 - дизъюнкция - AL or op8 @

  1. Команды сдвига (интерес представляет только флаг переноса CF, так как в него помещается уходящий бит)

1) shl op16,1 - логический сдвиг - op16 shl 1

shl op8,1 влево на 1 бит - op8 shl 1

(быстрое умножение числа на 2)

CF операнд

0

2) shr op16,1 - логический сдвиг - op16 shr 1

shr op8,1 вправо на 1 бит - op8 shr 1

(быстрое деление числа на 2)

операнд CF

0

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]