当前位置:
文档之家› (完整版),汇编语言速成秘籍,推荐文档
(完整版),汇编语言速成秘籍,推荐文档
(算术运算
商,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
经计算才能得到操作 (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)
标志 F 标志寄存器
,
标志寄存器
总线 段 接口 寄 部件 存 BIU 器
CS 代码段 DS 数据段 ES 附加段 SS 堆栈段
不能被赋值 复位后为 FFFFH 复位后为 0000H
存放堆栈基地址
存储器
IP IP 指令指针寄存器器
指令指针寄存器
二、状态标志寄存器 F
标志位名
功能
为 1 对应符
为 0 对应符
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
寄存器相对寻址
基址变址寻址
操作数在指令中直接给出 操作数在寄存器中 操作数的有效地址由指令直接给出 PA=(DS)|(SS)×16+
(BX)|(SI)|(DI)|(BP) PA=(DS|SS)×16+
(BX|BP|SI|DI)+偏移量 PA=(DS|SS)×16+
(BP|BX)+(SI|DI)
源操作数为地址 操作数需要寻址
商,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)
符,有进位为 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
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
8086 汇编总结
程伟整理
8086 汇编_总结
一、8086 编程结构
执 通 AX 累加器
行 用 BX 基数寄存器
部 寄 CX 计数器
件
存器 DX
数据寄存器
EU
专 BP 基数指针
用 SP 堆栈指针
给出栈顶偏移地址
寄 SI 源变址寄存器
存器 DI
目的变址寄存器
数据寄存器
指针寄存器 堆栈段偏移地址 变址寄存器 数据段偏移地址
类型
汇编指令格式
功
能
操作数说 时钟周期数 字节数
说明
明
辅助运算指
CBW
AX←AL
字节扩展
不影响标志位
令
到字
AL<80H 时 AH=00H , AL>=80H 时 AH=FFH
CWD
DXAX←AX
字扩展到 双字
AX<8000H 时 DX=0000H, DX=FFFFH
AX>=8000H 时
对于符号数:最高位为 0 表示正,为 1 表示负
NV
位
DF
方向标志
DN
UP
IF
中断允许标志
控制标志位
EI
DI
TF
跟踪标志
三、寻址方式{(PA 物理地址=实际地址=绝对地址=cpu 以实际地址访问存储器)
=段基址*10H+(逻辑地址=偏移地址=有效地址 EA=程序以逻辑地址编址)}
寻址方式
操作数物理地址(PA)
指令格式举例
立即寻址 寄存器寻址 直接寻址 寄存器间接寻址
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 数 的商
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
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
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 寄存器产生影响)
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))
B——二进制
D——十进制
Q——八进制
H——十六进制
四、符号约定及含义
符号
含义
i8
一个 8 位立即数
i16
一个 16 位立即数
imm
一个 8 位或 16 位立即数
r8
一个 8 位通用寄存器
r16
一个 16 位通用寄存器或专用寄存器
reg
一个 8 位或 16 位通用寄存器或专用寄存器
seg
一个 16 位段寄存器
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 位