8086指令系统一览表

合集下载

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

ch3-3 8086指令系统(算术运算与逻辑运算)
AL×OPRD AX
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)的指令系统

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

8086CPU指令系统

8086CPU指令系统

3.3.2 算术运算类指令
1.加法指令
(2)带进位加法指令ADC
【指令格式】ADC dst,src 【指令功能】(dst) ← (dst)+(src)+(CF) ADC指令在格式和功能上都与ADD指令类似,只是相加时要 把进位标志CF的当前值加到和中,结果送到目的操作数中。 【用途】ADC指令主要用于多字节加法运算。 例如,有两个4字节的无符号数相加,由于8086加法指令最 多只能进行16位的加法运算,我们可将加法分两次进行,先 进行低16位相加,然后再进行高16位相加,在完成高16位 相加时,注意要把低16位相加时可能出现的进位位加进去。
•堆栈操作指令PUSH和POP
由于堆栈顶部是浮动的,为了指示现在堆栈中存放数据的位 置,通常设置一个指针,即堆栈指针SP,始终指向堆栈的顶部。 这样,堆栈中数据的进出取决于SP。当将数据(1个字节)推 入堆栈时,SP自动减1,向上浮动而指向新的栈顶;当将数据 从堆栈弹出时,SP自动加1,向下浮动而指向新的栈顶。 堆栈有建栈、进栈和出栈3种基本操作。 ⑴建栈
出栈操作都是以字为单位的,即每次在堆栈中存取数据均是两 个字节(先存入高字节,再存入低字节,仍然遵循“高字节在 高地址,低字节在低地址”的原则)。
【指令格式】PUSH opr 【指令功能】PUSH指令将16位的源操作数推入堆栈,而目标
地址为当前栈顶,即由SP指示的单元。PUSH指令操作如下: ①(SP)←(SP)-2 ②((SP)+1: (SP) ) ← opr
③代码段寄存器CS和指令指针寄存器IP不能作为目的 操作数,但CS可以作为源操作数.
④立即数不能作为目的操作数. ⑤不能用立即寻址方式给段寄存器传数. ⑥段寄存器之间不能用MOV指令直接传送. ⑦在传送字单元时,遵循“高字节在高地址,低字节在 低地址”的原则。

8086汇编指令大全.

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指令系统

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指令系统总结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

2_第3章 8086指令系统_加减运算指令比较指令52
4
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指令系统一览表

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

8086-8088 CPU的指令系统算术运算指令

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指令

8086指令
(ds:src+2)->es
第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指令系统(最后有练习题)

第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的指令系统

第三章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)和操作数两部分。

第三章基本指令系统

第三章基本指令系统

注:该指令用在多字节加法运算中。
28
例:两个4字节无符号数相加,两数分别在2000H、3000H开 始的内存单元,和放在2000H开始的4个内容单元。
MOV SI, 2000H MOV AX, [SI] MOV DI, 3000H ADD AX, [DI] MOV [SI], AX MOV AX, [SI+2] ADC AX, [DI+2] MOV [SI+2], AX ;SI指向一加数首址 2000H ;AX 8423H ;DI指向另一加数首址 ;AX 8423H+7F00H ;低16位和送[2000H][2001H] ;AX 1000H 3000H ;AX 1000H+2000H+CF ;高16位和送[2002H][2003H]
4)DST、SRC长度要一致。
MOV AL, BX ()
5) DST 不能是立即数 MOV 1000H, AX () 6)DST、SRC 不能同时为存储器寻址 MOV [1000H], [3000H] () 7)MOV指令不破坏源操作数
6
一、通用传送指令——XCHG
2、XCHG 格式:XCHG OPR1, OPR2 ; OPR1 OPR2 功能:两操作数内容相交换。 例: XCHG BL, AL ;两寄存器内容交换(字节交换)
第三章基本指令系统指令系统8086指令系统什么是指令系统cpu指令系统mcs51指令系统指令系统层指令系统的作用微处理器的指令系统指令系统就是指令吗
第三章 8086CPU基本指令系统
3.1 数据传送指令 3.2 算术运算指令
3.3 十进制调整指令
3.4 逻辑运算指令和移位指令 3.5 处理器控制指令
27
一、加法指令——ADC

8086指令系统一览表

8086指令系统一览表
2 ~ 4
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

第3章80888086指令系统(老师用的课件哦)

第3章80888086指令系统(老师用的课件哦)

第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
附录
附录一ASCII码表
附录二8086指令系统一览表
类型
汇编指令格式
功能
操作数说明
时钟周期数
字节数





MOV dst, src
(dst)←(src)
mem, reg
reg, mem
reg, reg
reg, imm
mem, imm
seg, reg
seg, mem
mem, seg
reg, seg
mem, acc
mem, imm
acc, imm
16+EA
9+EA
3
4
17+EA
4
2 ~ 4
2 ~ 4
2
3 ~ 4
3 ~ 6
2 ~ 3
TEST op1, op2
(op1)∧(op2)
reg, mem
reg, reg
reg, imm
mem, imm
acc, imm
9+EA
3
5
11+EA
4
2 ~ 4
2
3 ~ 4
3 ~ 6
(SP)←(SP)+2
reg
seg
mem
8
8
17+EA
1
1
2 ~ 4
XCHG op1, op2
(op1)←→(op1)
reg, mem
reg, reg
reg, acc
17+EA
4
3
2 ~ 4
2
1
IN acc, port
IN acc, DX
(acc)←(port)
(acc)←((DX))
10
8
2
1
OUT port, acc
reg, imm
mem, imm
acc, imm
16+EA
9+EA
3
4
17+EA
4
2 ~ 4
2 ~ 4
2
3 ~ 4
3 ~ 6
2 ~ 3
DEC op1
(op1)←(op1) - 1
reg
mem
2 ~ 3
15+EA
1 ~ 2
2 ~ 4
NEG op1
(op1)←0 - (op1)
reg
mem
3
16+EA
2
1
1
CMPSB
CMPSW
((SI)) - ((DI))
(SI)←(SI)±1, (DI)←(DI)±1
((SI)) - ((DI))
(SI)←(SI)±2, (DI)←(DI)±2
不重复:22
重复:9+22/rep
不重复:22
重复:9+22/rep
1
1
SCASB
SCASW
(AL) - ((DI))
(DI)←(DI)±1
(AX)←((DI))
(DI)←(DI)±2
不重复:15
重复:9+15/rep
不重复:15
重复:9+15/rep
1
1
REP string_instruc
(CX)=0退出重复,否则(CX)←(CX)-1并执行其后的串指令
2
1
REPE/REPZstring_instruc
(CX)=0或(ZF)=0退出重复,否则(CX)←(CX)-1并执行其后的串指令
acc, mem
9+EA
8+EA
2
4
10+EA
2
8+EA
9+EA
2
10
10
2 ~ 4
2 ~ 4
2
2 ~ 3
3 ~ 6
2
2 ~ 4
2 ~ 4
2
3
3
PUSH src
(SP)←(SP)-2
((SP)+1, (SP))←(src)
reg
seg
mem
11
10
16+EA
1
1
2 ~ 4
POP dst
(dst)←((SP)+1, (SP))
mem, reg
reg, mem
reg, reg
reg, imm
mem, imm
acc, imm
16+EA
9+EA
3
4
17+EA
4
2 ~ 4
2 ~ 4
2
3 ~ 4
3 ~ 6
2 ~ 3
SBB dst, src
(dst)←(src) - (dst) - CF
mem, reg
reg, mem
reg, reg
mem, imm
acc, imm
16+EA
9+EA
3
4
17+EA
4
2 ~ 4
2 ~ 4
2
3 ~ 4
3 ~ 6
2 ~ 3
NOT op1
(op1)←( )
reg
mem
3
16+EA
2
2 ~ 4
XOR dst, src
(dst)←(dst)⊕(src)
mem, reg
reg, mem
reg, reg
reg, imm
(DI)←(DI)±1
((DI))←(AX)
(DI)←(DI)±2
不重复:11
重复:9+10/rep
不重复:11
重复:9+10/rep
1
1
LODSB
LODSW
(AL)←((SI))
(SI)←(SI)±1
(AX)←((SI))
(SI)←(SI)±2
不重复:12
重重复:9+13/rep
2
2 ~ 4
ROL op1, 1
ROL op1, CL
循环左移
reg
mem
reg
mem
2
15+EA
8 + 4/bit
20+EA+ 4/bit
2
2 ~ 4
2
2 ~ 4
ROR op1, 1
ROR op1, CL
循环右移
reg
mem
reg
mem
2
15+EA
8 + 4/bit
20+EA+ 4/bit
2
2 ~ 4
(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)←目的段基址
PF=0则转移
16/4
2
JC op1
CF=1则转移
16/4
2
JNC op1
CF=0则转移
16/4
2
JO op1
OF=1则转移
16/4
2
JNO op1
OF=0则转移
16/4
2
JB/JNAE op1
CF =1且ZF=0则转移
16/4
2
JNB/JAE op1
CF =0或ZF=1则转移
16/4
2
JBE/JNA op1
2
2 ~ 4
SHR op1, 1
SHR op1, CL
逻辑右移
reg
mem
reg
mem
2
15+EA
8 + 4/bit
20+EA+ 4/bit
2
2 ~ 4
2
2 ~ 4
SAR op1, 1
SAR op1, CL
算术右移
reg
mem
reg
mem
2
15+EA
8 + 4/bit
20+EA+ 4/bit
2
2 ~ 4
mem, reg
reg, mem
reg, reg
reg, imm
mem, imm
acc, imm
16+EA
9+EA
3
4
17+EA
4
2 ~ 4
2 ~ 4
2
3 ~ 4
3 ~ 6
2 ~ 3
INC op1
(op1)←(op1)+1
reg
mem
2 ~ 3
15+EA
1 ~ 2
2 ~ 4
SUB dst, src
(dst)←(src) - (dst)

ADD dst, src
(dst)←(src) + (dst)
mem, reg
reg, mem
reg, reg
reg, imm
mem, imm
acc, imm
16+EA
9+EA
3
4
17+EA
4
2 ~ 4
2 ~ 4
2
3 ~ 4
3 ~ 6
2 ~ 3
ADC dst, src
(dst)←(src) + (dst) + CF
16/4
2
相关文档
最新文档