8086微机指令
计算机微机原理8086指令

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
微机原理指令小结

8086CPU指令小结所有指令:(1)立即数不能作为目的操作数。
(2)不能在2个存储单元之间直接进行操作(串操作除外)。
(3)MOV指令和堆栈指令是惟一能对段寄存器进行操作的指令。
(4)源和目的操作数的数据类型必须匹配,都是8位,或都是16位。
(5)CS 、IP不能直接作为操作数。
(6)指令中至少要有一项明确说明传送的是字节还是字,如果没有,可通过PTR进行设置。
一、传送指令(1)6种指令:通用传送指令、堆栈操作指令、交换操作指令、I/O操作指令、目的地址传送指令和标志传送指令。
(2)对标志位的影响:除标志传送(SAHF、POPF)外,均不影响标志位。
(3)操作数表示方法:立即数——data,存储器单元地址——mem,寄存器——reg,段寄存器——segreg。
1. 通用传送指令:完成数据传送(1)指令格式:MOV OPRD1,OPRD2 ;[目的操作数OPRD1]←[源操作数OPRD2] (2)源OPRD2:data、mem、reg、segreg。
(3)目的OPRD1:mem、reg、segreg。
(4)通用传送指令MOV和堆栈指令是唯一允许以段寄存器(代码段寄存器CS和指令指针IP除外,即CS 、IP不能作为直接操作数)作为操作数的指令,不允许通过MOV 指令直接以立即数方式给段寄存器赋值,不允许直接在两个段寄存器之间直接进行传送。
(5)8位/16位操作。
2. 堆栈操作指令:将数据压入/弹出堆栈(1)指令格式:入栈:PUSH OPRD;先修改堆栈指针SP-2,然后将数据压入堆栈。
;SP =SP-1,[SP]=操作数高8位;SP =SP-1,[SP]= 操作数低8位。
出栈:POP OPRD;先将数据弹出堆栈,然后修改堆栈指针SP+2。
;(操作数低8位)←[SP],SP =SP+1;(操作数高8位)←[SP],SP =SP+1。
(2)操作数:mem、reg、segreg。
操作数不能是立即数data。
微机原理第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 则内存操作数的物理地址为:
8086 8088 汇编 指令 手册

8086 8088 汇编指令手册一、常用指令二、算术运算指令三、逻辑运算指令四、串指令五、程序跳转指令------------------------------------------计算机寄存器分类简介:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。
寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。
可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(Base Register)。
它可作为存储器指针来使用;寄存器ECX称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。
在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。
微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统

4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器 间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing) 位移量是一带符号的16位16进制数。当 使用BX或BP寄存器时,称基址寻址;使用SI 或DI寄存器时,称变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 • 目的操作数和源操作数均可采用不同的寻 址方式, • 两个操作数的类型必需一致。
二、寻址方式介绍பைடு நூலகம்
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后面, 作为指令一部分存放在内存的代码段中,这 种操作数称为立即数。 例: MOV AX , 34EAH MOV BL , 20H
3)、段间直接转移 JMP far PTR 目标地址 4)、段间间接转移 JMP WORD PTR[BX][SI]
2、条件转移指令
1)、单条件转移指令 ① JC ② JNC ③ JE/JZ ④ JNE/JNZ ⑤ JS ⑥ JNS ⑦ JO ⑧ JNO ⑨ JP/JPE ⑩ JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
3、目标地址传送指令
这类指令有: 1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址
微机原理iret

微机原理iret微机原理IRET指令是Intel 8086微处理器的一条指令,用于中断处理程序的返回操作。
IRET指令主要用于从中断处理程序返回到主程序,并且将标志寄存器的值和程序状态字寄存器的值恢复到中断前的状态。
本文将介绍IRET指令的详细功能和执行过程。
IRET指令是中断返回指令,用于从中断服务程序返回到主程序,并恢复中断前的状态。
IRET指令的语法如下:IRETIRET指令没有操作数,它执行的功能包括将标志寄存器的值和程序状态字寄存器的值恢复到中断前的状态,同时从堆栈中弹出返回地址,实现从中断处理程序的返回。
IRET指令的执行过程如下:1.从堆栈中弹出返回地址,将其保存在IP(指令指针寄存器)中。
2.继续从堆栈中弹出CS(代码段寄存器)的值,将其保存在CS中。
3.再次从堆栈中弹出标志寄存器的值,并将其保存在标志寄存器中。
4.如果在中断处理过程中使用了SS(堆栈段寄存器),则再从堆栈中弹出SS的值,将其保存在SS中。
5.最后从堆栈中弹出SP(堆栈指针寄存器)的值,将其保存在SP中。
IRET指令的执行过程中,栈指针的变化如下:SP=SP+2SP=SP+2SP=SP+2如果使用了堆栈段寄存器SP=SP+2IRET指令的执行还可能涉及到特权级的变化。
在进入中断处理程序时,处理器会将当前特权级压入堆栈中作为返回地址之前的值。
因此,在IRET指令中,如果特权级从低级别返回到高级别,那么堆栈中的特权级值会被加载到CS和SS寄存器中。
如果特权级从高级别返回到低级别,那么CS和SS寄存器的值将不会发生改变。
IRET指令的使用非常广泛,特别适用于中断处理程序的编写。
在中断处理程序中,当完成中断服务后,使用IRET指令可以方便地返回到主程序,并恢复中断前的状态。
总结:IRET指令是微处理器中的一条中断返回指令,用于从中断处理程序返回到主程序,并恢复中断前的状态。
执行IRET指令的过程涉及到返回地址、代码段、标志寄存器、堆栈段和堆栈指针的恢复。
微机原理第3章指令

第3章指令系统机器指令:能指示计算机完成基本操作的二进制代码指令系统:CPU可执行的机器指令的集合。
为了方便编程,人们又把完成特定操作的机器码用特定的符号表示,这就产生了符号表示的机器指令-------指令助记符。
第3章8086指令系统机器指令由二进制代码组成,一条指令包括操作码和操作数(或地址)两部分,操作码指明该指令进行何种操作,操作数用来说明操作对象。
个别指只有操作码没有操作数。
由于不同的指令所表达的信息不尽相同,因此指令的长度即机器码字节数也有长有短。
8086指令系统的指令是可变长指令(1~6个字节)3.18086CPU寻址方式重点是存储器寻址存放在存储器中的数据称为存储器操作数。
指令中需要确定存储单元的段地址、偏移地址(亦称有效地址EA),以及存储器操作数的类型。
段地址存放在段寄存器中,确定段地址实际上就是确定段寄存器,采用的方法是默认或添加段超越前缀。
生成存储器有效地址有多种方法,这些方法形成了对存储器操作数的多种寻址形式。
确定数据类型的方法是源操作数和目的操作数类型一致原则或附加类型说明。
立即寻址方式中操作数也在存储器中,但立即寻址中的立即数包含在指令中,随程序存放在代码段,CPU在取指令时就获得操作数。
这里所说的存储器操作数是存放在数据段、附加段或堆栈段中,取指令时也不会被立即取到。
段超越前缀变量的定义在第四章详细介绍直接寻址:MOV AX,[2000H];寄存器间接寻址:MOV ES:[DI],AH基址寻址:MOV BYTE PTR[BX+1200H],10变址寻址:MOV DL,[SI+2AH]基址加变址寻址:MOV CL,[BX+SI+5]MOV AX,[BP+DI]MOV CL,[BX+SI+5]的等价形式:MOV CL,5[BX][SI]、MOV CL,5[BX+SI]、MOV CL,[BX][SI+5]MOV CL,[BX+SI-5]等价于MOV CL,[BX+SI+65531] MOV CL,[BX-SI]MOV CL,[SI+DI]错误!MOV[BX+DI],1000H正确吗?3.2.1数据传送类指令传送指令把数据从一个位置传送到另一个位置使用MOV指令应注意1.立即数只能作为源操作数2.无存储器之间直接传送与交换的指令3.没有用立即数对段寄存器直接赋值的指令4.段寄存器之间无传送指令5.两个操作数的类型要一致6.要能确定是字节还是字操作mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov al,[bx]下列MOV指令正确吗?MOV AL,050AHMOV SI,DLMOV[BX+SI],255MOV DS,100HMOV[BX],[SI]MOV[BX+SI],bvarbvar是一个已定义过的字节变量 MOV CS,[SI]将数据段中偏移地址为2000H、2001H、2002H的3个字节的存储单元置数FFH。
8086指令集的操作码 -回复

8086指令集的操作码-回复【8086指令集的操作码】是专门为Intel 8086微处理器设计的一组指令。
Intel 8086微处理器是20位处理器,与许多后来的x86系列处理器兼容。
它是上世纪70年代末和80年代初广泛使用的一种微处理器,其指令集具有多样的功能,可以完成各种复杂的任务。
在本文中,我们将逐步探讨8086指令集的操作码,以便更好地了解它的功能和用法。
第一部分:引言和基本概述在本节中,我们将简要介绍8086指令集和操作码的基本概念。
8086指令集是一组二进制指令,通过这些指令可以执行各种操作,如算术运算、逻辑运算、数据传输和控制转移等。
每个指令都有一个唯一的操作码,用于识别和执行该指令。
我们还将简要介绍8086微处理器的体系结构和寻址模式。
8086是一种基于寄存器-寻址的微处理器,其中包含多个通用寄存器、指令指针寄存器和标志寄存器。
同时,它还支持不同的寻址模式,如直接寻址、寄存器间接寻址和基址寻址等。
第二部分:算术和逻辑运算在这一部分,我们将详细讨论一些用于算术和逻辑运算的8086指令的操作码。
这些指令可以执行加法、减法、乘法、除法、与运算、或运算、异或运算和移位运算等操作。
我们将执行以下操作码的示例:- ADD指令:用于执行加法操作,将两个操作数相加。
- SUB指令:用于执行减法操作,将第二个操作数从第一个操作数中减去。
- MUL和DIV指令:用于执行乘法和除法操作,分别将两个操作数相乘或相除。
- AND、OR和XOR指令:用于执行与、或和异或运算,将两个操作数进行按位运算。
- SHL和SHR指令:用于执行逻辑左移和逻辑右移操作,将操作数按指定位数进行移位。
我们将逐步演示每个指令的使用方式和操作结果,以便更好地理解这些指令在实际编程中的应用。
第三部分:数据传输和访存操作在本节中,我们将研究用于数据传输和访存操作的8086指令的操作码。
这些指令允许我们将数据从一个位置传输到另一个位置,以及将数据存储到内存中或从内存中加载数据。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8086/8088微机指令(共99条)
一、数据传送类(14条)
MOV PUSH POP XCHG XLA T LEA LDS
LES LAHF SAHF PUSHF POPF IN OUT
二、算术运算类(20条)
ADD ADC INC SUB SBB DEC NEG
CMP MUL IMUL DIV IDIV CBW CWD
DAA DAS AAA AAS AAM AAD
三、逻辑运算类与移位类(13条)
AND OR NOT XOR TEST SHL SAL
SHR SAR ROL RCL ROR RCR
四、控制转移类(26条)
JMP JZ/JE JNZ/JNE JO JNO JS JNS
JP/JPE JNP/JPO JB/JNAE/JC
JNB/JAE/JNC JBE/JNA JNBE/JA
JL/JNGE JNL/JGE JLE/JNG JNLE/JG JCXZ LOOP LOOPZ LOOPNZ CALL RET INT INTO IRET
五、处理器控制类(12条)
CLC STC CMC CLD STD CLI STI NOP
HLT WAIT ESC LOCK 六、字符串操作(14条)
REP LODSB REP LODSW
REP STOSB REP STOSW
REP MOVSB REP MOVSW
REPZ/REPE CMPSB REPZ/REPE CMPSW
REPNZ/REPNE CMPSB REPNZ/REPNE CMPSW
REPZ/REPE SCASB REPZ/REPE SCASW
REPNZ/REPNE SCASB REPNZ/REPNE SCASW
注:记的时候要注意每条指令的格式。