Основные команды ассемблера

Содержание

Слайд 2

Команды пересылки данных

Команды пересылки данных

Слайд 3

Инструкция MOV

Инструкция MOV

Слайд 4

Инструкция обмена данными

Инструкция обмена данными

Слайд 5

Инструкция обмена данными Инструкции загрузки адреса

Инструкция обмена данными

Инструкции загрузки адреса

Слайд 6

Инструкции работы со стеком

Инструкции работы со стеком

Слайд 7

Инструкция перекодировки xlat 16-е число … BX AL 0 1 2

Инструкция перекодировки xlat

16-е число


BX

AL

0 1 2 3 4 … 12 13 14 15

Таблица перекодировки

Tp db ‘0123456789ABCDEF’ A db 14

Слайд 8

Инструкция перекодировки xlat 14 48 49 50 51 52 … 67

Инструкция перекодировки xlat

14

48

49

50

51

52


67

BX

AL

0 1 2 3 4 … 12 13 14 15

Таблица перекодировки

68

69

70

Lea bx,Tp Mov al,A

Слайд 9

Инструкция перекодировки xlat 14 14 Адрес таблицы перекодировки 48 49 50

Инструкция перекодировки xlat

14

14

Адрес таблицы перекодировки

48

49

50

51

52


67

BX

AL

0 1 2 3 4 … 12 13 14 15

Таблица перекодировки

68

69

70

Xlat es:Tp

Слайд 10

Инструкция перекодировки xlat ‘E’ 14 Адрес таблицы перекодировки 48 49 50

Инструкция перекодировки xlat

‘E’

14

Адрес таблицы перекодировки

48

49

50

51

52


67

BX

AL

0 1 2 3 4 … 12 13 14 15

Таблица перекодировки

68

69

70

Слайд 11

Арифметические команды

Арифметические команды

Слайд 12

Преобразование Байта в слово ah ? al Слова в двойное слово

Преобразование

Байта в слово ah ? al

Слова в двойное слово
Cwd: ax ? dx
Cwde:

ax ? eax
Двойного слова в учетверенное
Cdq: eax ? edx

11111111

1*******

00000000

0*******

cbw

Пересылка

Слайд 13

Преобразование Байта в слово ah ? al Слова в двойное слово

Преобразование

Байта в слово ah ? al

Слова в двойное слово
Cwd: ax ? dx
Cwde:

ax ? eax
Двойного слова в учетверенное
Cdq: eax ? edx

11111111

1*******

00000000

0*******

cbw

Пересылка

Слайд 14

Двоичная арифметика Inc – увеличение на 1*) Dec – уменьшение на

Двоичная арифметика

Inc – увеличение на 1*)
Dec – уменьшение на 1*)
Neg –

смена знака
*) Не изменяет флага cf.

inc

dec

neg

R8,16,32

M8,16,32

Слайд 15

Сложение, вычитание сравнение

Сложение, вычитание сравнение

Слайд 16

Пример cf ah al Mov ax,128 00000000 10000000 Add al,128 00000000

Пример

cf ah al
Mov ax,128

00000000

10000000

Add al,128

00000000

00000000

1

Adc ah,128

10000001

00000000

0

Adc ah,128

00000001

00000000

1

Слайд 17

Умножение, деление mul div imul idiv R8,16,32 M8,16,32 Второй сомножитель или

Умножение, деление

mul

div

imul

idiv

R8,16,32

M8,16,32

Второй сомножитель или делитель

Делитель 0 или частное велико – исключительная ситуация

Слайд 18

Десятичная арифметика

Десятичная арифметика

Слайд 19

AAA и AAS: примеры mov ax,8 add al,5 aaa mov ax,’18’

AAA и AAS: примеры

mov ax,8 add al,5 aaa
mov ax,’18’ add al,’9’ aaa
mov ax,’18’ sub al,9 aas

00

08 00 05 00 0d al > 9, af = 0 01 03 af = cf = 1
31 38 00 39 31 71 af = 1 32 07 af = cf = 1
31 38 00 09 31 2f af = 1 30 09 af = cf = 1
Слайд 20

AAM и AAD: примеры mov al,9 mov bl,9 mul bl aam

AAM и AAD: примеры

mov al,9 mov bl,9 mul bl aam
mov al,99 aam
mov ax,0703h aad mov bl,9 div bl
mov

ax,’99’ aad sub al,10h

** 09 ** 09 00 51 08 01
00 63 09 09
07 03 00 49 00 09 01 08
39 39 00 73 00 10 00 63

Слайд 21

DAA и DAS: примеры mov ax,44h add al,37h daa Mov ax,57h

DAA и DAS: примеры

mov ax,44h add al,37h daa
Mov ax,57h sub al,19h das
Mov ax,88h add al,12h daa
Mov ax,88h sub

al,99h das

00 44 00 37 00 7B all > 9, af=0 00 81 af = 1
00 57 00 19 00 3E af = 1 00 38
00 88 00 12 00 9A all > 9 00 00 af = cf =1
00 88 00 99 00 EF af = cf =1 00 89 af = cf =1

Слайд 22

R8 M8 SETcc

R8

M8

SETcc

Слайд 23

Логические команды

Логические команды

Слайд 24

Побитовые булевские операции устанавливает флаг zf без формирования результата and Not r8,16,32 m8,16,32

Побитовые булевские операции

устанавливает флаг zf без формирования результата and

Not

r8,16,32

m8,16,32

Слайд 25

Операции с битами

Операции с битами

Слайд 26

Примеры A dw 0000h B dw 0110h … .386 bsf ax,A

Примеры

A dw 0000h B dw 0110h …
.386 bsf ax,A bsf ax,B bsr ax,B
bt b,ax btc b,ax btr b,4 bts b,1

zf=1 ax=4, zf=0 ax=8, zf=0
cf=1 cf=1, b=0010h cf=1, b=0000h cf=0,

b=0002h
Слайд 27

Операции сдвига

Операции сдвига

Слайд 28

Слайд 29

Команды передачи управления «выше» - «ниже» - для чисел без знака

Команды передачи управления

«выше» - «ниже» - для чисел без знака «больше» -

«меньше» - для чисел со знаком
Слайд 30

Операторы перехода по условию cx ≠ 0 cx ≠ 0 &

Операторы перехода по условию

cx ≠ 0

cx ≠ 0 & zf =

1

cx ≠ 0 & zf = 0

loop

cx=…

jcxz

cx=0

Слайд 31

Инструкции передачи управления i4 Ret При передаче управления вперед Идентификатор – имя переменной, а не метка

Инструкции передачи управления

i4

Ret

При передаче управления вперед

Идентификатор – имя переменной, а не

метка
Слайд 32

Инструкции работы с прерываниями Int i8 – вызов процедуры обслуживания прерывания

Инструкции работы с прерываниями

Int i8 – вызов процедуры обслуживания прерывания с

номером, заданным операндом команды: pushf cli puch cs jmp … push ip
Iret – возврат из программы обработки прерывания в прерванную программу: pop ip popf pop cs jmp …
Слайд 33

Команды работы с цепочками

Команды работы с цепочками

Слайд 34

Movs Cmps source dest Scas Lods Stos dest dest source dest source

Movs

Cmps

source

dest

Scas

Lods

Stos

dest

dest

source

dest

source

Слайд 35

.model small .stack 256 .data a db '1234567890','$‘ b db '0987654321','$'

.model small
.stack 256
.data a db '1234567890','$‘ b db '0987654321','$'
.code
main proc
assume es:@data mov ax,@data mov ds,ax mov es,ax
mov ah,9 lea dx,b int 21h

lea si,a lea

di,b
mov cx,10 rep movsb
mov ah,9 lea dx,b int 21h
.exit 0
main endp end main
Результат: 09876543211234567890
Слайд 36

Команды управления ЦП

Команды управления ЦП