当前位置:
文档之家› (完整版)8086汇编语言速成秘籍
(完整版)8086汇编语言速成秘籍
mem, reg
reg, mem
reg, reg
reg, imm
mem, imm
acc, imm
(dst) ← (src) + (dst) + CF(最高位进位标志 符,有进位为 1,否则
mem, reg reg, mem reg, reg
为 0)
reg, imm
mem, imm
acc, imm
(dest) ← (dest)+1
类型 汇编指令格式
功
能
操作数说明 时钟周期数 字节数
说明
通
MOV dest, src (dest) ← (src)
用
数据传送指令
reg, seg reg, mem
2 8+EA
2 2~4
Cs 不能做目标操作数,不 能被赋值。
数
reg, imm 4
2 ~ 3 段寄存器之间不能传输数据。
据
reg, reg
(AX) ← (DX, AX) / (src) 的商
(DX) ← (DX, AX) / (src) 的余数
(AL) ← (AX) / (src) 的 商
4
1
(AH) ← (AX) / (src) 的 余数
(AX) ← (DX, AX) / (src) 的商
(DX) ← (DX, AX) / (src) 的余数
r16←mem 的 EA
r16 seg m16 r16 seg m16 reg, mem reg, reg mem, reg
11 10 16+EA 8 8 17+EA 17+EA 4 3 11
AX 字节, 10
AL 字,
10
DX 不是操 8
作数而是地
8 址
r16, mem 2+EA
r16 ←m32 的底 16 位 r16, m32
POP dst 出栈
XCHG dest, src 数据交换指令
输入 输出指 令
XLAT 换码指令 IN AL/AX, port OUT port, AL/AX IN AL/AX,DX
OUT port,DX
地址传 送指令 (对逻 辑地址 操作)
标志传 送指令 (唯一 对 F寄 存器操
LEA reg, src 取 有效地址指令 LDS reg, src 地 址指针装入 DS LES reg, src 地址 指针装入 ES LAHF 取标志 SAHF 置标志 PUSHF 标志入栈 指令
(SP) ← (SP)-2 ((SP)+1, (SP)) ← (src)
(dst) ← ((SP)+1, (SP)) (SP) ← (SP)+2
(des) ←→ (src)
AL←DS 中逻辑地址为 (BX+AL)的内存单元 (acc) ← (port) (port) ← (acc) (acc) ← ((DX)) ((DX)) ← (acc)
((SP)+1, (SP)) ← F
入栈
3
1 1 2~4 1 1 2~4 2~4 2 1 1
栈底为高地址 高字节先入栈 每次两个字节参与(16 位) 基地址在 ss 中 偏移地址在 sp 中 调用或中断时保存返回地址 两者互换,但不能同时为存 储器操作数,存储内容互换 要借助通用寄存器
操作数均隐含
2
reg
一个 8 位或 16 位通用寄存器或专用寄存器
seg m8 m16 mem m32
一个 16 位段寄存器 一个 8 位的存储器操作数 一个 16 位的存储器操作数 一个 8 位或 16 位存储器操作数 一个 32 位的存储器操作数
DS CS ES SS
dest
目标操作数
src
源操作数
五po、rt CMP 指令的结果判I/断O方端法口
不影响标志位 AL<80H 时 AH=00H , AL>=80H 时 AH=FFH AX<8000H 时 DX=0000H, AX>=8000H 时 DX=FFFFH 对于符号数:最高位为 0 表示正,为 1 表示负
(AL) ← (AX) / (src) 的 商
4
1
(AH) ← (AX) / (src) 的 余数
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];
B——二进制
D——十进制
Q——八进制
H——十六进制
四、符号约定及含义
符号
含义
i8
一个 8 位立即数
立即数
i16
一个 16 位立即数
imm
一个 8 位或 16 位立即数
r8
一个 8 位通用寄存器
AH AL BH BL CH CL DH
DL
r16
一个 16 位通用寄存器或专用寄存器
AX BX CX DX BP SP SI DI
2
2
传
mem, reg 9+EA
2 ~ 4 目标操作数和源操作数不能
送
mem, seg 9+EA
2 ~ 4 同时为内存操作数(存储器
指
mem, imm 10+EA
3 ~ 6 操作数)。
令
seg, reg
2
2
寄存器中的数为操作数地址
seg, mem 8+EA
2 ~ 4 时为内存操作数,如【XX】。
PUSH src 入栈
(算术
运算指
令)
ADC dst, src 带进位加法
减 (算术 运算指 令)
INC dest SUB dest, src
SBBdest ,src 带进位减法
DEG dest
NEG dest 求补指令 CMP dest, src 比较指令
乘 (算术 运算指 令)
MUL src IMUL src
(dst) ← (src) + (dst)
寄存器相对寻址
基址变址寻址
操作数在指令中直接给出 操作数在寄存器中 操作数的有效地址由指令直接给出 PA=(DS)|(SS)×16+
(BX)|(SI)|(DI)|(BP) PA=(DS|SS)×16+
(BX|BP|SI|DI)+偏移量 PA=(DS|SS)×16+
(BP|BX)+(SI|DI)
源操作数为地址 操作数需要寻址
1 低四位产生进位
ZF 零标志
1 结果为 0
,0 结果不为 0
SF
符号标志
1 结果为负
,0 结果为正
PF
奇偶标志
1 底八位有偶数个 1,0 结果有奇数个
指令指针寄存器
为 1 对应符 CY AC
为 0 对应符 NC NA
ZR
NZ
NG
PL
PE
PO
1
OF 溢出标志
1 最高位有进位 ,0 最高位没进
OV
NV
(AL) ← AL 中的和调整
4
1
为组合BCD
(AL) ← AL 中的差调整
4
1
为组合BCD
(AL) ← AL 中的和调整为
83
2
非组合BCD
(AH) ← (AH)+调整产 生的进位值
(AL) ← AL 中的差调整为
60
2
非组合BCD
(AH) ← (AH)-调整产生 的进位值
Src 字节AL←AX÷src 商, 8 位 reg AH←AX÷src 余数,Src 8 位 mem 字 AX←DX AX÷src 商, 16 位 reg DX←DX AX÷src 余 数 16 位 mem Src 字节AL←AX÷src 商, 8 位 reg AH←AX÷src 余数,Src 8 位 mem 字 AX←DX AX÷src 商, 16 位 reg DX←DX AX÷src 余 数 16 位 mem
16+EA
(DS) ←m32 的高 16 位
r16 ←m32 的底 16 位 r16, m32
16+EA
(ES) ←m32 的高 16 位
(AH) ← (F 低 8 位字节) 隐含操作数 4
(F 低 8 位字节) ← (AH) 隐含操作数 4
(SP) ← (SP)-2(先入栈) 隐含操作数, 10
标志寄存器
8086 汇编总结
程伟整理
8086 汇编总结
一、8086 编程结构
执 通 AX 累加器
行 用 BX 基数寄存器
部
寄 CX 计数器
件
存器 DX 数据寄存器
EU
专 BP 基数指针
用 SP 寄 SI 存器 DI
堆栈指针 源变址寄存器 目的变址寄存器
给出栈顶偏移地址
数据寄存器
指针寄存器 堆栈段偏移地址 变址寄存器 数据段偏移地址
100
000 101 100 001 100
SF 异或 OF=1 (SF 异或 OF)或 ZF=0
SF 异或 OF=0
A<B A>B
A>=B
2
8086 汇编总结
<0 <0 A>B
A B A=B
000 010
(SF 异或 OF)或 ZF=1
A<=B
程伟整理
一、指 令 表(指令分六大类) 1、数据传送类(只有标志传送指令对 F 寄存器影响)