8086指令系统一览表
ch3-3 8086指令系统(算术运算与逻辑运算)

AH为高8位,AL为低8位。
AL (8位)
s (8位)
AH AL (16位)
第三章 8086/8088 指令系统
b. 16位乘法 AL×OPRD AX DX为高16位,AX为低16位。
AX (16位)
s (16位)
DX AX (32位)
第三章 8086/8088 指令系统
• 该指令可以得到负数的绝对值。 • 执行该指令后一般都会使得CF为1
第三章 8086/8088 指令系统
(5) 比较指令 CMP d, s
功能:作一次减法运算d–s,但不送结果,
只根据结果设置标志位。 比较指令往往用于判断两数是否相 等,或两数大小关系。若相等,则零标 志ZF=1。
第三章 8086/8088 指令系统
01110011 00110111 相减
00111100 00000110 调整
00110110
最后结果 AL = 00110110B(代表36),CF=0
第三章 8086/8088 指令系统
(5) AAM 功能:对未组合型BCD的乘法结果进行调整。 例: MOV AL, 00001000B (代表8) MOV BL, 00001001B (代表9) MUL BL AAM
否则不作调整。
第三章 8086/8088 指令系统
例: MOV AH, 0 MOV AL, 00000110B ADD AL, 00000111B
AAA
;代表6 ;代表7
00000110 6 + 00000111 7
00001101 调整 + 00000110
00010011
清0
00000011 AL 00000000+1=00000001AH
04 8088(8086)的指令系统

INC OPRD
操作数:通用寄存器、存储器 (不能是段寄存器或立即数) 执行的操作:OPRD OPRD + 1
功能: 用于在循环中修改地址指针及循环次数等。
注:该指令影响标志位
例: INC BX INC byte ptr [SI]
1. 先将SP所指单元内容 送至AL, 然后 SP+1SP ;
2. 再SP所指单元内容送 至AH, 然后 SP+1 SP
例:MOV AX,5678H POP AX
(3) 交换指令 XCHG OPRD1, OPRD2
在寄存器间或寄存器与存储器间交换信息(不允许使用段寄存器)。
源操作数: 寄存器、存储器 目的操作数:寄存器、存储器 执行的操作:( OPRD1) (OPRD2 )
DS=1000h
buffer 10100h 00 02 00 20
0100h BX
(2) LDS 把源操作数指定的内存的4个相继字节的内容送至指定寄存器及DS中
LDS REG, SRC
(REG) (SRC)
(DS) (SRC+2)
目的操作数
源操作数
(16位通用寄存器) (内存操作数)
• 该指令完成一个32位地址指针的传送; • 该指令通常指定 SI 作寄存器 REG。
• CPU内部寄存器之间的数据传送(除CS,IP外) MOV AL,BL MOV DX, DI MOV SI, BP MOV DS, BX MOV AX,DX
• 立即数传送到CPU内部通用寄存器组(AX,BX,CX,DX,BP,SP,DI,SI)
MOV CL, 4 MOV DX, 03FFH MOV DI, 04BFH
DST+SRC+C
8086汇编指令大全.

不允许寄存器或存储单元到除CS外的段寄存器
2入栈(出栈指令PUSH (POP
注意:
PUSH操作数不能是“立即数” POP操作数不能是段寄存器
CS
不影响标志位
先进后出
单操作符
3交换指令XCHG
注意:
只允许寄存器与存储单元之间的交换
不影响标志位
4换码指令XLAT
5地址传送指令LEA :偏移地址
ZF=0
SF符号标志位
OF溢出标志位
DF方向标志位
IF中断允许位IF=1时响应外部中断
TF跟踪标志位
操作数:[目的操作数(OPD ,源操作数(OPS ] ;立即操作数,寄存器操作数,存储器操作数。寻址方式:
1寄存器寻址例:INC AX ; MOV AX , BX
2寄存器间接寻址(寄存器只能是BX , DI , SI , BP ; [PA=(BX、DI、SI +DS》4或BP+SS》4]
6数据段指针送寄存器LDS :低地址的字送指定的通用寄存器(SI、高地址的字
送DS
7附加段指针送寄存器指令LES :与LDS相似,低地址的字送通用寄存器(DI、高
地址送ES
上三指令不影响标志位
8标志寄存器传送指令
LAHF :标志寄存器低八位送
AH
SAHF :AH送标志寄存器低八位
PUSHF :标志寄存器压入堆栈
标志寄存器:9个有效位,分6个状态寄存器和3个控制寄存器
CF当执行一个加法(减法使最高位产生进位(借位时CF=1否则
CF=0
PF指令执行的结果低8位有偶数个一时, CF=1否则
CF=0
AF当执行一个加法(减法使运算结果低4位向高4位有进位(借位时AF=1否则
48086CPU指令系统

XCHG DS,ES XCHG AX,DS XCHG DS,[ BX ] • 不能使用双存储器 XCHG [ BX ],[ SI ] • 不能使用立即数 XCHG AX,2000H XCHG 20H,BL
《例》用 MOV、PUSH,POP、XCHG 指令 完成两寄存器AX、BX 中数据的交换
• 指令格式
•
指令功能
OPR1、OPR2 两个操作数间交换数据
数据传送类指令
XCHG指令的应用范围
• 通用寄存器与通用寄存器间交换数据
XCHG AX,BX XCHG DL,CH • 通用寄存器与存储器间交换数据 XCHG AX,[ BX ] XCHG [ SI ],AL
数据传送类指令
XCHG指令的 禁用情况
通用传送指令 PUSH、POP 中 src、dst 操作数的使用
• 为通用寄存器、段寄存器操作数
PUSH AX、PUSH ES POP DS、 POP BX • 为存储器操作数 PUSH [ 2000H ]、PUSH [ BX ] POP [ BX ]、 POP [ 1000H ]
通用传送指令PUSH、POP中 src、dst 操作数的禁用
数据传送类指令
指令 LEA 与 LDS,LES 的区别
• LEA src
scr 表示存储器地址本身
• LDS r,src
LES r,src src 表示存储器地址中的值
地址传送指令的比较
已知:DS=09A0H,BX= 0048H
LEA DI,[BX] → 执行后:DI=0048H 等价于 MOV DI,OFFSET [BX] LDS DI,[BX] → 执行后:DI=003EH DS=0816H LES DI,[BX] → 执行后:DI=003EH ES=0816H Memory
8086指令系统总结

8086指令系统总结8086是一种x86架构的微处理器,由Intel公司于1978年推出。
它是16位的,拥有20位的物理寻址能力,可以访问1MB的内存空间。
8086指令系统是其所支持的一系列指令集合,下面将对8086指令系统进行详细总结。
数据传输指令是8086指令系统中的基础指令之一,用于将数据从一个位置传输到另一个位置。
其中包括mov指令、xchg指令、push指令和pop指令等。
mov指令用于将数据从一个存储位置复制到另一个存储位置;xchg指令用于交换两个存储位置中的数据;push指令用于将数据压入栈顶;pop指令用于将栈顶的数据弹出。
算术运算指令是用于进行各种算术运算的指令。
8086支持包括加法、减法、乘法和除法等多种算术运算指令。
例如,add指令用于将两个操作数相加,sub指令用于将第二个操作数从第一个操作数中减去,mul指令用于将两个操作数相乘,div指令用于将第一个操作数除以第一个操作数,并将结果保存在指定的寄存器中。
逻辑运算指令用于进行逻辑运算,包括与、或、非、异或等运算。
例如,and指令用于对两个操作数进行按位与运算,or指令用于对两个操作数进行按位或运算,not指令用于对一个操作数进行按位非运算,xor指令用于对两个操作数进行按位异或运算。
控制转移指令用于控制程序的执行流程。
包括无条件转移指令、条件转移指令和循环指令。
无条件转移指令用于无条件地跳转到指定的地址,例如jmp指令;条件转移指令用于根据一些条件是否成立来进行跳转,例如je指令(跳转到指定地址,如果上一次比较操作相等);循环指令用于循环执行指定的指令块,例如loop指令。
I/O指令用于进行输入输出操作,包括从外部设备读取数据和将数据写入外部设备。
例如,in指令用于将输入端口的数据读取到指定的寄存器中,out指令用于将指定的寄存器中的数据写入到输出端口。
此外,8086还支持一些特殊的指令,如访问标志寄存器的指令,控制指令(如hlt指令、nop指令)和字符串指令(如movsb指令、cmpsb指令)等。
2_第3章 8086指令系统_加减运算指令比较指令52

3.4.2 算术运算指令
算术运算指令涉及两种类型数据,即无符号数和有符号数 对加法指令和减法指令而言,无符号和有符号数可采用同
一套指令,其先决条件有两个: 一是参加的操作数必须同为无符号数或同为有符号数 二是要采用不同标志位来检查无符号数和有符号数的 运算结果是否溢出
而乘除运算指令则需要区分无符号数和有符号数
11 11
ADC指令的使用价值
主要用于由于数据较大(多字节),需要多次运算的加法 运算中。 例:有两个4字节的无符号数相加:
2D568F8CH+3C9E489BH=? 设 被加数存放在BUF1开始的存储区内
加数存放在BUF2开始的存储区内 要求和放回BUF1存储区 假设CPU进行8位的加法运算,为此将进行4次加法运算
.386
……
MOVZX AX, A
MOVZX BX, B
ADD
AX, BX
MOVZX BX, C
ADD
AX, BX
MOV
SUM, AX
;取第一个数,扩展0传送 ;取第二个数 ;加第二个数 ;取第三个数 ;加第三个数 ;保存三个数的和
20 20
[例] P,Q,R均为8位有符号数,求它们的和,送入TOTAL
这个问题的另一种方法:
MOV AL, A
;取第一个数
MOV AH, 0
;高8位清零,准备存放和的高8位
ADD AL, B
;加第二个数
ADC AH, 0
;如果有进位,存入AH
ADD AL, C
;加第三个数
ADC AH, 0
;如果有进位,加入AH
MOV SUM, AX ;保存三个数的和
19 19
这个问题的第三种方法:
8086微处理器-指令系统思维导图,脑图

8086微处理器指令系统数据传送数据传送指令可完成寄存器与寄存器之间、寄存器与存储器之间以及寄存器与I/O 端口之间的字节或字传送,它们共同的特点是不影响标志寄存器的内容通用数据传送指令MOV 传送指令格式: MOV 目标,源指令功能:将源操作数(一个字节或一个字)传送到目标操作数。
源操作数可以是8/16位通用寄存器、段寄存器、存储器中的某个字节/字或者是8/16 位的立即数。
堆栈操作指令后进先出的规则存取信息堆栈指针信息存入堆栈时,堆栈指针将自动减量,并将信息存入堆栈指针所指出的存储单元当需要从堆栈中取出信息时,也将从堆栈指针所指出的存储单元读出信息,并自动将堆栈指针增量堆栈指针始终指向堆栈中最后存入信息的那个单元栈顶不断移动、动端堆栈区的另一端则是固定不变的栈底PUSH 入栈指令格式: PUSH 源指令功能:将源操作数压入堆栈。
源操作数可以是16 位通用寄存器、段寄存器或者是存储器中的数据字。
P38 例 2.12POP 出栈指令格式: POP 目标指令功能:将堆栈中当前栈顶和次栈顶中的数据字弹出送到目标操作数。
目标操作数可以是16 位通用寄存器、段寄存器或者是存储单元。
P39 例 2.13XCHG 交换指令1格式: XCHG 目标,源指令功能:将源操作数与目标操作数(一个字节或一个字)相互交换位置。
源操作数可以是通用寄存器或存储单元。
目标操作数只允许是通用寄存器。
P39 例 2. 14XLAT 换码指令2目标地址传送指令这是一类专用于传送地址码的指令,可用来传送操作数的段地址或偏移地址LEA 有效地址送寄存器指令格式: LEA 目标,源指令功能:将源操作数的有效地址EA 传送到目标操作数。
源操作数必须是存储器操作数。
目标操作数必须是16位通用寄存器。
LDS 指针送寄存器和DS指令格式: LDS 目标,源指令功能:从源操作数所指定的存储单元中取出某变扯的地址指针(共4 个字节),将其前两个字节(即变量的偏移地址)传送到目标操作数,后两个字节(即变量的段地址)传送到DS 段寄存器中。
第三章 8086的寻址方式和指令系统[3-4]
![第三章 8086的寻址方式和指令系统[3-4]](https://img.taocdn.com/s3/m/78ceee7227284b73f24250f3.png)
§3-3 8086的指令系统
3、循环控制指令(Iteration Control)
通常的循环控制
MOV CX, N ; N为循环次数 BEGIN: …. …. …. DEC CX JNZ BEGIN 用LOOP BEGIN替换
循环体
有了循环控制指令,上面程序简化为: MOV CX, N BEGIN: ……
单字节指令,总是被安排在中断服务程序的出口处。
任何中断服务程序不管是外部中断引起的,还是内部中断引起的 , 最后都要
用IRET返回。
举例:
主程序: CODE START: SEGMENT ASSUME CS:CODE, DS:CODE …… STI . . . ENDS END START 中断子程序: …… STI . . . CLI … STI IRET
微型计算机原理与接口技术
第 8讲 佘青山
86919130 qsshe@
There’s always more to learn, and there are always better ways to do what you’ve done
( 1 )无符号数比较测试指令中,指令助记符中的“ A”是英文 Above的缩写, 表示“高于”之意,“B”是英文Below的缩写,表示“低于”之意;
(2)带符号数比较测试指令中,指令助记符中的“G”(Great than)表示大于, “L”(Less than)表示小于。
12:16
17
§3-3 8086的指令系统
24
CODE
12:16
§3-3 8086的指令系统
6类指令系统:
数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RCR op1, 1 带进位位的循环右移 RCR op1, CL
reg mem reg mem
串 MOVSB 操 作 MOVSW 类
((DI)) ← ((SI)) (SI) ← (SI)±1, (DI) ← (DI)±1 ((DI)) ← ((SI)) (SI) ← (SI)±2, (DI) ← (DI)±2
SAR op1, 1 算术右移 SAR op1, CL
ROL op1, 1 循环左移 ROL op1, CL
ROR op1, 1 循环右移 ROR op1, CL
reg mem mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm reg, mem reg, reg reg, imm mem, imm acc, imm reg mem reg mem
9+22/rep 不重复:15 1 重复:
9+15/rep 1 不重复:15 重复:
9+15/rep
2
1
2
1
REPNE/REP (CX)=0 或(ZF)=1 退出重复,否则
NZ
(CX)←(CX)-1 并执行其后的串指令
ቤተ መጻሕፍቲ ባይዱ
string_instruc
控 JMP SHORT 无条件转移 制 op1 转 JMP NEAR 移 PTR op1 类 JMP FAR
reg mem
PTR op1
JMP WORD
PTR op1
JMP DWORD
PTR op1 JZ/JE op1 JNZ/JNE op1 JS op1
ZF=1 则转移 ZF=0 则转移 SF=1 则转移
JNS op1
SF=0 则转移
JP/JPE op1 PF=1 则转移
JNP/JPO op1 JC op1 JNC op1 JO op1
4/bit 不重复:18 1 重复:
9+17/rep 1 不重复:18 重复:
9+17/rep 不重复:11 1 重复:
9+10/rep 1 不重复:11 重复:
9+10/rep 不重复:12 1 重复:
9+13/rep 1 不重复:12 重复:
9+13/rep 不重复:22 1 重复:
9+22/rep 1 不重复:22 重复:
PF=0 则转移 CF=1 则转移 CF=0 则转移 OF=1 则转移
JNO op1
OF=0 则转移
JB/JNAE op1 CF =1 且 ZF=0 则转移
JNB/JAE op1 JBE/JNA op1 JNBE/JA op1 JL/JNGE op1
CF =0 或 ZF=1 则转移 CF =1 或 ZF=1 则转移 CF =0 且 ZF=0 则转移 SF⊕OF=1 则转移
8 位 reg 8 位 mem 16 位 reg 16 位 mem
(AL) ← AL 中 的 和 调 整 为 组 合
BCD (AL) ← AL 中 的 差 调 整 为 组 合
BCD
(AL) ← AL 中的和调整为非组合
BCD (AH) ← (AH)+调整产生的进位值
(AL) ← AL 中的差调整为非组合
((SI)) - ((DI)) (SI) ← (SI)±2, (DI) ← (DI)±2
SCASB SCASW
(AL) - ((DI)) (DI) ← (DI)±1 (AX) ← ((DI)) (DI) ← (DI)±2
REP string_instruc REPE/REPZ string_instruc
(dst) ← (dst) ∨ (src)
acc, imm mem, reg
reg, mem
reg, reg
reg, imm
mem, imm
acc, imm
80 ~ 98
(86
~
104)+EA
128 ~ 154
(134 ~
160)+EA
80 ~ 90
(86
~
96)+EA
144 ~ 162
(150 ~
IMUL src
DIV src
IDIV src
DAA DAS AAA AAS AAM AAD 逻 AND dst, src 辑 运 算 类 OR dst, src
(AX) ← (AL) * (src) (DX, AX) ← (AX) * (src)
8 位 reg 8 位 mem 16 位 reg 16 位 mem
2 2~4 2~4 2~4 2 3~4 3~6 2~3 2~4 2 3~4 3~6 2~3 2 2~4 2 2~4
2 2~4 2 2~4
2 2~4 2 2~4
2 2~4 2 2~4
2 2~4 2 2~4
2 2~4 2 2~4
RCL op1, 1 带进位位的循环左移 RCL op1, CL
reg mem reg mem
16+EA
9+EA
3
4
17+EA
4
16+EA
9+EA
3
4
17+EA
4
2~3
15+EA
16+EA
9+EA
3
4
17+EA
4
16+EA
9+EA
3
4
17+EA
4
2~3
15+EA
3
16+EA
9+EA
9+EA
3
4
10+EA
4
70 ~ 77
(76
~
83)+EA
118 ~ 133
(124 ~
139)+EA
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~3 2~4 2~4 2 3~4 3~6 2~3 1~2 2~4 2 2~4 2~4 2~4 2 3~4 3~6 2~3 2 2~4 2 2~4
ADC dst, src (dst) ← (src) + (dst) + CF
INC op1
(op1) ← (op1)+1
SUB dst, src (dst) ← (src) - (dst)
SBB dst, src (dst) ← (src) - (dst) - CF
DEC op1
(op1) ← (op1) - 1
(CX)=0 退出重复,否则(CX) ← (CX)-1 并执行其后的串指令 (CX)=0 或(ZF)=0 退出重复,否则 (CX)←(CX)-1 并执行其后的串指令
2
2
15+EA 2 ~ 4
8 + 4/bit 2
20+EA+ 2 ~ 4
4/bit
2
2
15+EA 2 ~ 4
8 + 4/bit 2
20+EA+ 2 ~ 4
(AL) ← (AX) / (src) 的商 (AH) ← (AX) / (src) 的余数 (AX) ← (DX, AX) / (src) 的商 (DX) ← (DX, AX) / (src) 的余数
8 位 reg 8 位 mem 16 位 reg 16 位 mem
(AL) ← (AX) / (src) 的商 (AH) ← (AX) / (src) 的余数 (AX) ← (DX, AX) / (src) 的商 (DX) ← (DX, AX) / (src) 的余数
BCD (AH) ← (AH)-调整产生的进位值
(AX) ← AX 中的积调整为非组合
BCD (AL) ← (AH) * 10 + (AL) (AH) ← 0 (注意是除法进行前调整被除数) (dst) ← (dst) ∧ (src)
mem, reg
reg, mem
reg, reg
reg, imm
mem, imm
reg, mem reg, mem
11 2+EA 16+EA
1 2~4 2~4
reg, mem 16+EA 2 ~ 4
4
1
4
1
10
1
POPF
算 ADD dst, src 术 运 算 类
(FR 低字节) ← ((SP)+1, (SP)) (SP) ← (SP)+2 (dst) ← (src) + (dst)
NEG op1
(op1) ← 0 - (op1)
CMP op1, (op1) - (op2) op2
MUL src
(AX) ← (AL) * (src) (DX, AX) ← (AX) * (src)
8
1
mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm reg mem mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm reg mem reg mem mem, reg reg, mem reg, reg reg, imm mem, imm acc, imm 8 位 reg 8 位 mem 16 位 reg 16 位 mem
NOT op1 XOR dst, src