第4章微机原理 (2).ppt

上传人:s****8 文档编号:66865744 上传时间:2022-12-21 格式:PPT 页数:123 大小:1.33MB
返回 下载 相关 举报
第4章微机原理 (2).ppt_第1页
第1页 / 共123页
第4章微机原理 (2).ppt_第2页
第2页 / 共123页
点击查看更多>>
资源描述

《第4章微机原理 (2).ppt》由会员分享,可在线阅读,更多相关《第4章微机原理 (2).ppt(123页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第四章第四章8086的寻址方式和指令系统的寻址方式和指令系统 第一节第一节 8086 的寻址方式的寻址方式 第二节第二节 8086 指令系统概述指令系统概述 第三节第三节 8086 指令系统指令系统汇编语言指令格式汇编语言指令格式汇编语言指令格式汇编语言指令格式操作码操作码操作码操作码 目标操作数目标操作数目标操作数目标操作数 ,源操作数源操作数源操作数源操作数 双操作数指令:双操作数指令:ADD BXADD BX,12341234单操作数指令:单操作数指令:INC AXINC AX无操作数指令:无操作数指令:NOP NOP 第一节第一节 8086的寻址方式的寻址方式 寻址方式是指指令采取何种

2、方式获取所需的操作寻址方式是指指令采取何种方式获取所需的操作数。寻址方式的多少是恒量指令系统灵活与否的重要数。寻址方式的多少是恒量指令系统灵活与否的重要标志。标志。在在这这种种寻寻址址方方式式中中,操操作作数数作作为为指指指指令令令令的的的的一一一一部部部部分分分分直直接接跟跟在在操操作作码码的的后后面面,操操作作数数与与操操作作码码一一起起放放在在代代码段中。这种寻址方式叫立即数寻址。码段中。这种寻址方式叫立即数寻址。例:例:例:例:MOV AX,1234H(机器码:B83412H)这条指令的功能是:把立即数1234H送入AX中。一一一一 立即数寻址立即数寻址立即数寻址立即数寻址 操操作作数

3、数就就在在CPUCPU的的内内部部寄寄寄寄存存存存器器器器中中,操操作作数数所所在在的的寄寄存存器器名名在在指指令令中中给给出出。这这种种寻寻址址方方式式称称寄寄存存器器寻寻址址方式。方式。二二二二 寄存器寻址寄存器寻址寄存器寻址寄存器寻址例:例:例:例:MOV DS,AX对1616位操作数,寄存器可以为:AXAX、BXBX,CXCX,DXDX,SISI,DIDI,SPSP,BPBP。对于8 8位操作数,寄存器可以为:AHAH,ALAL、BHBH,BLBL,CHCH,CLCL,DHDH,DLDL。采用寄存器寻址方式的指令在执行时,操作就在CPU内部进行,不需要使用总线周期,执行速度快。它是执行

4、速度 最快最快最快最快 的一类寻址方式。使使用用直直接接寻寻址址方方式式时时,数数据据位位于于内内存存中中,存存放放数数据据的的存存储储单单元元的的有有有有效效效效地地地地址址址址(偏偏偏偏移移移移量量量量)由由指指令令直直接接指指出出,直直接接寻寻址址是是对对存存储储器器进进行行访访问问时时可可采采用用的的最最简简单的方式。单的方式。例:例:例:例:若 DS=3000H MOV AX,2010H三三三三 直接寻址直接寻址直接寻址直接寻址物理地址=DS162010H=3000H162010H=32010H指令功能是将32010H和32011H两单元的内容送到AX中。要注意的是采用直接寻址方式时

5、,如果指令前面没有用前缀指明操作数在哪一段,则默认默认默认默认段寄存器是数据段寄存器DS。也可以通过前缀改变段寄存器。MOV AXMOV AX,ESES:2010H2010H 采采用用寄寄存存器器间间接接寻寻址址方方式式时时,操操作作数数位位于于内内存存中中,存存放放数数据据的的存存储储单单元元的的 有有有有效效效效地地地地址址址址 由由寄寄存存器器指指出出,这这些些寄寄存存器器可可以以为为 BX、BP、SI 和和 DI 之之一一或或它它们们的的特特定定组组合合。根根据据上上述述四四个个寄寄存存器器的的不不同同组组合合方方式式,寄寄存存器器间接寻址又可以分为四种不同形式。间接寻址又可以分为四种

6、不同形式。使使用用 BP 间间接接寻寻址址时时,默默认认的的段段寄寄存存器器是是 SS,其其它它情况下默认使用情况下默认使用 DS 提供段地址。提供段地址。四四四四 寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址 采用采用 BXBX、BP BP 间接寻址称为间接寻址称为基址寻址基址寻址基址寻址基址寻址采用采用 SISI、DI DI 间接寻址称为间接寻址称为变址寻址变址寻址变址寻址变址寻址 由由于于上上述述4 4个个寄寄存存器器寻寻址址时时所所黙黙认认的的段段寄寄存存器器不不同同,这样又可以分两种情况:这样又可以分两种情况:1 1 1 1 基址寻址和变址寻址基址寻址和变址寻址基址寻址和

7、变址寻址基址寻址和变址寻址以SISI、DIDI、BXBX进行间接寻址,默认使用DSDS提供段地址。此时数据段寄存器DS内容加上SI、DI、BX中的16位偏移量,获得操作数的地址。例:例:例:例:MOV AX,SI若DS=3000H SI=1000H也可以通过前缀改变段寄存器。寄存器BPBP间接寻址,默认的段寄存器为SSSS。此时堆栈段寄存器SSSS内容加上BP中的16位段内偏移地址,即得操作数的地址。例:例:例:例:MOV AX,BP若SS=3000H BP=2000H物理地址=SS16BP=30000H2000H=32000H指令功能是将32000H和32001H两单元的内容送到AX中。在在

8、这这种种寻寻址址方方式式中中,操操作作数数存存放放在在内内存存中中。操操作作数数的的地地址址是是由由段段寄寄存存器器内内容容1616加加上上SISI、DIDI、BXBX、BPBP之之一一的的内内容容,再再加上由指令所指出的加上由指令所指出的8 8位或位或1616位的位的位移量位移量位移量位移量而得到的。而得到的。例:例:例:例:MOV AX,SI+300H 或或 MOV AX,300HSI 物 理 地 址=DS16 SI DISP=30000H 1000H 0300H=31300H指令功能是将31300H和31301H两单元的内容送到AX中。2 2 2 2 相对的基址寻址和变址寻址(寄存器相对

9、寻址)相对的基址寻址和变址寻址(寄存器相对寻址)相对的基址寻址和变址寻址(寄存器相对寻址)相对的基址寻址和变址寻址(寄存器相对寻址)在在80868086中,通常把中,通常把BXBX和和BPBP作为作为基址寄存器基址寄存器基址寄存器基址寄存器,而,而把把SISI、DIDI作为作为变址寄存器变址寄存器变址寄存器变址寄存器。将这两种寄存器联合起来。将这两种寄存器联合起来进行的寻址就称为基址加变址寻址。这时,操作数的地进行的寻址就称为基址加变址寻址。这时,操作数的地址是段寄存器内容址是段寄存器内容1616加上基址寄存器内容(加上基址寄存器内容(BXBX或或BPBP内容),再加上变址寄存器内容(内容),

10、再加上变址寄存器内容(SISI或或DIDI内容)而得到内容)而得到的。的。在在BPBP参与寻址时,默认使用堆栈段寄存器参与寻址时,默认使用堆栈段寄存器SSSS,否否则默认使用数据段寄存器则默认使用数据段寄存器DSDS。3 3 3 3 基址加变址寻址基址加变址寻址基址加变址寻址基址加变址寻址例例例例:MOV AX,BX+SI 或或 MOV AX,BXSI物理地址=DS16SIBX=30000H1000H3000H=34000H指令功能是将34000H和34001H两单元的内容送到AX中。例:例:例:例:MOV AX,BP+SI物理地址=SS16BPSI=30000H3000H1000H=3400

11、0H指令功能是将34000H和34001H两单元的内容送到AX中。这种寻址实际上是基址加变址寻址的扩充。即操作数的地址是由基址加变址方式得到的地址再加上由指令指明的8位或16位的位移量位移量位移量位移量而得到的。在BPBP参与寻址时,默认使用堆栈段寄存器SSSS,否则默认使用数据段寄存器DSDS。4 4 4 4 相对的基址加变址寻址相对的基址加变址寻址相对的基址加变址寻址相对的基址加变址寻址例例例例:MOV AX,BX+SI+300H或MOV AX,300HBXSI物理地址=DS16SIBXDISP=30000H1000H3000H0300H=34300H指令功能是将34300H和34301H

12、两单元的内容送到AX中。五五五五 寻址方式总结寻址方式总结寻址方式总结寻址方式总结第二节第二节 8086指令系统概述指令系统概述 一一 机器指令格式机器指令格式 8086的指令为的指令为 1-6 字节,包括字节,包括操作码域操作码域操作码域操作码域和和操作数域操作数域操作数域操作数域。1 1 1 1 操作码域操作码域操作码域操作码域 指令的第一或前两字节为操作码域,表示指令指令的第一或前两字节为操作码域,表示指令的操作码和寻址方式。的操作码和寻址方式。操作码域之后部分为操作数域。一般包括以下形式。操作码域之后部分为操作数域。一般包括以下形式。q 2 2字节有效地址(偏移量)字节有效地址(偏移量

13、)q 1 1或或2 2字节位移量字节位移量q 1 1或或2 2字节立即数字节立即数q 1 1或或2 2字节位移量后跟字节位移量后跟1 1或或2 2字节立即数字节立即数q 2 2字节偏移量和字节偏移量和2 2字节段地址字节段地址2 2 2 2 操作数域操作数域操作数域操作数域 指令执行时间取决于指令执行时间取决于CPU的时钟周期的长短和执的时钟周期的长短和执行指令所需的时钟周期数。指令执行时间一般由以下行指令所需的时钟周期数。指令执行时间一般由以下三部分组成:三部分组成:指令基本执行时间指令基本执行时间指令基本执行时间指令基本执行时间 计算有效地址的时间计算有效地址的时间计算有效地址的时间计算有

14、效地址的时间 存取操作数访问内存的时间存取操作数访问内存的时间存取操作数访问内存的时间存取操作数访问内存的时间 由于由于8086内部总线接口部件和执行部件是并行工内部总线接口部件和执行部件是并行工作的,在计算指令执行时间时假定指令已经预取到指作的,在计算指令执行时间时假定指令已经预取到指令队列中,没有考虑取指令时间。如果没能及时预取令队列中,没有考虑取指令时间。如果没能及时预取指令,指令执行时间需适当延长。指令,指令执行时间需适当延长。二二 指令执行时间指令执行时间例:例:例:例:8086 CPU时钟为5MHz,计算各种ADD指令的执行时间。设时钟周期为0.2s 寄存器寻址 ADD AXADD

15、 AX,BXBX 基本执行时间:3个时钟 执行时间:3*0.2s=0.6s 基址变址寻址(结果在寄存器中)ADD AXADD AX,BP+SIBP+SI 基本执行时间:9个时钟 计算有效地址时间:8个时钟 访问内存1次 操作数在偶地址:4个时钟 操作数在奇地址:4+4个时钟 源操作数在偶地址执行时间:(9+8+4)*0.2s=4.2s 源操作数在奇地址执行时间:(9+8+4+4)*0.2s=5s 基址变址寻址(结果在内存中)ADD BP+SI,AX 基本执行时间:16个时钟 计算有效地址时间:8个时钟 访问内存2次 目标操作数在偶地址:4+4个时钟 目标操作数在奇地址:8+8个时钟 目标操作数

16、在偶地址执行时间:(16+8+8)*0.2s=6.4s 目标操作数在奇地址执行时间:(16+8+16)*0.2s=8s 8086的指令系统包含133条指令,这些指令大致可分为6种类型:数据传送指令数据传送指令数据传送指令数据传送指令 逻辑运算和移位指令逻辑运算和移位指令逻辑运算和移位指令逻辑运算和移位指令 算术运算指令算术运算指令算术运算指令算术运算指令 串操作指令串操作指令串操作指令串操作指令 控制转移指令控制转移指令控制转移指令控制转移指令第三节第三节 8086指令系统指令系统8086有4类传送指令,实现CPU的内部寄存器之间、CPU和存储器之间、CPU和I/O端口之间的数据传送。1 1

17、1 1通用传送指令通用传送指令通用传送指令通用传送指令 通用传送指令中包括:最基本的传送指令 MOVMOV 交换指令 XCHGXCHG 堆栈指令 PUSHPUSH和POPPOP一一 数据传送指令数据传送指令指令格式:MOV OPRDlMOV OPRDl,OPRD2OPRD2执行功能:该指令可把源操作数复制到目标操作数中。OPRD1:可以是累加器、寄存器和存贮器。OPRD2:可以是累加器、寄存器、存贮器以及立即数(1 1 1 1)最基本的传送指令最基本的传送指令最基本的传送指令最基本的传送指令例例例例:MOV AL,BLMOV ES,DXMOV AX,BXMOV DI,CXMOV CX,1000

18、HMOV BL,40MOV DX,5060HMOV WORD PTRSI,6070MOV BYTE PTRBX,55H注意:注意:注意:注意:可以传送8位或16位操作数。不能在两个存贮器单元之间进行数据直接传送。MOV AL,1000H MOV 2000H,AL CSCS和IPIP不能作为目标操作数。BPBP参与寻址默认使用段寄存器SSSS,否则默认使用DSDS。不能将立即数直接传送到段寄存器。MOV DS,5000H MOV AX,5000H MOV DS,AX 在执行给SSSS赋值的指令时,在本条指令和下一条指令执行期间自动禁止外部中断。MOV AX,5000HMOV SS,AXMOV S

19、P,1000H 所有通用传送指令不影响标志不影响标志不影响标志不影响标志。数据传送方向示意图数据传送方向示意图数据传送方向示意图数据传送方向示意图 指令格式:XCHG OPRDlXCHG OPRDl,OPRD2OPRD2执行功能:交换指令把一个字节或一个字的源操作数与目的操作数相交换。XCHG AL,CL ;累加器低8位和通用寄存器CL之间交换XCHG AX,DI;累加器AX和通用寄存器DI之间交换XCHG AX,2530 ;累加器AX和内存2530单元的字型数交换XCHG BX,SI ;通用寄存器BX和存储器SI和SI+1两个单元交换(2 2)交换指令)交换指令)交换指令)交换指令注意:注意

20、:注意:注意:目标操作数和源操作数不能均为内存单元。段寄存器段寄存器段寄存器段寄存器和IPIP不能用于交换指令。不影响标志不影响标志不影响标志不影响标志。堆栈是一个后进先出的线性表。堆栈是一个后进先出的线性表。堆栈是一个后进先出的线性表。堆栈是一个后进先出的线性表。压入堆栈指令压入堆栈指令压入堆栈指令压入堆栈指令:PUSH OPRDPUSH OPRDSP-2 OPRDSP弹出堆栈指令弹出堆栈指令弹出堆栈指令弹出堆栈指令:POP OPRDPOP OPRDSPOPRD SP+280868086的堆栈向地址减小的方向生长。的堆栈向地址减小的方向生长。的堆栈向地址减小的方向生长。的堆栈向地址减小的方向

21、生长。(3 3 3 3)堆栈操作指令)堆栈操作指令)堆栈操作指令)堆栈操作指令 例:例:例:例:MOV AX,1234H MOV DX,5678H MOV SP,2000H PUSH AX PUSH DX POP DX POP AX 注意:注意:注意:注意:8086的堆栈操作是按字字字字进行的。PUSH AL PUSH AX CSCS内容可以入栈但不能弹出数据到CSCS。堆栈内容按照后进先出的顺序传送,保护和恢复寄存器内容需按相反顺序进行。PUSH AXPUSH BXPUSH CXPOP CXPOP BXPOP AX例:例:例:例:交换AX,BX的内容PUSH AXPUSH BXPOP AXP

22、OP BX8086有3条地址传送指令。(1 1)取有效地址指令)取有效地址指令)取有效地址指令)取有效地址指令LEALEA指令格式:LEA OPRDlLEA OPRDl,OPRD2OPRD2执行功能:该指令把源操作数OPRD2(地址偏移量)传送至目的操作数OPRDl中。源操作数必须是一个内存单元地址,目标操作数必须是一个16位的通用寄存器。这条指令通常用于使一个寄存器作为地址指针。LEA AX,2728相当于MOV AX,2728 LEA BX,BP+SI2 2 2 2地址传送指令地址传送指令地址传送指令地址传送指令(2 2)LDSLDS指令指令指令指令该指令完成一个地址指针的传送。地址指针包

23、括段地址和地址偏移量。指令执行时,将段地址送入DS,地址偏移量送入一个16位的指针寄存器或变址寄存器。例:例:例:例:LDS SI,BX是把存放于内存数据段中BX所指的32位地址指针的段地址送入DS,偏移地址送入SI。(3 3)LESLES指令指令指令指令这条指令除将地址指针的段地址送入ES外,其他操作与LDS的类似。例:例:例:例:LES DI,BX+50是把存放于内存数据段中以BX+50的结果为有效地址的一个32位地址指针的段地址送入ES,偏移地址送入DI。8086有3条标志传送指令。(1 1)读取标志指令)读取标志指令)读取标志指令)读取标志指令LAHFLAHF执行功能:将标志寄存器的低

24、八位送入AHAH。(2 2)设置标志指令)设置标志指令)设置标志指令)设置标志指令SAHFSAHF执行功能:将AH AH 送入标志寄存器的低八位。标志传送指令标志传送指令标志传送指令标志传送指令OFOFDFDFIFIFTFTFSFSFZFZFAFAFPFPFCFCF(3 3)标志寄存器入出栈指令)标志寄存器入出栈指令)标志寄存器入出栈指令)标志寄存器入出栈指令PUSHFPUSHFPOPFPOPF 例:例:例:例:读取标志内容到AXPUSHFPOP AX将AX内容复制到标志寄存器PUSH AXPOPF8086有类累加器专用传送指令。(1 1)输入输出指令)输入输出指令)输入输出指令)输入输出指令

25、CPU使用ALAL对位端口进行输入输出操作,通过AXAX对1616位端口进行输入输出操作。直接输入输出指令直接输入输出指令直接输入输出指令直接输入输出指令指令格式:IN IN 累加器,端口号累加器,端口号累加器,端口号累加器,端口号 OUT OUT 端口号,累加器端口号,累加器端口号,累加器端口号,累加器端口号范围:端口号范围:端口号范围:端口号范围:0 0255255(0 0FFHFFH)例:例:例:例:IN AL,50HIN AX,80HOUT 60H,AX4 4 4 4累加器专用传送指令累加器专用传送指令累加器专用传送指令累加器专用传送指令 间接输入输出指令间接输入输出指令间接输入输出指

26、令间接输入输出指令端口号由DXDX提供(范围范围范围范围0 0FFFFFFFF)IN AL,DXOUT DX,AL IN AX,DXOUT DX,AX输入输出指令不影响标志。输入输出指令不影响标志。输入输出指令不影响标志。输入输出指令不影响标志。可以将累加器中的值转换为内存表中的一个值,常用于数码转换。BX+ALBX+ALALAL例:例:例:例:MOV BX,1000HMOV AL,5XLAT程序执行后AL=55H注意:注意:注意:注意:默认使用DSDS提供段地址。不影响标志不影响标志不影响标志不影响标志。(2 2)换码指令)换码指令)换码指令)换码指令XLATXLAT1 1 1 1 逻辑运算

27、指令逻辑运算指令逻辑运算指令逻辑运算指令 8086逻辑运算指令包括ANDAND(与)、OROR(或)、NOTNOT(非)、XORXOR(异或)和TESTTEST(测试)指令。(1 1 1 1)双操作数指令)双操作数指令)双操作数指令)双操作数指令 ANDAND,OROR,XORXOR AND AL,0FH AL=1001 11010000 1101 AND DX,BX+SI OR AL,0FH AL=1001 11011001 1111 OR AX,20F0H XOR AL,0FH AL=1001 11011001 0010 XOR AX,AX AX=0二逻辑运算和移位指令二逻辑运算和移位指令

28、标志影响:标志影响:标志影响:标志影响:影响CF,OF,PF,SF,ZFCF,OF,PF,SF,ZF。(。(。(。(CF,OF CF,OF 清)清)清)清)AFAF不确定。(2 2 2 2)TESTTEST(测试)指令测试)指令测试)指令测试)指令 TESTTEST指令与ANDAND指令执行同样的操作,但TESTTEST指令不将结果回送到目标操作数,只是通过运算影响标志。TEST AX,8000H 如果AX最高位为0,则ZF=1,否则ZF=0。TEST AL,81H 如果AL最高位和最低位均为0,则ZF=1,否则ZF=0。TEST指令可用于测试目标操作数的某几位是否全为。(3 3)NOTNOT

29、逻辑求反指令逻辑求反指令逻辑求反指令逻辑求反指令该指令对目标操作数按位取反。对标志位不产生影响。对标志位不产生影响。对标志位不产生影响。对标志位不产生影响。例:例:例:例:NOT ALNOT WORD PTR1000H总结:总结:总结:总结:ANDAND 指令常用于将目标操作数的指定位清。OROR 指令常用于将目标操作数的指定位置。XORXOR 指令常用于将目标操作数的指定位取反。TESTTEST 指令常用于测试目标操作数的某几位是否全为。()非循环移位指令()非循环移位指令()非循环移位指令()非循环移位指令SALSALSHLSHL算术左移和逻辑左移指令算术左移和逻辑左移指令算术左移和逻辑左

30、移指令算术左移和逻辑左移指令指令格式:SAL/SHL OPRDSAL/SHL OPRD,CL/1CL/1指令功能:这两条指令的操作结果是完全一样的,将目的操作数OPRD中的二进制数向左移动1位或CL寄存器中指定的位数。左移一位时,操作数的最高位移出送到CF中,同时最低位送0。目的操作数可以是8位,也可以16位。目的操作数OPRD:可以是累加器、寄存器、也可是存储器。2 2 2 2移位指令移位指令移位指令移位指令SHL AX,1SALWORD PTRBX+SI+100,CL利用左移1位操作可实现操作数乘2的运算。例:例:例:例:SHL AL,1AL*2 MOV CL,4 SHL AL,CLAL*

31、16SARSAR算术右移指令算术右移指令算术右移指令算术右移指令 指令格式:SAR OPRDSAR OPRD,CL/1CL/1指令功能:将目的操作数OPRD中的二进制数向右移动1位或CL寄存器中指定的位数。该指令每执行一次移位操作,就使操作数右移一位,但符号位保持不变,而最低位移至标志位CF,目的操作数可以是8位,也可以16位。例:例:例:例:MOV AH,5AHSAR AH,1指令执行完后,(AH)=2DH,CF=0算术右移指令可实现对带符号数的除操作。算术右移指令可实现对带符号数的除操作。算术右移指令可实现对带符号数的除操作。算术右移指令可实现对带符号数的除操作。SHRSHR逻辑右移指令逻

32、辑右移指令逻辑右移指令逻辑右移指令指令格式:SHR OPRDSHR OPRD,CL/1CL/1指令功能:将目的操作数OPRD中的二进制数向右移动1位或CL寄存器中指定的位数。该指令每执行一次移位操作,就使操作数右移一位,左面的最高位将补0,最低位移至标志位CF中。目的操作数可以是8位,也可以16位。例:例:例:例:MOV BL,4EH SHR BL,1指令执行后,(BL)=27H,CF=0逻辑右移指令可实现对无符号数的除操作。逻辑右移指令可实现对无符号数的除操作。逻辑右移指令可实现对无符号数的除操作。逻辑右移指令可实现对无符号数的除操作。非循环移位指令对标志的影响非循环移位指令对标志的影响非循

33、环移位指令对标志的影响非循环移位指令对标志的影响:影响影响影响影响 CF OF PF SF ZFCF OF PF SF ZF AF AF 不确定不确定不确定不确定()循环移位指令()循环移位指令()循环移位指令()循环移位指令ROLROL不带进位的循环左移指令不带进位的循环左移指令不带进位的循环左移指令不带进位的循环左移指令指令格式:ROL OPRDROL OPRD,CL/1CL/1 指令功能:将目的操作数OPRD中的二进制数向左移动1位或CL寄存器中指定的位数。左移一位时,操作数的最高位移出送到CF中,同时送至最低位。目的操作数可以是8位,也可以16位。例:例:例:例:MOV AL,5BH

34、ROL AL,1指令执行完后,(AL)=B6H,CF=0RORROR不带进位的循环右移指令不带进位的循环右移指令不带进位的循环右移指令不带进位的循环右移指令指令格式:ROR OPRDROR OPRD,CL/1CL/1指令功能:将目的操作数OPRD中的二进制数向右移动1位或CL寄存器中指定的位数。右移一位时,操作数的最低位移出送到CF中,同时送至最高位。目的操作数可以是8位,也可以16位。例:例:例:例:MOV AL,6BH ROL AL,1指令执行完后,(AL)=B5H,CF=1RCLRCL带进位的循环左移指令带进位的循环左移指令带进位的循环左移指令带进位的循环左移指令指令格式:RCL OPR

35、DRCL OPRD,CL/1CL/1指令功能:将目的操作数OPRD中的二进制数向左移动1位或CL寄存器中指定的位数。左移一位时,操作数的最高位移出送到CF中,而原来的CF位送至最低位。目的操作数可以是8位,也可以16位。例:例:例:例:MOV AL,4CH RCL AL,1若CF=0,指令执行后,(AL)=98H,CF=0RCRRCR带进位的循环右移指令带进位的循环右移指令带进位的循环右移指令带进位的循环右移指令指令格式:RCR OPRDRCR OPRD,CL/1CL/1指令功能:将目的操作数OPRD中的二进制数向右移动1位或CL寄存器中指定的位数。右移一位时,操作数的最低位移出送到CF中,而

36、原来的CF位送至最高位。例:例:例:例:MOV AL,5CH RCR AL,1若CF=1,指令执行完后,(AL)=AEH,CF=0循环移位指令对标志的影响循环移位指令对标志的影响循环移位指令对标志的影响循环移位指令对标志的影响:影响影响影响影响 CF OFCF OF8086可提供加、减、乘、除4种基本算术运算的操作指令。这些指令可实现字节或字的运算,可以用于符号数和无符号数的运算。加、减运算的源操作数和目的操作数的关系加、减运算的源操作数和目的操作数的关系加、减运算的源操作数和目的操作数的关系加、减运算的源操作数和目的操作数的关系三三 算术运算指令算术运算指令(1 1)不带进位的加法指令)不带

37、进位的加法指令)不带进位的加法指令)不带进位的加法指令指令格式:ADD OPRDlADD OPRDl,OPRD2OPRD2指令功能:OPRDlOPRDl+OPRD2ADDADD指令两个操作数相加,结果送至目的操作数。源操作数可以是累加器、通用寄存器、存贮器和立即数。目标操作数可以是累加器、通用寄存器或存贮器。1 1 1 1 加法指令加法指令加法指令加法指令例:例:例:例:ADDAL,30 ADDAX,1000HADDAX,SI ADDAL,BXADDDX,BX+SI+100ADDBYTE PTRSI,100ADDSI+1000H,AX注注注注意意意意:两个存储单元不能直接相加,段寄存器也不能参

38、加运算。在使用时还要注意两个操作数类型一致。这些指令执行时,对所有状态标志位都会产生影响。(2 2)带进位的加法指令)带进位的加法指令)带进位的加法指令)带进位的加法指令指令格式:ADC OPRD1ADC OPRD1,OPRD2OPRD2指令功能:OPRD1OPRD1+OPRD2+CY这条指令与ADD指令基本相同,只是在对两个操作数进行相加运算时还应加上进位位的当前值,然后再将结果送至目的操作数。该指令对标志位的影响与该指令对标志位的影响与该指令对标志位的影响与该指令对标志位的影响与ADDADD指令对标志位的影响相同。指令对标志位的影响相同。指令对标志位的影响相同。指令对标志位的影响相同。MO

39、VSI,2000HMOVDI,3000HMOVAX,SIADDAX,DIMOVSI,AXMOVAX,SI+2ADC AX,DI+2MOV SI+2,AX例例例例:现有两个现有两个4字节无符号数,分别存放在内存字节无符号数,分别存放在内存2000H和和3000H起始的单元,低字节在前,高字节在后。计算两者的和,要求起始的单元,低字节在前,高字节在后。计算两者的和,要求结果存放在结果存放在2000H起始的单元中。起始的单元中。MOVSI,2000HMOVDI,3000HMOVAX,DIADDSI,AXMOVAX,DI+2ADC SI+2,AX(3 3)加)加)加)加1 1指令指令指令指令 INC

40、INC 指令格式:INC OPRDINC OPRD指令功能:OPRDOPRD1这条指令对指定的操作数进行加1操作,其操作数可以是通用寄存器,也可以是存储器。该该指指令令执执行行结结果果对对标标志志位位AFAF、OFOF、PFPF、SFSF和和ZFZF有有影影响响,而而对对对对 CF 不产生影响。不产生影响。不产生影响。不产生影响。例:例:例:例:INC ALINC CXINC WORD PTRSIINC BYTE PTR SI+BX(1 1)不带借位的减法指令)不带借位的减法指令)不带借位的减法指令)不带借位的减法指令指令格式:SUB OPRDlSUB OPRDl,OPRD2OPRD2指令功能

41、:OPRD1OPRD1OPRD2该指令用来对目的操作数和源操作数的字或字节相减,其结果存放在目的操作数。源操作数OPRD2:可以是累加器、通用寄存器、存储器、立即数。目的操作数OPRD1:可以是累加器、通用寄存器、存储器。指令执行后对各状态标志位指令执行后对各状态标志位指令执行后对各状态标志位指令执行后对各状态标志位OFOF、SFSF、AFAF、PFPF和和和和CFCF均产生影响。均产生影响。均产生影响。均产生影响。2 2 2 2 减法指令减法指令减法指令减法指令例:例:例:例:SUBAL,78H SUBBX,5678H SUBAX,CX SUBAL,SI+4 SUBDX,BX+SI+1000

42、H SUBBYTE PTRSI5,100(2 2)带借位的减法指令)带借位的减法指令)带借位的减法指令)带借位的减法指令指令格式:SBB OPRD1SBB OPRD1,OPRD2OPRD2指令功能:OPRD1OPRD1OPRD2CY该指令与SUB相类似,只不过在两个操作数相减时,还应减去借位标志CF的当前值。这条指令主要用于多字节的减法运算。该指令对标志位该指令对标志位该指令对标志位该指令对标志位AFAF、CFCF、OFOF、PFPF、SFSF和和和和ZFZF都将产都将产都将产都将产生影响。生影响。生影响。生影响。(3 3)减)减)减)减1 1指令指令指令指令 DEC DEC 指令格式:DEC

43、 OPRDDEC OPRD指令功能:OPRDOPRD1该指令实现对操作数的减1操作,所用的操作数可以是寄存器的,也可以是存储器。在相减时,把操作数看作为无符号的二进制数。该该该该指指指指令令令令执执执执行行行行结结结结果果果果将将将将影影影影响响响响标标标标志志志志位位位位AFAF、OFOF、PFPF、SFSF和和和和ZFZF,但但但但CFCF状态不确定。状态不确定。状态不确定。状态不确定。例:例:例:例:DEC BL DEC CX DEC BYTE PTRSI(4 4)求补指令)求补指令)求补指令)求补指令 NEG NEG 指令格式:NEG OPRDNEG OPRD指令功能:OPRD0OPR

44、D该指令用来对操作数进行求补操作,即用零减去操作数,然后再将结果送回。相当于操作数求反加1并保存在目的操作数中。例:例:例:例:NEG AL NEG BYTE PTRSI如果操作数的值为-128(16进制数为80H)或者-32768(16进制数为8000H),执行求补指令后,操作数没有变化,但溢出标志OF=1OF=1。利用求补指令可以获得操作数的相反数的补码。利用求补指令可以获得操作数的相反数的补码。利用求补指令可以获得操作数的相反数的补码。利用求补指令可以获得操作数的相反数的补码。(5 5)比较指令)比较指令)比较指令)比较指令指令格式:CMP OPRDlCMP OPRDl,OPRD2OPR

45、D2指令功能:OPRD1OPRD2该指令执行减法操作,不不不不保保保保存存存存相相相相减减减减的的的的结结结结果果果果。指令执行后两操作数的内容不变,但相减的结果影响标志位。在程序设计时,比较指令通常为程序的转移提供条件。例:例:例:例:CMP AX,2000H CMP AL,50H CMP DX,SI CMP AX,BXSI10H 影响标志位影响标志位影响标志位影响标志位AFAF、CFCF、OFOF、PFPF、SFSF、ZFZF,同同同同SUBSUB。比较结果的判断比较结果的判断比较结果的判断比较结果的判断1 1)两个操作数相等)两个操作数相等)两个操作数相等)两个操作数相等如果所比较的两个

46、操作数相等时,那么标志位ZF=1ZF=1,所以根据ZFZF就可以判断两数是否相等。2 2)两个操作数不等)两个操作数不等)两个操作数不等)两个操作数不等两个无符号数的比较两个无符号数的比较两个无符号数的比较两个无符号数的比较无符号数相减时,CFCF就是借位标志。如果CF=0CF=0,表示无借位,即被减数大,减数小。如果CF=1CF=1,表示有借位,即被减数小,减数大。两个有符号数的比较两个有符号数的比较两个有符号数的比较两个有符号数的比较两个有符号的比较时,同符号数相比较,相减的结果不会超出带符号数的表示范围,即不会产生溢出,OF=0OF=0;两个不同号的带符号数比较,相减的结果有可能产生溢出

47、。这时可以用如下结论判断。当当当当OFOFSF=0SF=0时(既时(既时(既时(既SF=OFSF=OF),OPRD1OPRD2OPRD1OPRD2。当当当当OFOFSF=1SF=1时(既时(既时(既时(既SFOFSFOF),OPRD1OPRD2OPRD1OPRD2。8086的乘法指令分为无符号数乘法指令和带符号数乘法指令两种。目标目标目标目标操作数:ALAL或或或或AXAX(隐含给出)隐含给出)隐含给出)隐含给出)源源源源操作数:通用寄存器、存储器。不能为立立立立即即即即数数数数和段段段段寄寄寄寄存器存器存器存器。乘法乘法乘法乘法指令对状态标志指令对状态标志指令对状态标志指令对状态标志CFCF

48、、OFOF有影响,有影响,有影响,有影响,SFSF、ZFZF、AFAF、PFPF不确定。不确定。不确定。不确定。3 3 3 3 乘法指令乘法指令乘法指令乘法指令(1 1)无符号数乘法指令)无符号数乘法指令)无符号数乘法指令)无符号数乘法指令MULMUL指令格式:MUL OPRDMUL OPRD指令功能:若若若若OPRDOPRD为字节数据,则执行为字节数据,则执行为字节数据,则执行为字节数据,则执行AXAXALOPRDALOPRD 若若若若OPRDOPRD为字数据,则执行为字数据,则执行为字数据,则执行为字数据,则执行DXDX、AXAXOPRDAXAXOPRD 例:例:例:例:MUL CLMUL

49、 BXMUL WORD PTR SI要完成1415可以用下列指令:MOV AL,14MOV CL,15MUL CL(2 2)带符号数乘法指令)带符号数乘法指令)带符号数乘法指令)带符号数乘法指令IMULIMUL指令格式:IMUL OPRDIMUL OPRD指令功能:若若若若OPRDOPRD为字节数据,则执行为字节数据,则执行为字节数据,则执行为字节数据,则执行AXAXALOPRDALOPRD 若若若若OPRDOPRD为字数据,则执行为字数据,则执行为字数据,则执行为字数据,则执行DXDX、AXAXAXOPRD AXOPRD 8086有两条除法指令:无符号除法指令和带符号除法指令。它们都可以进行

50、字节或字除法运算,并且规定,除除除除数数数数字字字字长长长长必必必必须须须须是是是是被被被被除除除除数数数数的的的的一一一一半半半半。8位除法的被除数在AXAX中;16位除法的被除数在DXDX与与与与AXAX中,除数由指令指出。对8位数除法,商与余数分别放在ALAL与AHAH中,对16位除法,商与余数分别放在AXAX与DXDX中。指令操作数不能为立即数立即数立即数立即数和段寄存器段寄存器段寄存器段寄存器。除法指令执行后,除法指令执行后,除法指令执行后,除法指令执行后,CFCF、OFOF、AFAF、PFPF、ZFZF、SFSF不确定。不确定。不确定。不确定。4 4 4 4 除法指令除法指令除法指

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁