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]
§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类指令系统:
数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令
8086-8088 CPU的指令系统算术运算指令
微机原理
OP1 OP2
运算器
F
(a)
OP1 OP2
运算器
F
(b)
微机原理
⑵ ADC 带进位加法指令 指令格式:ADC DST,SRC 执行操作:(DST)←(SRC)+(DST)+CF 影响的标志位:OF、SF、ZF、AF、PF、CF ⑶ INC 加1指令 指令格式:INC OPR 执行操作:(OPR)←(OPR)+1。 影响的标志位:OF、SF、ZF、AF、PF。
⑵ IDIV 带符号数除法指令
指令格式:IDIV SRC 执行操作:与DIV相同,但操作数必须是带符号数,商 和余数也均为带符号数,用补码表示
⑶ CBW 字节转换为字指令 格式:CBW 执行操作:将AL的符号位扩展到整个AH 若AL的符号位为0,则AH←00H 若AL的符号位为1,则AH←0FFH 对标志位的影响:不影响标志位
微机原理
3.乘法指令 ⑴ MUL 无符号数乘法指令 指令格式:MUL SRC 执行操作: 字节操作数 AX←AL×(SRC)。 字操作数 DX,AX←AX×(SRC)。 对标志位的影响:OF、CF ⑵ IMUL 有符号数乘法指令 指令格式:IMUL SRC 执行操作:字节操作数AX←AL×(SRC)
微机原理
5.十进制调整指令 ⑴压缩的BCD码调整指令 ① DAA 加法的十进制调整指令 指令格式:DAA 执行操作:AL←加法结果AL的内容调整到压 缩的BCD码格式 标志位的影响:SF、ZF、AF、PF、CF
例:MOV AL, 28H MOV BL, 68H ADD AL, BL DAA
微机原理
MOV AL,08H
AAD
AL= 44H
AH=0
微型计算机基本原理与接口技术
8086指令
第3章
3.3.3 标志寄存器传送指令
8088/8086MPU的指令系统
标志寄存器传送(有四条标志传送指令) HF (Load AH from FLAG)读取标志指令
将标志寄存器中的 SF、ZF、AF、PF和CF(即低8位)传送至AH寄存器的指
定位,空位没有定义。 2.SAHF (Store AH to FLAG)设置标志指令
对堆栈有两种操作:入栈,出栈
①入栈,也叫压栈,是把一个16位数据推入栈中 压栈的操作顺序: SP 的内容先减 2 ,指示一个新的字单元 ,然后再把该压的字压入这个单元中。 例如:设AX内容为1234H,栈的数据为(SS)=2000H, (SP)=0108H,将AX内容压入堆栈。 由图可见,压栈前(SP)=0108H,压栈后(SP)=0106 H,SP永远指示栈顶。
功能:带进位的加法,将源操作数、目的操作数以及标志寄存器中的进位标 志位CF相加,并将和放入目的操作数中。 DSTSRC+DST+CF 格式3:INC OPR
功能:将目的操作数加1,放入目的操作数中. OPROPR+1
第3章
8088/8086MPU的指令系统
注意事项:
ADD和ADC指令是双操作数指令,它们的两个操作数不能
位。
• 2 、编写执行双精度数( DX,CX) 和( BX,AX) 相加的指令 序列。 • 3、写出25H*65H的运算指令序列。 • 4、用指令实现将AL的高4位清0.
CF
OF=1 1
乘积高一半不为0
对于IMUL,CF OF=0 0
乘积的高一半为低一半的符号 扩展.
CF OF=1 1 其他情况.
第3章
第3章 8086指令系统(最后有练习题)
开 始
8086CPU的指令系统的基本指令
包括数据传送类指令、算术运算类指令、 位操作类指令、串操作类指令、控制转移 类指令、处理机控制类指令。后几节将分 别介绍这些指令的语句格式和功能。
3.1 8086的寻址方式
3.1.1 数据的寻址方式 3.1.2 程序转移地址的寻址方式 3.1.3 对端口的寻址方式
3.1.2 程序转移地址的寻址方式
用来确定转移指令及CALL指令的转向地址。
段内寻址
段内直接寻址 段内间接寻址 段间直接寻址 段间间接寻址
段间寻址
段内:转移指令与转向的目标指令在同一代码段 中,(CS)不变。
段间:转移指令与转向的目标指令在两个代码段中, (CS) 变化。
表示转移距离(称为位移量)的操作符:
返回本节
2 . 寄存器寻址
寄存器寻址方式的操作数在指令指明的寄 存器中。 汇编格式:R ,其中R表示寄存器名。 功能:操作数直接存放在寄存器R中。 例如:MOV AL,BL
【例3-2】下列程序执行后,(AX)=?,
(BX)=?
MOV AX,1234H
MOV BX,5678H
ADD AX,BX 执行:1234H→AX 5678H→BX (AX)+(BX)→AX 执行后:(AX)=68ACH,(BX)=5678H
3 . 直接寻址
特点:操作数在内存中。 汇编格式:①含有变量的地址表达式。 ②段寄存器名:[EA] 。 功能:指令下一字单元的内容是操作数的偏 移地址EA。 图形表示:
【例3-3】
寄存器和存储器内容为:(AX)=1212H, (DS)=3000H,(32000H)=45H, (32001H)=46H。 执行指令:MOV AX ,[2000H] 问执行后:(AX)=? Step1:计算地址DS*16+2000H=32000H Step2:找内容(32000H),(32001H) 所以执行后:(AX)=4645H
第三次课 8086的指令系统
第三章8086的指令系统3.1 8086指令系统概述所谓一个微处理器的指令系统是一个微处理器所执行的全部指令的集合。
在8086的指令系统中一共有133条指令。
8086指令系统是在8位微处理器8080/8085的指令系统基础上设计的,它兼容了8080/8085的全部指令,这部分对8位微处理器具有兼容性的指令往往是处理字节(8位)的。
此外,8086还有自己所特有的对字或字符串的处理指令,以及对带符号数的运算指令、中断指令和协处理器指令。
对微处理器的指令的描述,一般有两种表示方法:指令的机器码和汇编指令。
无论对于机器码指令还是对于汇编指令均要解决三个问题(三个信息)(1)指令要完成什么操作(操作码);(2)参加这个操作的操作数在哪里(操作数);(3)操作结果放在哪里(结果);为了简化指令,通常在微机系统中规定:操作结果要放在某一个操作数中。
如MOV AL,08H;ADD AX,BX;(源操作数,目标操作数)这样,就将指令所要提供的信息简化为了两部分:操作码、操作数。
指令的机器码就是用二进制码描述指令的操作码和操作数的一种方式,实际上在微机系统内部,指令就是以机器码的形式存在的。
所谓的汇编指令是用指令功能的英文缩写表示操作码,用数字和符号表示操作数的指令描述方法。
例如操作码操作数MOV AX,2000H操作码B8H操作数:00H20H由于汇编语言程序有便于理解、识别、阅读和交流的优点。
所以汇编指令得到了广泛的应用。
但由于最终在机器中使用的是机器码,所以要有一个中间环节就是对其进行翻译。
3.2 8086指令的寻址方式所谓寻址方式就是寻找操作数的方式,所以寻址方式实际上在两种情况下被涉及:一种是用来对操作数进行寻址;另一种是对转移地址和调用地址进行寻址。
下面我们所讨论的寻址方式都是针对操作数的,关于指令地址的寻址,将在讲述转移指令和调用指令时作具体说明。
一条指令的机器码通常包含操作码(OP)和操作数两部分。
8086指令系统一览表
CMP op1, op2
(op1) - (op2)
mem, reg
reg, mem
reg, reg
reg, imm
mem, imm
acc, imm
9+EA
9+EA
3
4
10+EA
4
2 ~ 4
2 ~ 4
2
3 ~ 4
3 ~ 6
2 ~ 3
MUL src
(AX)←(AL) * (src)
(DX, AX)←(AX) * (src)
(IP)←(IP) + D16
段内间接:(SP)←(SP)-2
((SP)+1, (SP))←(IP)
(IP)←EA
段间直接:(SP)←(SP)-2
((SP)+1, (SP))←(CS)
(SP)←(SP)-2
((SP)+1, (SP))←(IP)
(IP)←目的偏移地址
(CS)←目的段基址
16位reg
16位mem
80 ~ 90
(86 ~ 96)+EA
144 ~ 162
(150 ~ 168)+EA
2
2 ~ 4
2
2 ~ 4
IDIV src
(AL)←(AX) / (src)的商
(AH)←(AX) / (src)的余数
(AX)←(DX, AX) / (src)的商
(DX)←(DX, AX) / (src)的余数
(86 ~ 104)+EA
128 ~ 154
(134 ~ 160)+EA
2
2 ~ 4
2
2 ~ 4
8086及8088指令系统1(寻址方式)
助记符
数据传送 MOV,PUSH/POP,XCHG等
8088/8086的操作数分为 类 的操作数分为4类 的操作数分为
操作数
数据(立即数) 数据(立即数) 地址: 寄存器(名称 存储器单元(地址) 名称)、 地址 寄存器 名称 、存储器单元(地址) I/O接口的端口(地址) 接口的端口( 接口的端口 地址)
3、存储器操作数
表示当前参加运算的数存放在存储器的某1/2/4个单元中 个单元中 表示当前参加运算的数存放在存储器的某
类型
字节 存储器操作数 字 双字
存储单元个数
1 2 4
11
一般不允许两个操作数同时为存储器操作数 一般不允许两个操作数同时为存储器操作数 不允许两个
存储单元的物理地址 存储单元的物理地址 = 段基地址×16 + 偏移地址
15
3.2
8086的寻址方式 8086的寻址方式
寻址方式——寻找操作数的方法 寻址方式 寻找操作数的方法
寻找操作数的地址(一般指源操作数) 寻找要执行的下一条指令的地址 在8086指令系统中,操作数所在地址的寻址 方式可分为8种:
①立即寻址 ②直接寻址 ③寄存器寻址 ④寄存器间接寻址 ⑤ 寄存器相对寻址 ⑥基址-变址寻址 ⑦相对的基址-变址寻址 ⑧隐含寻址
,立即 存放在
存的
码 中18
3.2.3 寄存器寻址
操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例: MOV MOV MOV 错误例: 错误例: × MOV × MOV AX, BX [3F00H], AX CL, AL AX, BL ES: AX, DX ; 字长不同 ; 寄存器与段无关
8088/8086指令系统 指令系统: 指令系统 系列) (1)指令向后兼容(x86系列) )指令向后兼容( 系列 (2)应用广泛,资料易于寻找 )应用广泛,
- 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