第 3 章 80x86 汇编语言程序设计 ( 上 ) 16 位汇编版本

Click here to load reader

download 第 3 章   80x86 汇编语言程序设计 ( 上 ) 16 位汇编版本

of 173

description

第 3 章 80x86 汇编语言程序设计 ( 上 ) 16 位汇编版本. 3.1 80x86 的寻址方式. 有效地址 ( effective address EA ) —— 操作数在段内的偏移地址 寻址方式 —— 产生有效地址的方法. 80x86 指令的一般汇编语言格式: [ 标号 :] 指令助记符 [[ 目的操作数 ][, 源操作数 ]][; 注释 ] 其中 [ ] 表示可选项 ;. 3.1.1 操作数寻址. 80x86 的操作数寻址方式有: 1 、立即寻址 2 、寄存器寻址 3 、存储器寻址 4 、端口寻址. - PowerPoint PPT Presentation

Transcript of 第 3 章 80x86 汇编语言程序设计 ( 上 ) 16 位汇编版本

[ ];
MOV AX, 34D8H 34HAH, D8HAL
MOV AX, -40 0FFD8H(-40)AX

OP
D8

8


OP

D168
D168
16



http://www.njyangqs.com/

scale factor 32
1248386


http://www.njyangqs.com/
(ES)=3000H 30000H
(DS)=2000H + 0100H

10000H 20000H
+ 0B10H + 032AH
MOV AX, COUNT[BX] ; COUNT
MOV AX,[COUNT+BX]
(DS)=3000H (BX)=2000HCOUNT=4000H
30000H
2000H
+ 4000H
1234H
MOV DX, COUNT[SI] ; COUNT
MOV AX,[COUNT+SI]
(DS)=3000H (SI)=2000HCOUNT=1000H
30000H
2000H
+ 1000H
6734H

21000H
0158H
+ 10A5H
(DS)=3000H, (BX)=2000H, (SI)=1000H, MASK=0250H

30000H
2000H
1000H
+ 0250H
I/O00H~FFH256
IN AL, 20H 20H1
OUT 60H, AX AX160H
DXI/O216=64K
DS=2000HBX=1000HTABLE1000H21000H=0040H22000H=5678H
JMP BX IP=1000H
JMP [BX] IP=0040H

http://www.njyangqs.com/

(DS)=2500H(SI)=1300H(26300H)=4500H(26302H)=32F0H,
JMP DWORD PTR [SI]CS=32F0HIP=4500H

http://www.njyangqs.com/
XCHG(exchange)
XLAT(translate)
MOV AX, 0B00H
MOV AL, BL

30000H
2000H
+ 8000H
3A000H
MOV AX, 0D8H
(AX)=00D8H
MOV AX, -40
(AX)=FFD8H

http://www.njyangqs.com/
(3)
(ESP)(ESP)+4
48h 1H 48h 1H
9Ah 2H 9Ah 2H
28h 3H 28h 3H
ESP(ESP)-32
SP(SP)-16
ESP(ESP) +32
POPA 286
16
SP(SP) +16


http://www.njyangqs.com/
XCHG [SI], DX

DX DX
AL<--((BX)+(AL)) AL((EBX)+(AL))
AL(TABLE)EABX(EBX)AL
XLAT TABLE 30H
BX +2 32H
AL +4 34H
XLAT +5 35H
DS
ES
FS
GS
SS

21234H 78H
5H 56H
OffsetEALEAEA
LEA AX,MYDAT[SI] mov AX, OFFSET MYDAT[SI]

http://www.njyangqs.com/
5678H

LDS DI, BUFF



http://www.njyangqs.com/
ESP(ESP)+4
IN AX, DX
IN AX, Port (Port0-FFH)
32

http://www.njyangqs.com/
OUT Port, AX
OUT DX, AX
MOV DX, 3FCH
OUT

CMPXCHG8B
-32768----+32767
3 BCD

http://www.njyangqs.com/
ADD1



SF=0
CF=1
OF=0
(DS)=2000H, (BX)=1000H
48H OF=1

http://www.njyangqs.com/
INC AX
ADC DX,0
2

http://www.njyangqs.com/
SUB

http://www.njyangqs.com/
SBB
100-(AL)
255 > 0
-1 < 0
4ZF
5SUB
80H 58H
-58H -80H
28H D8H
CF

http://www.njyangqs.com/
DST=5AH, SRC=46H DST=46H, SRC=5AH
5AH 46H
- 46H - 5AH
14H ECH
(2)DST>0, SRC<0 DST>SRC
DST=10H SRC=95H DST=62H SRC=95H
10H 62H
- 95H - 95H
7BH CDH


http://www.njyangqs.com/
DST=D3H SRC=38H DST=BFH SRC=55H
D3H BFH
- 38H - 55H
9BH 6AH
(4)DST<0, SRC<0 ,OF=0
DST=B5H SRC=9CH DST=9CH SRC=B5H
B5H 9CH
- 9CH - B5H
19H E7H
SFOF

http://www.njyangqs.com/
CMP1
- 64
- 10
- 74
CMP2
-100
- (-110)
10

http://www.njyangqs.com/
1) 486
2) ALAXEAX
3) SRCDST
(DX)=2400H
(DX)=2400H
(CX)=2400H, ZF=1
REG16(SRC)*IMM
3) SRC=0“Divide error”AX, DX:AX25565535

http://www.njyangqs.com/
DIV
MOV DX, 0001H
CBW
MOV AX, X
MOV AX, Z
ADC BX, DX
MOV AX, V
(AL)+6-->AL
AAA + 06 H

http://www.njyangqs.com/
AAA
AAA + 06 H

http://www.njyangqs.com/
(AL)-6-->AL
AAS - 6 H

http://www.njyangqs.com/
MUL CL × 1001
AAM 0111

http://www.njyangqs.com/

http://www.njyangqs.com/
AAD
MOV CL, 4
AAD (AX)=28

http://www.njyangqs.com/
(AL)+6-->AL
(AL)+60H-->AL
DAA + 6
DAA + 60H
(AL)-6-->AL
(AL)-60H-->AL
MOV AL, A 12H
SUB AL, B - 76H
MOV AL, A+1 36H D
SBB AL, B+1 CF=1
DAS
35H
- 1
NOT AL
AND1
OR1

http://www.njyangqs.com/
XOR1
1011 1001

XOR
AX0X86CPU

1.MOV AX, 0 ;8088286386486Pentium 43211 2
2.AND AX, 0 ;8088286386486Pentium 43211 3
3.XOR AX, AX ;8088286386486Pentium32211 2
4.SUB AX, AX ;8088286386486Pentium32211 3
5.MOV BL, 0; 8088286386486Pentium 43211 2
MUL BL ; 8088286386486Pentium14321384211 3
XOR
4
3
2
1
1
2
143
21
38
42
11
3
1.MOV AX, 0 ;8088286386486Pentium 43211 2
2.AND AX, 0 ;8088286386486Pentium 43211 3
3.XOR AX, AX ;8088286386486Pentium32211 2
4.SUB AX, AX ;8088286386486Pentium32211 3
5.MOV BL, 0; 8088286386486Pentium 43211 2
MUL BL ; 8088286386486Pentium14321384211 3

http://www.njyangqs.com/
TEST1
2DSTREGCNTREG
12
CF AL
:N2N
(
MOV AH, 0
MOV BX, AX
DX=3×AX7×BX

http://www.njyangqs.com/
1
ASCIIBCD
MOV CL, 4
MOV BL, AL BL<--90H
MOV AL, ASC+1 AL<--36H (‘6’)
AND AL, 0FH AL<--06H
OR BL, AL BL<--96H
MOV BCD, BL
SHL AX CL
SHR BL CL
OR DL BL
SALDSTCFCFOF=1

http://www.njyangqs.com/
DF=1STD

http://www.njyangqs.com/


‘A’
SI<--(SI)(+/-)1
DI<--(DI)(+/-)1
SI<--(SI)(+/-)1
DI(DI)(+/-)1
SI,DI
REPE SI,DI
REPNE SI,DI

MOV CX, 5


http://www.njyangqs.com/
CMPS
REPZ CMPSB
JZ NEXT
String DB ‘That is CAI’
……
REPNZ SCASB
JZ FOUND
CLD DF=0
MOV CX, 1000
REP STOSB
LP: CLD DF=0
INT
LOOP CX<--(CX)-1
LOOPNZ CX<--(CX)-1 CX

http://www.njyangqs.com/
1
DEC CX
JNZ AGAIN
MOV AX, 0
ADC AH, 0
INC SI
DEC DI
LOOPZ AGAIN
JNZ FOUND 0
JLE LEEQ 0
INC DI
LOOP AGAIN
SUB AX, DI
SUB AX, SI
1IP<--(IP)+disp8
ADDTIP1DH,
… 1 1D
ADD AL, BL +1DH
2IP<--(IP)+disp16
-32KB+32KB, OPR
3IP<--(OPR)
...

http://www.njyangqs.com/
4IP<--OAopr
……
5IP<--((DS)*16+OPR)
CS<--((DS)*16+OPR+2)

1IP
2near ptr
3SP<--(SP)-2
4 SP<--(SP)-2
SP<--(SP)+2
SP<--(SP)+2
CS<--((SP)+1,(SP))
SP<--(SP)+2

http://www.njyangqs.com/
JNBE JNLE ZF=0
A>=B JAE ZF=1 JGE SF=OF
JNB CF=0 JNL ZF=1
A<B JB ZF=0,CF=1 JL SF<>OF
JNAE JNGE ZF=0
JNA CF=1 JNG ZF=1

http://www.njyangqs.com/
1
DAT
MOV AH, X
CMP AH, 39H
JBE NEXT ≤39H
NEXT: SUB AH, 30H 30H
MOV HEX, AH

http://www.njyangqs.com/
3
((SP)+1,(SP))<--(FLAGS)
SP<--(SP)-2
((SP)+1,(SP))<--(CS)
SP<--(SP)-2
((SP)+1,(SP))<--(IP)
CS<--(0000:OA+2)
SP<--(SP)+2
CS<--((SP)+1,(SP))
SP<--(SP)+2
FLAGS<--((SP)+1,(SP))
SP<--(SP)+2

02H (AH)=2
(DL)=
(DS:DX)=
‘$’
(DS:DX)=


http://www.njyangqs.com/

BIOS
MOV AH, 01H
LEN EQU $-MSG $
MOV CX, LEN
INT 21H
……