微机原理8086指令系统表
合集下载
微机原理(杭州电子科技大学【4】8086系统结构[2-3]
![微机原理(杭州电子科技大学【4】8086系统结构[2-3]](https://img.taocdn.com/s3/m/3b8cd1f4f90f76c661371a65.png)
15:28
22
二、系统的复位与启动
【8086CPU时序】
① 复位信号:通过RESET引脚上的触发信号来引起8086系统复位和启
动,RESET至少维持4个时钟周期的高电平。
② 复位操作:当RESET信号变成高电平时,8086/8088CPU结束现行
操作,各个内部寄存器复位成初值。
标志寄存器
清零
指令寄存器 CS寄存器 DS寄存器 SS寄存器 ES寄存器
的比例倍频后得到CPU的主频,即: CPU主频 = 外频 × 倍频系数
⑥ PC机各子系统时钟(存储系统,显示系统,总线等)是由系统频率按 照一定的比例分频得到。
15:28
5
内频 550MHz Pentium III
倍频系数5.5
L1 Cache
L2 550MHz Cache
处理机总线 100MHz
微机原理与接口技术
第四讲
15:28
第二章 8086系统结构
内容提要
z微型计算机的发展概况 z8086CPU内部结构 z8086CPU引脚及功能 z8086CPU存储器组织 z8086CPU系统配置 z8086CPU时序
15:28
2
※有关概念介绍
z 主频,外频,倍频系数 z T状态 z 总线周期 z 指令周期 z 时序 z 时序图
总线操作
读存储器操作 (取操作数)
写存储器操作 (将结果存放到内存)
读 I/O 端口操作 (取 I/O 端口中的数)
写 I/O 端口操作 (往 I/O 端口写数)
中断响应操作
总线周期
存储器读周期 存储器写周期 I/O 端口读周期 I/O 端口写周期 中断响应周期
15:28
《微机原理》8086与PC(2-2)

特殊屏蔽方式:在高级中断服务程序执行过程中,允
许临时开放对低优先级中断源的服务
8259A的工作方式(续)
中断结束方式
中断自动结束方式:ISR中在响应时自动置1的位在进
入中断服务程序后自动清0
一般中断结束方式:在全嵌套方式下,EOI命令中不
指定结束的中断级,约定结束ISR中的最高优先级中 断,对应位将被复位
中断向量表的构成
中断向量表:把所有中断源的中断向量集中在
一起,形成中断向量表
8086在内存中地址为00000H~003FFH的 存储区内建立中断向量表,共存放256个中断向 量,每个向量占4个字节,IP在低地址单元、 CS在高地址单元
此表的查询索引为中断类型号
中断类型号及其获取
中断类型号:系统分配给每个中断源的代
为I/O设备服务
中断服务程序执行 中断返回(IRET)
断点和FLAGS从 堆栈中弹出(断点恢复)
恢复现场
给中断控制器发中 断结束(EOI)命令
回到中断前运行 的程序继续执行
中断传送流程
返回
8259A芯片
可编程中断控制器8259A主要功能为:
(1)对8个外部中断源进行管理,具有8级优 先权控制,通过级连可扩展至64级优先权控制。
五、8253/8254定时/计数器
主要功能
3个独立的16位计数器 每个计数器可以按二进制或BCD码计数 计数速率可达2MHz(8254-2达10MHz) 每个计数器有6种工作方式,可编程设置和改
变 输入输出引脚与TTL电平兼容
8253内部结构图
计数器结构
8253有三个独立的计数器(计数通道)
计数初值寄存器(16位)
先读写最低有效字节再
读写最高有效字节
许临时开放对低优先级中断源的服务
8259A的工作方式(续)
中断结束方式
中断自动结束方式:ISR中在响应时自动置1的位在进
入中断服务程序后自动清0
一般中断结束方式:在全嵌套方式下,EOI命令中不
指定结束的中断级,约定结束ISR中的最高优先级中 断,对应位将被复位
中断向量表的构成
中断向量表:把所有中断源的中断向量集中在
一起,形成中断向量表
8086在内存中地址为00000H~003FFH的 存储区内建立中断向量表,共存放256个中断向 量,每个向量占4个字节,IP在低地址单元、 CS在高地址单元
此表的查询索引为中断类型号
中断类型号及其获取
中断类型号:系统分配给每个中断源的代
为I/O设备服务
中断服务程序执行 中断返回(IRET)
断点和FLAGS从 堆栈中弹出(断点恢复)
恢复现场
给中断控制器发中 断结束(EOI)命令
回到中断前运行 的程序继续执行
中断传送流程
返回
8259A芯片
可编程中断控制器8259A主要功能为:
(1)对8个外部中断源进行管理,具有8级优 先权控制,通过级连可扩展至64级优先权控制。
五、8253/8254定时/计数器
主要功能
3个独立的16位计数器 每个计数器可以按二进制或BCD码计数 计数速率可达2MHz(8254-2达10MHz) 每个计数器有6种工作方式,可编程设置和改
变 输入输出引脚与TTL电平兼容
8253内部结构图
计数器结构
8253有三个独立的计数器(计数通道)
计数初值寄存器(16位)
先读写最低有效字节再
读写最高有效字节
计算机微机原理8086指令

8086从功能上分成两大部分: 总线接口单元BIU(Bus Interface Unit) 执行单元EU (Execution Unit)
7
总线接口单元BIU (Bus Interface Unit)
负责8086CPU与存储器和I/O设备 功能: 间的信息传送。
8
执行单元EU (Execution Unit)
14
通用寄存器的名称与符号
① AX (Accumulator) --累加器
② BX (Base) --基址寄存器
③ CX (Count) --计数寄存器 ④ DX (Data) --数据寄存器 ⑤ SI (Source Index)是源变址寄存器
数据寄存器
⑥ DI (Destination Index)是目的变址寄存器
38
物理地址和逻辑地址的转换
由于段地址一般存放在段寄存器,所以物理地 址和逻辑地址的转换关系也可表示为: (段寄存器) (CS) 物理地址= (DS) (SS ) 左移4位 + 偏移地址
(ES)
逻辑地址的形式为 段寄存器:偏移地址
39
段寄存器
8086有4个16位专门存放段地址的段寄存器 CS--(Code Segment)(代码段)指明代码段的起 始地址 SS-- (Stack Segment)(堆栈段)指明堆栈段的起 始地址 DS-- (Data Segment)(数据段)指明数据段的起 始地址 ES-- (Extra Segment)(附加段)指明附加段的起 始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻 辑段均有各自的用途
27
数据信息的表达单位
计算机中信息的单位 二进制位Bit:存储一位二进制数:0或1, 记做b 字节Byte:8个二进制位,D7~D0,记做B 字Word:16位,2个字节,D15~D0 双字DWord:32位,4个字节,D31~D0
7
总线接口单元BIU (Bus Interface Unit)
负责8086CPU与存储器和I/O设备 功能: 间的信息传送。
8
执行单元EU (Execution Unit)
14
通用寄存器的名称与符号
① AX (Accumulator) --累加器
② BX (Base) --基址寄存器
③ CX (Count) --计数寄存器 ④ DX (Data) --数据寄存器 ⑤ SI (Source Index)是源变址寄存器
数据寄存器
⑥ DI (Destination Index)是目的变址寄存器
38
物理地址和逻辑地址的转换
由于段地址一般存放在段寄存器,所以物理地 址和逻辑地址的转换关系也可表示为: (段寄存器) (CS) 物理地址= (DS) (SS ) 左移4位 + 偏移地址
(ES)
逻辑地址的形式为 段寄存器:偏移地址
39
段寄存器
8086有4个16位专门存放段地址的段寄存器 CS--(Code Segment)(代码段)指明代码段的起 始地址 SS-- (Stack Segment)(堆栈段)指明堆栈段的起 始地址 DS-- (Data Segment)(数据段)指明数据段的起 始地址 ES-- (Extra Segment)(附加段)指明附加段的起 始地址 每个段寄存器用来确定一个逻辑段的起始地址,每种逻 辑段均有各自的用途
27
数据信息的表达单位
计算机中信息的单位 二进制位Bit:存储一位二进制数:0或1, 记做b 字节Byte:8个二进制位,D7~D0,记做B 字Word:16位,2个字节,D15~D0 双字DWord:32位,4个字节,D31~D0
微机原理课件第二章 8086系统结构

但指令周期不一定都大于总线周期,如MOV AX,BX
操作都在CPU内部的寄存器,只要内部总线即可完成,不 需要通过系统总线访问存储器和I/O接口。
2021/8/17
17
• 8086CPU的典型总线时序,充分体现了总 线是严格地按分时复用的原则进行工作的。 即:在一个总线周期内,首先利用总线传 送地址信息,然后再利用同一总线传送数 据信息。这样减少了CPU芯片的引脚和外 部总线的数目。
• 执行部件(EU)
• 功能:负责译码和执行指令。
2021/8/17
5
• 联系BIU和EU的纽带为流水指令队列
• 队列是一种数据结构,工作方式为先进先出。写入的指令 只能存放在队列尾,读出的指令是队列头存放的指令。
2021/8/17
6
•BIU和EU的动作协调原则 BIU和EU按以下流水线技术原则协调工作,共同完成所 要求的任务: ①每当8086的指令队列中有空字节,BIU就会自动把下 一条指令取到指令队列中。 ②每当EU准备执行一条指令时,它会从BIU部件的指令 队列前部取出指令的代码,然后译码、执行指令。在执 行指令的过程中,如果必须访问存储器或者I/O端口, 那么EU就会请求BIU,完成访问内存或者I/O端口的操 作; ③当指令队列已满,且EU又没有总线访问请求时,BIU 便进入空闲状态。(BIU等待,总线空操作) ④开机或重启时,指令队列被清空;或在执行转移指令、 调用指令和返回指令时,由于待执行指令的顺序发生了 变化,则指令队列中已经装入的字节被自动消除,BIU会 接着往指令队列装入转向的另一程序段中的指令代码。 (EU等待)
•CF(Carry Flag)—进位标志位,做加法时最高位出现进位或 做减法时最高位出现借位,该位置1,反之为0。
微机原理16位32位CPU(8086)

中 断 允 许
半 进 借 位 标 志
奇 偶 标 志
进 借 位 标 志
1-有进、借位 0-无进、借位
1-低4位向高4位有进、借位 0-低4位向高4位无进、借位
④标志寄存器
根据功能,标志可以分为两类:状态标志和控制标志
状态标志:表示前面的操作执行后,ALU所处的状态,这种状态像某 种先决条件一样影响后面的操作。 控制标志:表示对某一种特定的功能起控制作用。指令系统中有专门 的指令用于控制标志的设置和清除。 状态标志有6个,即SF、ZF、AF、PF、CF和OF ①符号标志SF(Sign Flag) 和运算结果的最高位相同。表示前面运
若TF=0 正常执行程序
返回
④标志寄存器
举例:
+ 0101 0100 0011 1001 0100 0111 0110 1010
3.8086的总线周期的概念
为了取得指令或传送数据,就需要CPU的总线接口部件执行一个 总线周期。 总线周期(机器周期):CPU通过总线与存储器或I/O接口进行一 次数据传输所需的时间。 在8086/8088中,一个最基本的总线周期由4个时钟周期组成,将4
80386
80486 Pentium Pentium IV
32
32 32 32
27.5万
120万 310万 4200万
12.5M,后提高到 20M,25M,33M
25MHz逐步提高到 33MHz、50MHz 60MHZ和66MHZ, 后提高到200MHZ 2.4G
0.1us
2.1 16位微处理器8086
式下各位引脚功能,如出现功能不同的引脚再具体讲解 。
DIP双列直插式封装
QFP塑料方型扁平式封装
Pentium4 3.2GHz LGA775 栅格阵列封装
微机原理接口技术03_指令系统

3.2.1 数据的寻址方式
基址变址寻址同样适用于数组或表格处理,首地 址存放在基址寄存器中,变址寄存器访问数组中各元
素。因两个寄存器都可以修改,所以它比寄存器相对
寻址方式更灵活。需要注意的是,两个寄存器不能均 为基址寄存器,也不能均为变址寄存器。
3.2.1 数据的寻址方式
7.基址变址相对寻址 (Relative Based Indexed Addressing) 操作数的有效地址为指令中规定的1个基址寄存 器和1个变址寄存器的内容及指令中指定的位移量三 者之和。 位移量[基址寄存器][变址寄存器] 可以表示成多种形式组合。寻址寄存器要放在方括 号中。
3.2.1 数据的寻址方式
4.寄存器间接寻址(Register Indirect Addressing) 操作数的有效地址存放在基址寄存器或变址寄存 器中,而操作数则在存储器中。对16位数进行寄存器 间接寻址时可用的寄存器是基址寄存器BX、BP和变 址寄存器SI、DI。使用BP时默认的段寄存器为SS, 使用其他寄存器默认的段寄存器为DS。 操作数有效地址格式为:[间接寻址的寄存器]。 寻址寄存器放在方括号中。
CPU执行指令时,指令是按顺序存放在存储器 中的,而程序执行顺序是由CS和IP的内容来决定的。 当程序执行到某一转移或调用指令时,需脱离程序 的正常顺序执行,而把它转移到指定的指令地址, 程序转移及调用指令通过改变IP和CS内容,就可改 变程序执行顺序。
3.2.2 程序转移地址寻址方式
根据程序转移地址相对于当前程序地址的关 系,可分为段内、段外;又根据转移地址是否直 接出现在指令中,分为直接、间接,所以有四种 程序转移寻址方式:段内直接寻址、段内间接寻
第3章
指令系统
指令是计算机用以控制各个部件协调
微机原理第3章-指令系统

▲按给出偏移地址方式的不同,分为以下5种: 寄存器间接寻址 寄存器相对寻址 基址加变址寄存器 相对基址加变址寄存器 MOV AL, [ BX ] MOV AL, [ BX + 10H ] MOV AL, [ BX + SI ] MOV AL, [ BX + SI + 10H ]
(1)寄存器间接寻址
寄存器寻址方式的操作数是寄存器的值,指令中直接 使用寄存器名,包括8位或16位通用寄存器和段寄存器。可 使用的16位寄存器:AX、BX、CX、DX、SI、DI、SP、 BP;其中:AX、BX、CX、DX可分成两8位使用。
例: MOV AX,CX
;(AX)
(CX)
INC CX
;(CX)
(CX)+1
3.直接寻址(Direct Addressing)
0002
AH
AL
默认段寄存器的关系: ① 使用BX、SI、DI,默认段寄存器为DS
(BX)
PA = ( DS )×10H + (SI) (DI)
② 使用BP,默认段寄存器为SS PA = ( SS )×10H + ( BP )
使用BX、SI、DI的寄存器寻址,默认段寄存器为DS
寄存器组 AH AL BH BL CH CL DH DL SI DI BP SP AX BX CX DX DS ES SS CS IP 地 址 加 法 器
运 算 器
控制总线CB
码
器
PSW标志 寄存器
执行部件控制电路
CPU
总线
内存
例: MOV AX , [ BX + SI ]
若 ( DS ) = 4000H
( BX ) = 2000H ( SI ) = 100H 则内存操作数的物理地址为:
微机原理5_8086指令系统08

• 指令中的操作数:
– 可以是一个具体的数值 – 可以是存放数据的寄存器 – 或指明数据在主存位置的存储器地址
6
双操作数指令
MOV dst, src ; (dst) (src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: MOV AH,BL MOV AX,1234H
ADD dst, src ; (dst) (dst)+(src) ↑ ↑ ↑ 助记符 目的 源操作数 操作数 例: ADD AL,36H ADD BX,CX 大多数运算型指令都是双操作数指令,对这种指令, 有的机器(大中型)使用“三地址”指令:除给出参加 运算的两个操作数外,还要指出运算结果的存放地址 7
18
寄存器寻址
19
特 点
(1) 操作数就在寄存器中,不需要访问存
储器来取得操作数(指令执行时,操作就在 CPU的内部进行),因而执行速度快。
(2)寄存器号比内存地址短 * 在编程中,如有可能,尽量使用这种寻址 方式的指令。 * 寄存器寻址方式既可用于源操作数,也可 用于目的操作数,还可以两者都用于寄存器寻 址方式(如 MOV BX , AX )
物理地址 = 16d (DS) +
BP (SS)
(SI)
(DI)
28
物理地址 = 16d (SS) + (BP)
例:
MOV AX, [BX] MOV ES:[BX] , AX MOV DX, [BP] • MOV AX , [BX] ;
设 ( DS) = 2000H ,(BX) = 1000H PA =20000H + 1000H =21000H 指令的执行结果为: (AX) = 50A0H *指令中也可以通过“段跨越前缀”取 得其他段中的数据, 例如: MOV AX,ES: [BX] PA = 16d (DS) + (BX) PA = 16d (ES) + (BX) PA = 16d (SS) + (BP)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Opr位数必须一致
Opr不能同为Mem
Opr不能为CS(或IP)
PUSH
PUSH Src
(SP)← (SP)-2
((SP) +1,(SP)) ← (Src)
Opr只能16位
Opr不能为Imm、CS
PUSH CS合法
一般配对使用
POP
POP Dest
(Dest)←((SP) +1,(SP))
(SP) ← (SP) +2
Cnt是移位数
Cnt>1,其值要先送到CL
ODITSZAPC= x---xxuxx
SAR
SAR Dest,Cnt
SHL
SHL Dest,Cnt
SHR
SHR Dest,Cnt
ROL
ROL Dest,Cnt
将Dest从一端移出的位返回到另一端形成循环
Dest不能为Imm
Cnt是移位数
Cnt>1,其值要先送到CL
LES
LES DES,Src
(Dest) ←EA (Src)
(ES) ← EA(Src+2)
标
志
传
送
LAHF
LAHF
(AH) ←(FLAGSL)
相反操作
一般配对使用
SAHF标志位=-----rrrrr
SAHF
SAHF
(FLAGSL)← (AH)
PUSHF
PUSHF
(SP)← (SP)-2
((SP) +1,(SP)) ← (PSW)
INC
INC Dest
(Dest) ← (Dest) +1
ODITSZAPC= x---xxxx-
减
法
SUB
SUB EST,Src
(Dest)←(Dest)- (Src)
ODITSZAPC= x---xxxxx
SBB
SBB EST,Src
(Dest)←(Dest)- (Src)-CF
ODITSZAPC= x---xxxxx
OR
OR Dest,Src
(Dest)←(Dest)∨(Src)
使Dest的某些位强迫置1
ODITSZAPC= 0---xxux0
NOT
NOT Dest
(Dest)←( )
不允许使用Imm
XOR
)(Src)
使某些位变反
判断两个Opr是否相等
ODITSZAPC= 0---xxux0
IDIV
IDIV Src
(AL) ← (AX)/ (Src)的商
(AH) ← (AX)/ (Src)的余数
(AX) ← (DX,AX)/ (Src)的商
(DX) ← (DX,AX)/ (Src)的余数
CBW
CBW
ALAX
正数前补0
负数前补1
无符号数不能扩展
CWD
CWD
AX(DX,AX)
B
C
D
码
调
整
DAA
DAA
(AL)(AL)组合BCD
紧接在加减指令后
ODITSZAPC= u---xxxxx
DAS
DAS
(AL)(AL)组合BCD
AAA
AAA
(AL)(AL)非组合BCD
紧接在加减指令后
ODITSZAPC= u---uuxux
AAS
AAS
(AL)(AL)非组合BCD
AAM
AAM
(AL)(AL)非组合BCD
OUT
OUT Port,Ac
OUT DX,Ac
(Port) ←Ac
((DX))←Ac
算
术
运
算
加
法
ADD
ADD EST,Src
(Dest)←(Src)+(Dest)
ODITSZAPC=x---xxxxx
ADC
ADC EST,Src
(Dest)←(Src)+ Dest)+CF
ODITSZAPC= x---xxxxx
除
法
DIV
DIV Src
(AL) ← (AX)/ (Src)的商
(AH) ← (AX)/ (Src)的余数
(AX) ← (DX,AX)/ (Src)的商
(DX) ← (DX,AX)/ (Src)的余数
单操作数指令
Src为除数
Src不能为Imm
AX(DX,AX)为隐含的被除数
ODITSZAPC= u---uuuuu
有符号数A≤B
JCXZ Dest
(CX)=0则转移
不影响CX的内容
LOOP
LOOP Dest
CX-1≠0,则循环
段内直接短转移
LOOPE
/LOOPZ
LOOPE/LOOPZ Dest
ZF=1且CX-1≠0,则循环
LOOPNE
/LOOPNZ
LOOPNE/LOOPNZ Dest
ZF=0且CX-1≠0,则循环
PF=1则转移
有偶数个“1”
JNP/JPO Dest
PF=0则转移
有奇数个“1”
JA/JNBE Dest
CF=0 AND Z F=0则转移
无符号数A>B
JAE/JNB Dest
CF=0 OR ZF=1则转移
无符号数A≥B
JB/JNAE Dest
CF=1 AND ZF=0则转移
无符号数A<B
JBE/JNA Dest
SI=DS中源串首地址
DI=ES中目的串首地址
CX=数据串的长度
CLD/TD建立方向标志
DF=0,地址增量
DF=1,地址减量
CMPS标志位= x---xxxxx
SCAS标志位= x---xxxxx
LODS
LODS Src
LODSB
LODSW
(Ac)←DS:(SI)
(SI) ←(SI)±1或2
STOS
端口地址256时应采用dx间接寻址outoutportacoutdxacportacdxac算加addaddestsrcdestsrcdestoditszapcxxxxxx术运算法adcadcestsrcdestsrcdestcfoditszapcxxxxxxincincdestdestdest1oditszapcxxxxx减法subsubestsrcdestdestsrcoditszapcxxxxxxsbbsbbestsrcdestdestsrccfoditszapcxxxxxxdecdecdestdestdest1oditszapcxxxxxnegnegdestdest0dest求相反数oditszapcxxxxxxcmpcmpdessrcdestsrc结果不回送后边一般跟jxxoditszapcxxxxxx乘法mulmulsrcaxalsrcdxaxaxsrc单操作数指令src为乘数opr不能为immac为隐含的被乘数oditszapcxuuuuximulimulsrcaxalsrcdxaxaxsrc除法divdivsrcalaxsrc的商ahaxsrc的余数axdxaxsrc的商dxdxaxsrc的余数单操作数指令src为除数src不能为immaxdxax为隐含的被除数oditszapcuuuuuuidividivsrcalaxsrc的商ahaxsrc的余数axdxaxsrc的商dxdxaxsrc的余数cbwcbwalax正数前补0负数前补1无符号数不能扩展cwdcwdaxdxaxbcd码调整daadaaalal组合bcd紧接在加减指令后oditszapcuxxxxxdasdasalal组合bcdaaaaaaalal非组合bcd紧接在加减指令后oditszapcuuuxuxaasaasalal非组合bcdaamaamalal非组合bcd紧接在mul后oditszapcuuuxuxaadaadalal非组合bcddiv指令之前用aaddiv之后用aamoditszapcuxxuxu逻辑运算andanddestsrcdestdestsrc使dest的某些位强迫清0oditszapc0xxux0orordestsrcdestdestsrc使dest的某些位强迫置1oditszapc0xxux0notnotdestdestdest不允许使用immxorxordestsrcdestdestsrc使某些位变反判断两个
相反操作
一般配对使用
POPF标志位=rrrrrrrrr
POPF
POPF
(Dest)←((SP) +1,(SP))
(SP) ← (SP) +2
输
入
输
出
IN
IN Ac,Port
IN Ac,DX
Ac← (Port)
Ac←((DX))
最多64K个8位端口地址
或32K个16位端口地址;
端口地址≧256时,应采用DX间接寻址
乘
法
MUL
MUL Src
(AX) ← (AL) *(Src)
(DX,AX)← (AX) *(Src)
单操作数指令
Src为乘数
Opr不能为Imm
Ac为隐含的被乘数
ODITSZAPC= x---uuuux
IMUL
IMUL Src
(AX) ← (AL) *(Src)
(DX,AX)← (AX) *(Src)
DEC
DEC Dest
(Dest) ← (Dest) -1
ODITSZAPC= x---xxxx-
NEG
NEG Dest
(Dest) ←0 - (Dest)
求相反数
ODITSZAPC= x---xxxxx
CMP
CMP DES,Src
(Dest)-(Src)
结果不回送
后边一般跟JXX
ODITSZAPC= x---xxxxx
Opr不能同为Mem
Opr不能为CS(或IP)
PUSH
PUSH Src
(SP)← (SP)-2
((SP) +1,(SP)) ← (Src)
Opr只能16位
Opr不能为Imm、CS
PUSH CS合法
一般配对使用
POP
POP Dest
(Dest)←((SP) +1,(SP))
(SP) ← (SP) +2
Cnt是移位数
Cnt>1,其值要先送到CL
ODITSZAPC= x---xxuxx
SAR
SAR Dest,Cnt
SHL
SHL Dest,Cnt
SHR
SHR Dest,Cnt
ROL
ROL Dest,Cnt
将Dest从一端移出的位返回到另一端形成循环
Dest不能为Imm
Cnt是移位数
Cnt>1,其值要先送到CL
LES
LES DES,Src
(Dest) ←EA (Src)
(ES) ← EA(Src+2)
标
志
传
送
LAHF
LAHF
(AH) ←(FLAGSL)
相反操作
一般配对使用
SAHF标志位=-----rrrrr
SAHF
SAHF
(FLAGSL)← (AH)
PUSHF
PUSHF
(SP)← (SP)-2
((SP) +1,(SP)) ← (PSW)
INC
INC Dest
(Dest) ← (Dest) +1
ODITSZAPC= x---xxxx-
减
法
SUB
SUB EST,Src
(Dest)←(Dest)- (Src)
ODITSZAPC= x---xxxxx
SBB
SBB EST,Src
(Dest)←(Dest)- (Src)-CF
ODITSZAPC= x---xxxxx
OR
OR Dest,Src
(Dest)←(Dest)∨(Src)
使Dest的某些位强迫置1
ODITSZAPC= 0---xxux0
NOT
NOT Dest
(Dest)←( )
不允许使用Imm
XOR
)(Src)
使某些位变反
判断两个Opr是否相等
ODITSZAPC= 0---xxux0
IDIV
IDIV Src
(AL) ← (AX)/ (Src)的商
(AH) ← (AX)/ (Src)的余数
(AX) ← (DX,AX)/ (Src)的商
(DX) ← (DX,AX)/ (Src)的余数
CBW
CBW
ALAX
正数前补0
负数前补1
无符号数不能扩展
CWD
CWD
AX(DX,AX)
B
C
D
码
调
整
DAA
DAA
(AL)(AL)组合BCD
紧接在加减指令后
ODITSZAPC= u---xxxxx
DAS
DAS
(AL)(AL)组合BCD
AAA
AAA
(AL)(AL)非组合BCD
紧接在加减指令后
ODITSZAPC= u---uuxux
AAS
AAS
(AL)(AL)非组合BCD
AAM
AAM
(AL)(AL)非组合BCD
OUT
OUT Port,Ac
OUT DX,Ac
(Port) ←Ac
((DX))←Ac
算
术
运
算
加
法
ADD
ADD EST,Src
(Dest)←(Src)+(Dest)
ODITSZAPC=x---xxxxx
ADC
ADC EST,Src
(Dest)←(Src)+ Dest)+CF
ODITSZAPC= x---xxxxx
除
法
DIV
DIV Src
(AL) ← (AX)/ (Src)的商
(AH) ← (AX)/ (Src)的余数
(AX) ← (DX,AX)/ (Src)的商
(DX) ← (DX,AX)/ (Src)的余数
单操作数指令
Src为除数
Src不能为Imm
AX(DX,AX)为隐含的被除数
ODITSZAPC= u---uuuuu
有符号数A≤B
JCXZ Dest
(CX)=0则转移
不影响CX的内容
LOOP
LOOP Dest
CX-1≠0,则循环
段内直接短转移
LOOPE
/LOOPZ
LOOPE/LOOPZ Dest
ZF=1且CX-1≠0,则循环
LOOPNE
/LOOPNZ
LOOPNE/LOOPNZ Dest
ZF=0且CX-1≠0,则循环
PF=1则转移
有偶数个“1”
JNP/JPO Dest
PF=0则转移
有奇数个“1”
JA/JNBE Dest
CF=0 AND Z F=0则转移
无符号数A>B
JAE/JNB Dest
CF=0 OR ZF=1则转移
无符号数A≥B
JB/JNAE Dest
CF=1 AND ZF=0则转移
无符号数A<B
JBE/JNA Dest
SI=DS中源串首地址
DI=ES中目的串首地址
CX=数据串的长度
CLD/TD建立方向标志
DF=0,地址增量
DF=1,地址减量
CMPS标志位= x---xxxxx
SCAS标志位= x---xxxxx
LODS
LODS Src
LODSB
LODSW
(Ac)←DS:(SI)
(SI) ←(SI)±1或2
STOS
端口地址256时应采用dx间接寻址outoutportacoutdxacportacdxac算加addaddestsrcdestsrcdestoditszapcxxxxxx术运算法adcadcestsrcdestsrcdestcfoditszapcxxxxxxincincdestdestdest1oditszapcxxxxx减法subsubestsrcdestdestsrcoditszapcxxxxxxsbbsbbestsrcdestdestsrccfoditszapcxxxxxxdecdecdestdestdest1oditszapcxxxxxnegnegdestdest0dest求相反数oditszapcxxxxxxcmpcmpdessrcdestsrc结果不回送后边一般跟jxxoditszapcxxxxxx乘法mulmulsrcaxalsrcdxaxaxsrc单操作数指令src为乘数opr不能为immac为隐含的被乘数oditszapcxuuuuximulimulsrcaxalsrcdxaxaxsrc除法divdivsrcalaxsrc的商ahaxsrc的余数axdxaxsrc的商dxdxaxsrc的余数单操作数指令src为除数src不能为immaxdxax为隐含的被除数oditszapcuuuuuuidividivsrcalaxsrc的商ahaxsrc的余数axdxaxsrc的商dxdxaxsrc的余数cbwcbwalax正数前补0负数前补1无符号数不能扩展cwdcwdaxdxaxbcd码调整daadaaalal组合bcd紧接在加减指令后oditszapcuxxxxxdasdasalal组合bcdaaaaaaalal非组合bcd紧接在加减指令后oditszapcuuuxuxaasaasalal非组合bcdaamaamalal非组合bcd紧接在mul后oditszapcuuuxuxaadaadalal非组合bcddiv指令之前用aaddiv之后用aamoditszapcuxxuxu逻辑运算andanddestsrcdestdestsrc使dest的某些位强迫清0oditszapc0xxux0orordestsrcdestdestsrc使dest的某些位强迫置1oditszapc0xxux0notnotdestdestdest不允许使用immxorxordestsrcdestdestsrc使某些位变反判断两个
相反操作
一般配对使用
POPF标志位=rrrrrrrrr
POPF
POPF
(Dest)←((SP) +1,(SP))
(SP) ← (SP) +2
输
入
输
出
IN
IN Ac,Port
IN Ac,DX
Ac← (Port)
Ac←((DX))
最多64K个8位端口地址
或32K个16位端口地址;
端口地址≧256时,应采用DX间接寻址
乘
法
MUL
MUL Src
(AX) ← (AL) *(Src)
(DX,AX)← (AX) *(Src)
单操作数指令
Src为乘数
Opr不能为Imm
Ac为隐含的被乘数
ODITSZAPC= x---uuuux
IMUL
IMUL Src
(AX) ← (AL) *(Src)
(DX,AX)← (AX) *(Src)
DEC
DEC Dest
(Dest) ← (Dest) -1
ODITSZAPC= x---xxxx-
NEG
NEG Dest
(Dest) ←0 - (Dest)
求相反数
ODITSZAPC= x---xxxxx
CMP
CMP DES,Src
(Dest)-(Src)
结果不回送
后边一般跟JXX
ODITSZAPC= x---xxxxx