CPU指令系统 2.pdf
《CPU指令系统 2.pdf》由会员分享,可在线阅读,更多相关《CPU指令系统 2.pdf(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 4 单元 8086 微处理器指令系统简介(80X86 微处理器 ) 2.4 8086微处理器指令系统简介 8086的汇编级指令有 115 条,可以分为数据传送指令、算术运算指令、位处理指令字符串指令、程序转移指令以及处理器控制指令等6 大类, 下面作一简要的介绍。 2.4.1 数据传送指令数据传送指令有 14 条,可以分为 4 组,如表 2-9 所示。表 2-9 数据传送指令通用数据传送指令地址目标传送指令MOVPUSHPOPXCHGXLAT传送字节或字字进栈字出栈交换字节或字字节转换LEALDS LES装入有效地址将指针变量装入寄存器及将指针变量装入寄存器I/O 指令标志传送指令IN O
2、UT输入字节或字输出字节或字LAHF SAHF PUSHF POPF标志寄存器低字节送AAH 值送标志寄存器低字标志寄存器内容进栈标志寄存器内容出栈 1注意点(1)在数据传送指令中要注意:立即数只能作为源操作数;无存储器之间直接传送与交换的指令;不能用传送指令给CS和 IP 置新指值;没有用立即数对段寄存器直接置值的指令。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 42 页 - - - - - - - - - (2)除 SAHF 和 POPF 指令外,传送指令皆不影响
3、标志寄存器的值。(3)除 XCHG 、XLAT指令外,皆不破坏源操作数。(4)XCHG 指令不能用段寄存器作为操作数。(5)栈操作指令 PUSH 和 POP 必须以字为操作数。 2.几条指令的说明(1)指令 MOV AL,VAR1 。若 VAR1 为已定义的变量,则VAR1在指令中表示以 VAR1为地址的内存单元的内容,该指令是把内存单元的一个字节传送到AL。(2)指令 XLAT 。其功能为 AL (BX )+(AL) 即以 BX值加上 AL值作为地址,取出该地址对应的内存内容送AL。该指令通常用于表格检索中,源操作数中 BX内放表的首地址, AL中存放变址值,( BX )+(AL)为新地址,
4、目的操作数 AL注明为字节操作。在使用该指令前,必须先对AL和 BX赋值。(3)指令 LEA REG ,SRC 。要求源操作数 SRC 是一个可以计算出有效地址EA的地址表达式, 该指令所传送的是变量的地址(有效地址) ,而不是变量所表示的内存之值。(4)指令 LES REG ,SRC 。REG 为一个 16 位寄存器,这是一条16位传送指令。其功能为 REG SRC,ES SRC+2 而指令 LDS REG ,SRC 的第二个目的操作数在DS 。(5)输入 / 输出指令。 IN AL,PORT AL PORT IN AX,FORT AX PORT+1 :PORT IN AL,DX ALPOR
5、TDX INAX, DX AXPORTDX+1 :PORTDX PORT 为 8位端口地址,PORTDX 表示 DX中存放 16位端口地址。PORT+1 : PORT表示一个 16 位数据,其高 8 位由 PORT+1 端口提供;其低 8 位由 PORT 端口提供。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 42 页 - - - - - - - - - 2.4.2 算术运算指令算术运算指令有 20 条,可以分为 4 组,如表 2-10 所示。表 2-10 算术运算指令
6、加法指令减法指令ADDADC INC AAA DAA加法带进位的加法增量加法的 ASCII 修正加法的十进制修正SUB SBB DEC NEG CMP AAS DAS减法带错位的减法减量求补比较减法的 ASCII 修正减法的十进制修正I/O 指令除法指令IN OUT输入字节或字输出字节或字DIV IDIV AAD CBW CWD无符号数除法整数除法除法的 ASCII 修正字节转换为字字转换为双字 1.数据类型 8086的算术运算可以处理4 种类型的数:无符号二进制数、带符号二进制数、压缩的BCD码(十进制数)和非压缩的 BCD 码(十进制数),如表2-11 所示。表 2-11 8位数在算术运算
7、中的含义HEX 十六进制位组合格式无符号二进制数带符号二进制数压缩的 BCD 码非07 89 C500000111 10001001 110001017 137 197+7 -119 -597 89 无效 2.注意点(1)加减运算指令 ADD 、ADC 、SUB 、SBB和 CMP 可用立即数作为一个源操作数。(2)除 CBW 和 CWD 两条指令外,其余算术运算指令皆影响标志位。(3)增量指令 INC及减量指令 DEC 不影响标志 CF 。(4)乘法指令 MUL 及 IMUL是执行源操作数和累加器值 (AX或 AL)的和乘,若源操作数是一个字节,则累加器为AL,相乘结果需用双字节表示时,存放
8、在AX中;若源操作数是一个字,则累加器为AX ,相乘结果需用双字表示时,存放在 DX :AX中,DX中存放高位字, AX中存放低位字。 此时,将使标志位 CF=OF=l ;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 42 页 - - - - - - - - - 否则, CF=OF=0 。其余标志都不确定。(5)除法指令 DIV 和 IDIV 的操作过程为: AX 源操作数(字节) AH 为余数, AL 为商; DX:AX/ 源操作数(字) DX为余数, AX 为商。除
9、法指令运算结果6 个状态标志皆不确定。(6)算术运算指令中是字节运算还是字运算由出现在操作数表达式中变量名的类型属性决定,或由寄存器操作数的字长决定。(7)加法和减法指令中操作数是带符号数还是无发好数有程序员解释。(8) 十进制修正指令 DAA及 DAS中无操作数出现, 但其隐含的操作数是AL,切源和目的操作数都是AL。二进制运算后 AL的内容以及 CF和 AF的状态是十进制修正的依据, 因此在 BCD 码的加减运算中, 应在二进制加法或减法指令后紧跟一条 DAA或 DAS指令。(9)当非压缩的 BCD码进行算术运算时, 低半字节为 8888B 1001B ,高半字节为 0000B ,对于除法
10、运算,被除数应在AX中,切 AH 、AL都是一字节的非压缩 BCD 码。(10)ASCII 修正指令 AAA 、AAS以及 AAM 用于二进制加法、减法及乘法指令之后,而 AAD指令用于二进制除法指令之前, 即用 AAD 指令对被除数先行修正。 2.4.3 位处理指令位处理指令有 13 条,可以分为 3 组,如表 2-12 所示:表 2-12 位处理指令逻辑运算指令移位指令循环移位指令AND OR NOT XOR TEST逻辑“与”逻辑“或”逻辑“非”逻辑“异或”测试SHL SAL SHR SAR逻辑左移算术左移逻辑右移算术右移ROL ROR RCL RCR循环左移循环右移通过 CF 循环左移
11、通过 CF 循环右移 1.指令功能简介(1)逻辑“与”指令AND 用来清除或保留目的操作数中某些位,欲清除的位同“0”相“与”,称为“屏蔽”;欲保留的位同“1”相“与”;自身相“与”名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 42 页 - - - - - - - - - 其值不变,但 CF清零。(2)逻辑“或”指令 OR用来进行数的组合,同“ 0”相“或”,其值不变;同“1”相“或”,则置“ 1”;自身相“或”,其值不变,但CF清零。(3)逻辑“异或”指令 XOR 可
12、用来将目的操作数中某些位取反或保持不变。同“0”相“异或”,其值不变; 同“1”相“异或”,其值取反; 自身相“异或”,则清零。且 CF也清零。(4)测试指令 TEST用来测试目的操作数中某一位是否为“1”,实际上执行逻辑“与”操作,但结果不回送,只是根据结果修改标志寄存器。(5)算术右移指令SAR执行后符号位保持不变,右移1 次完成带符号数除 2 朝小取整操作。 2注意点(1)位处理指令的操作数可以是字节,也可以是字。(2)求反指令 NOT 的操作数不能是立即数,其它逻辑指令只有源操作数可以是立即数。(3)求反指令 NOT 不影响任何标志位,其余逻辑指令使CF=OF=0 ,AF不确定, SF
13、 、ZF、PF由运算结果定。(4)循环移位指令和移位指令中的操作数COUNT 只能为 1 或 CL;目的操作数不能为立即数(当移位次数为1 时,COUNT=1,否则 COUNT=CL)。(5)移位指令和循环移位指令影响CF ,移位指令还影响PF 、SF和 ZF,当移位计数值为 1 时 OF有意义。 2.4.4 程序转移指令程序转移指令有28 条,可以分为 4 组如表 2-13 所示。表 2-13 程序转移指令无条件转移指令CA LL调用过程RET从过程返回JMP转移名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
14、 - - - - - - 第 5 页,共 42 页 - - - - - - - - - 条件转移指令JA/JNBE高于 /不低于等于,转移JAE/JNB高于或等于 /不低于,转移JB/JNAE低于 /不高于等于,转移JBE/JNA低于或等于 /不高于,转移JC有进位(错位),转移JE/JZ等于 /为零,转移JG/JNLE大于 /不小于等于,转移JGE/JNL大于或等于 /不小于,转移JL/JNGE小于 /不大于等于,转移JLE/JNG小于或等于 /不大于,转移JNC无进位(借位),转移JNE/JNZ不等于 /不为零,转移JNO不溢出,转移JNP/JPOPF 为“ 0”/奇状态,转移JNSSF
15、为“ 0”,转移JO溢出,转移JP/JPEPF 为“ 1”/偶状态,转移JSSF 为“ 1”,转移重复控制指令LOOP 循环LOOPE/LOOPZ等于 /为零,循环LOOPNE/LOOPNZ不等于 /不为零,循环JCXZ寄存器 CX=0 ,则转移中断指令INT中断NITO溢出中断IRET中断返回条件转移指令共有30 条,这些指令根据执行指令时CPU 标志寄存器的状态决定是否控制程序转移, 每条指令的测试条件如表2-14 所示若满足条件,则将控制转移到指令所规定的目标;若条件不满足, 则继续顺序执行。 所有的条件转移指令都是段内转移, 且是短距离的, 即目标必须在当前指令段内,且与下一条指令的第
16、一个字节的距离在-128+127个字节内。表 2-14 条件转移指令的说明助 记 符测 试 条 件单JAE/JNBCF=0JB/JNAECF=1名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 42 页 - - - - - - - - - 标志位JCCF=1JNCCF=0JE/JZZF=1JNE/JNZZF=0JNOOF=0JOOF=1JNP/JPOPF=0JP/JPEPF=1JNSSF=0JSSF=1多带标符志号位数JGE/JNL(SF 十 OF)=0JL/JNEG(SF
17、 十 OF)=1JG/JNLE((SF 十 OF)+ZF)=0JLE/JNG((SF 十 OF)+ZF)=1多标志位不带符号数JA/JNBE(CF+ZF)=0JBE/JNA(CF+ZF)=1 2无条件转移指令(1)JMP指令。JMP指令无条件地将控制转移到目标单元,该指令中只有一个操作数,用来指定程序应在哪里继续下去。可以实现“段内转移”(包括短转移和长转移) 以及“段间转移”; 而目的操作数的地址可以从指令本身获得( “直接转移”) , 也可以从指令所规定的存储器或寄存器中获得( “间接转移”) 。(2)CALL指令 O CAL指令用来调用一个“过程”(子程序),其格式与 JMP指令相似,
18、该指令与 JMP指令的区别是: 执行该指令时, 必需有一个保存断点的过程,即将CALI 一指令的下一条指令的偏移地址(若为段间调用,还需加上 CS值)保存进栈,以供返回之用。(3)RET指令。RET指令的功能是控制从一个过程返回到调用该过程的CALL指令之后的那条指令,即返回断点。 3重复控制指令重复控制指令可以用来管理软件循环的重复过程,这些指令都用CX寄存器作为计数器,先判CX-1是否为零,不为零转移到目标地址,其目标地址都是相对于该指令本身而言,其间距离只能在-128+127字节范围,即它们都是短距离转移指令。 4中断指令中断指令用来允许程序和外部硬设备启动中断服务程序,若中断是由软名师
19、资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 42 页 - - - - - - - - - 件及不可屏蔽中断产生,则微处理器不执行中断响应周期。 2.4.5 字符串指令字符串指令有 10 条,如表 2-15 所示。表 2-15 字符串指令助记符功能REP重复REPE/REPZ等于 /为零时重复REPNE/REPNZ不等于 /不为零时重复MOVS (MOVSB ,MOVSW )串传送(字节 /字)CMPS( CMPSB, CMPSW)串比较(字节 /字)SCAS(SCASB,
20、 SCASW )串扫描(字节 /字)LODS ( LODSB , LODSW )取出串(字节 /字)STOS(STOSB,STOSW )存入串(字节 /字) 1字符串指令的共性介绍在字符串指令中一般有两个操作数源操作数和目的操作数,还可使用重复前缀 REP等以及重复次数计数器。 在字符串操作中, 寄存器和标志的用途如表 2-16 所示。表 2-16 字符串指令中寄存器和标志的用法寄存器 /标志用途SI源字符串的变址值(偏移量)DI目的字符串的变址值(偏移量)CX重复次数计数器AL/AX扫描值LODS 指令的目的操作数STOS 指令的源操作数DF=0,SI, DI 自动增量=1,SI, DI 自
21、动减量ZF扫描 /比较结束符 2重复前缀重复前缀 REP 、REPZ REPE 和 REPNZ/REPNE用来控制其后字符串指令是否重复执行, 重复前缀不影响标志。 重复的字符串处理过程可被中断,微处理器名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 42 页 - - - - - - - - - 将在处理宇符串的下一个元素之前识别中断。系统的中断处理不受影响, 在从中断返回以后,重复过程再从中断处继续执行下去。当执行 REP MOVSB指令时,若 CX 0 执行 MOVS
22、B,然后 CX-1,再判 CX是否为零,若不为零,重复执行MOVSB,直至 CX=0 ,结束串操作。 2.4.6 处理器控制指令处理器控制指令有12 条,可分为 3 组,如表 2-17 所示。表 2-17 处理器控制指令标志操作指令外同步指令STC进位标志置1HLT暂停直至中断或复位CLC进位标志置0WAIT等待 TEST 信号有效CMC进位标志取反ESC交权给外部处理机STD方向标志置1LOCK在下一条指令期间封锁总线CLD方向标志置0空操作指令STI中断允许标志置1NOP空操作CLI中断允许标志置0第 3 单元 8086 微处理器的总线时序(80X86 微处理器 ) 2.3 8086微处理
23、器的总线时序在微机系统的设计中了解总线上有关信号的时间关系是很重要的,这就是本节所要讨论的总线操作的时序问题。 2.3.l 指令周期、总线周期和时钟周期每条指令的执行由取指令、 译码和执行等操作组成, 执行一条指令所需要的时间称为指令周期( Instruct。Cycle ),不同指令的指令周期是不等长的。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 42 页 - - - - - - - - - 8086CPU 与外部交换信息总是通过总线进行的。CPU 的每一个这种信息输
24、入、输出过程所需要的时间称为总线周期(Bus Cycle ),每当 CPU要从存储器或输入输出端口存取一个字节或字就需要一个总线周期。一个指令周期由一个或若干个总线周期组成。而执行指令的一系列操作都是在时钟脉冲CLK的统一控制下一步一步进行的,时钟脉冲的重复周期称为时钟周期(Clock Cyce ),时钟周期是CPU 的时间基准,由计算机的主频决定,例如,8086的主频为 5MHz ,则 1个时钟为 200us。 8086CPU 的总线周期至少由 4 个时钟周期组成,分别以T1、T2、T3和T4表示,如图 2-14 所示, T 又称为状态( State )。一个总线周期完成一次数据传输, 至少
25、要有传送地址和传送数据两个过程。在第一个时钟周期 T1期间由 CPU 输出地址,在随后的三个T 周期(T2、T3和 T4)用以传送数据。换图 2-14 8086CUP 的总线周期言之,数据传送必须在T2T4 这三个周期内完成, 否则在 T4 周期后,总线将作另一次操作,开始下一个总线周期。在实际应用中,当一些慢速设备在三个T周期内无法完成数据读写时,那么在 T4后,总线就不能为它们所用,会造成系统读写出错。为此,在总线周期中允许插入等待周期Tw 当被选中进行数据读写的存储器或外设无法在三个周期内完成数据读写时, 就由其发出一个请求延长总线周期的信号到 8086CUP 的 READY 引脚,80
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPU指令系统 2022 CPU 指令系统
限制150内