(完整版),汇编语言速成秘籍,推荐文档
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1
12
4 AF
栈指令
栈)
数,标志
((SP)+1, (SP)) ← F
寄存器入 栈
POPF 标志弹出 F← ((SP)+1, (SP)) 隐含操作 8
指令
(SP) ← (SP)+2(出栈) 数,数据
11 OF 3
10 DF 2 PF
9 IF 1
1
8 TF 0 CF
出栈到标
志寄存器
2、算术运算指令 (都对 F 寄存器产生影响)
B
DAA
(AL) ← (AX) / (src)
4
1
C
压缩 BCD 数 的商
D
加法调整
(AH) ← (AX) / (src)
数
的余数
(
(AX) ← (DX, AX) /
算
(src) 的商
术
(DX) ← (DX, AX) /
运
(src) 的余数
算
DAS
(AL) ← (AX) / (src)
4
1
结
压缩 BCD 数 的商
CF 进位标志
1 最高位产生进位
CY
NC
AF 辅助进位标志
1 低四位产生进位
AC
NA
ZF 零标志
1 结果为 0
,0 结果不为 0
ZR
NZ
SF 符号标志
1 结果为负
,0 结果为正
NG
PL
PF 奇偶标志
1 底八位有偶数个 1,0 结果有奇数个
PE
PO
1
OF 溢出标志
1 最高位有进位 ,0 最高位没进
OV
基地址在 ss 中 偏移地址在 sp 中 调用或中断时保存返回地 址 两者互换,但不能同时为 存储器操作数,存储内容 互换要借助通用寄存器
操作数均隐含
直接寻址,port 地址范围 0-255(0ffh) 间接寻址,端口地址在 DX 中,范围 065535(0ffffh)
L 为取的意思 操作数均为 16 位
OUT port,DX
((DX)) ← (acc)
reg, mem reg, reg mem, reg
17+EA 4 3 11
AX 字节, 10
AL 字, 10 DX 不是 8 操作数而 8 是地址
LEA reg, src 取 有效地址指令 LDS reg, src 地 址指针装入 DS
LES reg, src 地址 指针装入 ES
标志 F 标志寄存器
,
标志寄存器
总线 段 接口 寄 部件 存 BIU 器
CS 代码段 DS 数据段 ES 附加段 SS 堆栈段
不能被赋值 复位后为 FFFFH 复位后为 0000H
存放堆栈基地址
存储器
IP IP 指令指针寄存器器
指令指针寄存器
二、状态标志寄存器 F
标志位名
功能
为 1 对应符
为 0 对应符
3
8086 汇编总结
程伟整理
标志传送指 令
LAHF 取标志
(AH) ← (F 低 8 位字 隐含操作 4
节)
数
1
F
15
7 SF
(唯一对 F SAHF 置标志
(F 低 8 位字节) ← 隐含操作 4
1
14
6 ZF
寄存器操作)
(AH)
数
13
5
PUSHF 标志入 (SP) ← (SP)-2(先入 隐含操作 10
m8
一个 8 位的存储器操作数
m16
一个 16 位的存储器操作数
mem
一个 8 位或 16 位存储器操作数
m32
一个 32 位的存储器操作数
dest
目标操作数
src
源操作数
port
I/O 端口
五、CMP 指令的结果判断方法
大小关系 A-B 相关标志位
ZF
CF
A>B
0
0
ZF=1
立即数
AH AL BH BL CH CL DH DL AX BX CX DX BP SP SI DI DS CS ES SS
8086 汇编总结
程伟整理
8086 汇编_总结
一、8086 编程结构
执 通 AX 累加器
行 用 BX 基数寄存器
部 寄 CX 计数器
件
存器 DX
数据寄存器
EU
专 BP 基数指针
用 SP 堆栈指针
给出栈顶偏移地址
寄 SI 源变址寄存器
存器 DI
目的变址寄存器
数据寄存器
指针寄存器 堆栈段偏移地址 变址寄存器 数据段偏移地址
2 3~4 3~6 1~2 2~4
2 2~4
程伟整理
不影响标志位除非溢出 不能是压缩的 BCD 数
操作数类型: 无符号二进制数, 带符号位二进制数, 无符号压缩 BCD 数, 无符号非压缩 BCD 数。 dest 与 src 不能同时为内 存操作数。
000 101 100
001 100
(SF 异或 OF)或 ZF=0
SF 异或 OF=0
A>B A>=B
2
8086 汇编总结
<0 <0 A>B
A B A=B
000 010
(SF 异或 OF)或 ZF=1
A<=B
程伟整理
一、指 令 表(指令分六大类) 1、数据传送类(只有标志传送指令对 F 寄存器影响)
MOV DX,100H ; (DX)←100H ADD AX,BX ; (AX)←(AX)+(BX)
操作数需要计算 MOV AX,[100] ; (AX)←(100)
给出的均为操作 MOV AX,[BX] ;
数的逻辑地址,而且 (AX)←((DS)×16+(BX))
将逻辑地址分成几段, MOV AL,OFFSET[SI];
XCHG dest, src 数据交换指令
(des) ←→ (src)
XLAT 换码指令
AL←DS 中逻辑地址 为(BX+AL)的内存单 元
IN AL/AX, port (acc) ← (port)
OUT port, AL/AX (port) ← (acc)
IN AL/AX,DX
(acc) ← ((DX))
符,有进位为 1,否 reg, reg
3
则为 0)
reg, imm 4
mem, imm 17+EA
acc, imm 4
INC dest (dest) ← (dest)+1
reg mem
2~3 15+EA
减 (算术运算
SUB dest, src (dst) ← (src) - (dst)
mem, reg reg, mem
NV
位
DF
方向标志
DN
UP
IF
中断允许标志
控制标志位
EI
DI
TF
跟踪标志
三、寻址方式{(PA 物理地址=实际地址=绝对地址=cpu 以实际地址访问存储器)
=段基址*10H+(逻辑地址=偏移地址=有效地址 EA=程序以逻辑地址编址)}
寻址方式
操作数物理地址(PA)
指令格式举例
立即寻址 寄存器寻址 直接寻址 寄存器间接寻址
reg mem
2~3 15+EA
NEG dest 求补指令
(dest) ← 0 - (dest)
reg mem
3 16+EA
2
2 2~4
2 Байду номын сангаас~4
2 2~4
2 2~4
2~4 2~4
2 3~4 3~6 2~3 2~4 2~4
2 3~4 3~6 2~3 1~2 2~4 2~4 2~4
2 3~4 3~6 2~4 2~4
AAM
(AL) ← AL 中的和调整
83
2
乘法
为非组合BCD
ASCII 码调整 (AH) ← (AH)+调整
产生的进位值
4
8086 汇编总结
AAD
(AL) ← AL 中的差调整
60
除法
为非组合BCD
ASCII 码调整 (AH) ← (AH)-调整产 生的进位值
除
DIV src
Src 字节AL←AX÷src 8 位 reg 80 ~ 90
类型 通 用 数 据 传 送 指 令
输入输出 指令
地址传送指 令(对逻辑 地址操作)
汇编指令格式
功
能
MOV dest, src 数据传送指令
(dest) ← (src)
操作数说 明
reg, seg reg, mem reg, imm reg, reg mem, reg mem, seg mem, imm seg, reg seg, mem
经计算才能得到操作 (AL)←((DS)×16+(SI)+OFFSET)
数
MOV AX,[BX+DI];
(AX)←((DS)×16+(BX)+(DI))
1
8086 汇编总结 相对基址变址寻址
PA=(DS|SS)×16+ (BX|BP)+(SI|DI)+偏移量
程伟整理 MOV AX, OFFSET (BX+DI); (AX)←((DS)×16+(BX)+(DI)+OFFS ET)
果
减法调整
(AH) ← (AX) / (src)
)
的余数
调
(AX) ← (DX, AX) /
整
(src) 的商
指
(DX) ← (DX, AX) /
令
(src) 的余数
AAA 加法 (AL) ← AL 中的和调
4
1
ASCII 码调整 整为组合BCD
AAS 减法
(AL) ← AL 中的差调
4
1
ASCII 码调整 整为组合BCD
商,AH←AX÷src 余 8 位 mem (107~118)+EA
数,Src 字 AX←DX 16 位 reg 165 ~ 184
AX÷src 商,DX←DX 16 位 mem (171~190)+EA
AX÷src 余数
加 (算术运算
ADD dst, src (dst) ← (src) + (dst)
B——二进制
D——十进制
Q——八进制
H——十六进制
四、符号约定及含义
符号
含义
i8
一个 8 位立即数
i16
一个 16 位立即数
imm
一个 8 位或 16 位立即数
r8
一个 8 位通用寄存器
r16
一个 16 位通用寄存器或专用寄存器
reg
一个 8 位或 16 位通用寄存器或专用寄存器
seg
一个 16 位段寄存器
判断依据
无
符
号 A=B
CF=1
A<B
CF 或 ZF=0
A>B
A=B
1
0
CF=0
A>=B
A<B
0
1
CF 或 ZF=1
A<=B
A B 大小关 系
>0 >0 A>B
相关标志位 SF ZF OF 000
判断条件 ZF=1
大小关系 有
符
A=B
号
>0 >0 A<B
100
SF 异或 OF=1
A<B
>0 <0 A>B <0 >0 A<B <0 <0 A<B
(算术运算
商,AH←AX÷src 余 8 位 mem (86~96)+EA
指令)
数,Src 字 AX←DX 16 位 reg 144 ~ 162
AX÷src 商,DX←DX 16 位 mem (150~168)+EA
AX÷src 余数
IDIV src Src 字节AL←AX÷src 8 位 reg 101 ~ 112
寄存器相对寻址
基址变址寻址
操作数在指令中直接给出 操作数在寄存器中 操作数的有效地址由指令直接给出 PA=(DS)|(SS)×16+
(BX)|(SI)|(DI)|(BP) PA=(DS|SS)×16+
(BX|BP|SI|DI)+偏移量 PA=(DS|SS)×16+
(BP|BX)+(SI|DI)
源操作数为地址 操作数需要寻址
r16←mem 的 EA
r16 ←m32 的底 16 位 (DS) ←m32 的高 16 位 r16 ←m32 的底 16 位 (ES) ←m32 的高 16 位
r16, mem r16, m32 r16, m32
2+EA 16+EA 16+EA
字节数
2 2~4 2~3
2 2~4 2~4 3~6
2 2~4
mem, reg reg, mem
16+EA 9+EA
指令)
reg, reg
3
reg, imm 4
mem, imm 17+EA
acc, imm 4
ADC dst, src 带进位加法
(dst) ← (src) + (dst) + mem, reg CF(最高位进位标志 reg, mem
16+EA 9+EA
类型
汇编指令格式
功
能
操作数说 时钟周期数 字节数
说明
明
辅助运算指
CBW
AX←AL
字节扩展
不影响标志位
令
到字
AL<80H 时 AH=00H , AL>=80H 时 AH=FFH
CWD
DXAX←AX
字扩展到 双字
AX<8000H 时 DX=0000H, DX=FFFFH
AX>=8000H 时
对于符号数:最高位为 0 表示正,为 1 表示负
16+EA 9+EA
指令)
reg, reg
3
reg, imm 4
mem, imm 17+EA
SBBdest ,src
(dst) ← (src) - (dst) - mem, reg
CF
reg, mem
16+EA 9+EA
带进位减法
reg, reg
3
reg, imm 4
mem, imm 17+EA
DEG dest (dest) ← (dest) - 1
时钟周期数
2 8+EA 4 2 9+EA 9+EA 10+EA 2 8+EA
PUSH src 入栈
POP dst 出栈
(SP) ← (SP)-2
r16
((SP)+1, (SP)) ← (src) seg
m16
(dst) ← (SP))
((SP)+1, r16 seg
(SP) ← (SP)+2
m16
11 10 16+EA 8 8 17+EA
1 1 2~4 1 1 2~4
2~4 2 1 1
2 2 1 1
2~4
2~4
2~4
说明
Cs 不能做目标操作数,不 能被赋值。 段寄存器之间不能传输数 据。 目标操作数和源操作数不 能同时为内存操作数(存 储器操作数)。 寄存器中的数为操作数地 址时为内存操作数,如 【XX】。 栈底为高地址 高字节先入栈 每次两个字节参与(16 位)