微机原理与接口技术实用教程

上传人:pu****.1 文档编号:591363202 上传时间:2024-09-17 格式:PPT 页数:55 大小:264.50KB
返回 下载 相关 举报
微机原理与接口技术实用教程_第1页
第1页 / 共55页
微机原理与接口技术实用教程_第2页
第2页 / 共55页
微机原理与接口技术实用教程_第3页
第3页 / 共55页
微机原理与接口技术实用教程_第4页
第4页 / 共55页
微机原理与接口技术实用教程_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《微机原理与接口技术实用教程》由会员分享,可在线阅读,更多相关《微机原理与接口技术实用教程(55页珍藏版)》请在金锄头文库上搜索。

1、第3章 80X86的寻址方式 及指令系统 9/17/20249/17/20241 1本章要点n n及各类指令的功能和用法及各类指令的功能和用法n n80X8680X86系统的各种寻址方式系统的各种寻址方式n n80X8680X86的指令系统构成的指令系统构成9/17/20249/17/20242 2定义:定义:定义:定义:程序程序程序程序: :让计算机完成某种操作的命令,所有指令的集合让计算机完成某种操作的命令,所有指令的集合 称为指令系统。称为指令系统。指令用助记符指令用助记符指令用助记符指令用助记符表示,汇编语言程序经过编译连接后,指令表示,汇编语言程序经过编译连接后,指令助记符转换为二进

2、制代码,即指令代码,或称为机器码,助记符转换为二进制代码,即指令代码,或称为机器码,可以由可以由CPUCPU执行。指令代码需要事先存放在微机系统的执行。指令代码需要事先存放在微机系统的内部存储器中由内部存储器中由CSCS寄存器中的内容所指定的代码段中寄存器中的内容所指定的代码段中。9/17/20249/17/20243 3指令的一般格式:指令的一般格式:指令的一般格式:指令的一般格式: 操作助记符操作助记符 目的操作数(或其位置),源操作数(或其位置)目的操作数(或其位置),源操作数(或其位置) dst src dst src 例如例如: :MOVMOVAX, SIAX, SI对应的机器码是对

3、应的机器码是8BH,04H8BH,04H MOV MOVAX, ES:SIAX, ES:SI对应的机器码是对应的机器码是26H,8BH,04H26H,8BH,04H9/17/20249/17/20244 4 3.1 8086的寻址方式(addressing mode)寻址方式寻址方式:指令中给出的操作数的表示:指令中给出的操作数的表示(或存放)方式,如果操作数存放在存储器(或存放)方式,如果操作数存放在存储器中,中,CPUCPU必须先计算出操作数的物理地址必须先计算出操作数的物理地址寄存器间接寻址寄存器间接寻址直接寻址直接寻址寄存器寄存器寻址址隐含寻址隐含寻址基址变址相对寻址基址变址相对寻址基

4、址变址寻址基址变址寻址寄存器相对寻址寄存器相对寻址立即立即寻址址9/17/20249/17/20245 5 立即寻址:操作数(立即寻址:操作数(8 8位或位或1616位)出现在指令位)出现在指令中,与指令代码一起存放在存储器的代码段中中,与指令代码一起存放在存储器的代码段中。例:例: MOV MOV AX AX,6000H6000H MOV AH MOV AH,60H60H MOV AL MOV AL, 00H 00H9/17/20249/17/20246 6 寄存器寻址:操作数放在寄存器寻址:操作数放在CPUCPU内部的寄存器中,内部的寄存器中, 可为可为8 8位或位或1616位寄存器,由指

5、令给出。位寄存器,由指令给出。例:例:MOV AXMOV AX,BXBX MOV AH, BH MOV AH, BH9/17/20249/17/20247 7 直接寻址直接寻址:操作数放在存储器的数据段(其段地址由:操作数放在存储器的数据段(其段地址由DSDS中的内容决定)中,其有效地址(偏移地址中的内容决定)中,其有效地址(偏移地址 直接用偏(位)移量表示在指令中,占直接用偏(位)移量表示在指令中,占2 2个字节。偏个字节。偏 移量常用移量常用dispdisp表示,是有效地址的一部分或全部表示,是有效地址的一部分或全部, , 可以可以8 8位也可以位也可以1616位。位。例:例:例:例:MO

6、VMOVAXAX,DSDS:0100H0100H9/17/20249/17/20248 8 寄存器间接寻址:操作数在存储单元中,其有效寄存器间接寻址:操作数在存储单元中,其有效由由BXBXSISI或或DIDI中的内容给出表示为:中的内容给出表示为: (BX) (BX) EA= (SI)EA= (SI) (DI) (DI)寄存器BXSI或DI在指令中给出。例: MOVAX,SI9/17/20249/17/20249 9 寄存器相对寻址:操作数在存储器中,其有效地址是寄存器相对寻址:操作数在存储器中,其有效地址是位移量(可位移量(可8 8位或者位或者1616位)与变址或基址寄存器之和,位)与变址或

7、基址寄存器之和,DispDisp与寄存器在指令中给出。与寄存器在指令中给出。例: MOV AX,5BX 也可写成 MOV AX,BX59/17/20249/17/20241010 基址变址寻址基址变址寻址:操作数在存储器中,偏移地址由基址寄存器和变址寄存器中的内容相加确定。例:MOVAX,BXDI9/17/20249/17/20241111 基址变址相对寻址基址变址相对寻址:寄存器相对寻址与基址变址寻址:寄存器相对寻址与基址变址寻址 方式的结合。方式的结合。disp与寄存器均在指令中给出。例: MOV AX,5BPSI9/17/20249/17/20241212 隐含寻址:指令本身隐含了操作数

8、的地址, 例如:字符串操作指令MOVS, 源操作数由DS:SI寄存器间接寻址, 目的操作数由ES:DI寄存器间接寻址。以各种类型访问存储器时,存储单元地址的组成:以各种类型访问存储器时,存储单元地址的组成:9/17/20249/17/202413133.2 8086/8088的指令系统a a,除,除SAHFSAHF外不影响标志位,外不影响标志位,SAHFSAHF是将是将AH AH 内容送到内容送到 标志寄存器的低标志寄存器的低8 8位位; ; b b,不能用,不能用CSCS作为目的操作数作为目的操作数; ;c c,源操作数和目的操作数不能同时在存储器中,源操作数和目的操作数不能同时在存储器中,

9、 即即: :不能在一条指令中实现数据在存储器中的传送。不能在一条指令中实现数据在存储器中的传送。3.2.1 3.2.1 数据传送指令数据传送指令9/17/20249/17/20241414. .数据传送,由数据传送,由 源源-目的目的例:例:MOVMOVAXAX,BX BX ;寄存器寻址;寄存器寻址 MOV MOVDLDL,AL AL ;寄存器寻址;寄存器寻址 MOV MOVAXAX,02 02 ;源操作数用立即寻址;源操作数用立即寻址 MOV MOVSISI,BX BX ;源操作数寄存器间接寻址;源操作数寄存器间接寻址 MOV AL MOV AL,4DI 4DI ;源操作数用寄存器相对寻址;

10、源操作数用寄存器相对寻址 MOV AX MOV AX,BX+2 BX+2 ;源操作数用寄存器相对寻址;源操作数用寄存器相对寻址 MOV BXDI MOV BXDI,DXDX;目的操作数用基址加变址寻址;目的操作数用基址加变址寻址1 1、MOVMOV指令:数据传送(复制)指令:数据传送(复制)9/17/20249/17/20241515 立即数、代码段寄存器立即数、代码段寄存器CSCS只能作源操作数。只能作源操作数。 IP IP寄存器不能作源操作数或目的操作数。寄存器不能作源操作数或目的操作数。 MOV MOV指令不能在两个存储单元之间直接传指令不能在两个存储单元之间直接传 送数据,也不能在两个

11、段寄存器之间直接送数据,也不能在两个段寄存器之间直接 传送数据。传送数据。 两个操作数的类型属性要一致。两个操作数的类型属性要一致。 注意事项!注意事项!注意事项!注意事项!9/17/20249/17/20241616. 堆栈操作指令: 堆栈:是以后进先出规则保存信息的一种存储机构。(1)8086中堆栈段地址在SS寄存器中,堆栈当前偏移地址在SP寄存器中,SP称为堆栈指针。SP的初值代表了堆栈区的大小,若 SP=0100H,有右图所示: ( 2 ) 堆栈操作方式:以字为单位进行操作,高字节在高地址,低字节在低地址。9/17/20249/17/20241717(3)(3)堆栈操作指令堆栈操作指令

12、a a、压入指令:压入指令: PUSH PUSH例:例:PUSHPUSHAXAX 如果如果 AX=1234H AX=1234H,则该指令执行后的结果:,则该指令执行后的结果: SP SP00FEH00FEH,(00FFH00FFH)12H12H,(,(00FEH00FEH)34H34Hb、弹出指令: POP例:POPBX9/17/20249/17/20241818. . 字节或字交换指令字节或字交换指令:寄存器之间或寄存器与存储器之间内容交换。寄存器之间或寄存器与存储器之间内容交换。XCHG OPR1XCHG OPR1,OPR2OPR2 ;(;(OPR1OPR1) (OPR2OPR2)例:例:

13、xchg ax, cxxchg ax, cx9/17/20249/17/20241919. . 字节转换指令字节转换指令:常用于查表。:常用于查表。格式格式格式格式:XLAT XLAT 转换表转换表 即:即:XLATXLAT ;(BX+AL)(BX+AL)ALAL,BXBX的内容是表的首地的内容是表的首地 址,址,ALAL的内容是表内的序号。采用隐含寻址方式。的内容是表内的序号。采用隐含寻址方式。功能功能功能功能:将一个字节从一种代码转换成另一种代码。:将一个字节从一种代码转换成另一种代码。XLATXLAT指令是通过查表方式来完成翻译功能的,因此,执行指令是通过查表方式来完成翻译功能的,因此,

14、执行该指令之前,必须建立好一张翻译表,该表的最大容量为该指令之前,必须建立好一张翻译表,该表的最大容量为256256个字节。个字节。 9/17/20249/17/20242020 IN INA A,portport;数据从;数据从 port port 端口输入到端口输入到ALAL或或AXAX OUT OUT portport,A A;数据从;数据从ALAL或或AXAX输出到输出到 port port 端口端口1 1) A A是是ALAL(8 8位输入输出)或位输入输出)或AXAX(1616位输入输出)位输入输出)2 2)port port 是外设的端口地址,可以是是外设的端口地址,可以是8 8

15、位立即数表示的直接位立即数表示的直接 地址,也可以用地址,也可以用DXDX寄存器的内容作为端口地址。寄存器的内容作为端口地址。例:例:ININALAL,3FH3FH MOVMOV DXDX,3FH3FHOUTOUTDXDX,AXAX2 2、输入输出指令(、输入输出指令(I/OI/O指令)指令)9/17/20249/17/20242121SAHFPUSHFPOPF标志送标志送AHAH指令指令功能是:将标功能是:将标志寄存器中的志寄存器中的SFSF、ZFZF、AFAF、PFPF传送至传送至AHAH的的指定位,空位指定位,空位没有定义没有定义AHAH送标志位寄送标志位寄存器低字节指存器低字节指令。令

16、。影响标志位,影响标志位,但对但对OFOF、DFDF、IFIF无影响无影响标志入栈指令标志入栈指令修改堆栈指针修改堆栈指针不影响标志位不影响标志位标志出栈指令标志出栈指令修改堆栈指针修改堆栈指针影响标志位影响标志位3 3、地址目标传送指令、地址目标传送指令LEA9/17/20249/17/202422224 4、标志传送指令、标志传送指令标志送AH指令LAHFAH送标志寄存器低字节指令SAHF标志入栈指令PUSHF标志出栈指令POPF9/17/20249/17/202423233.2.2 3.2.2 算术运算类指令算术运算类指令1.1.1.1.加法与减法指令加法与减法指令加法与减法指令加法与减

17、法指令 a a,影响标志位,影响标志位 b b,只能有一个操作数在存储器中,只能有一个操作数在存储器中 c c,目的操作数不能采用立即寻址方法,目的操作数不能采用立即寻址方法ADDADDDSTDST,SRCSRC ;DSTDSTDST+ SRCDST+ SRCADC ADC DSTDST,SRCSRC ;DSTDSTDST+ SRC+CFDST+ SRC+CFSUB SUB DSTDST,SRCSRC ;DSTDSTDST- SRCDST- SRCSBB SBB DSTDST,SRCSRC ;DSTDSTDST- SRC-CFDST- SRC-CFNEG NEG DSTDST ;DSTDST0

18、-DST0-DST,即取补,即取补9/17/20249/17/20242424ADDADDAXAX,SI ; SI ; 完成完成1616位数据的加法运算位数据的加法运算 ;SRCSRC在存储器中在存储器中 ;DSTDST是是CPUCPU中的中的AXAX寄存器寄存器例:例:SBBSBBCXCX,DATA1 ; DATA1 ; 完成完成1616位数据的减法运算位数据的减法运算 ;SRCSRC在存储器中在存储器中 ;DSTDST是是CPUCPU中的中的CXCX寄存器寄存器例:例:9/17/20249/17/202425252.2.2.2.比较指令比较指令比较指令比较指令CMPCMPDSTDST,SR

19、CSRC ;DST-SRCDST-SRC,结果不保留,结果不保留,结果不保留,结果不保留 ;只影响标志位;只影响标志位;只影响标志位;只影响标志位例:例:例:例: CMP CMP AXAX,BXBXa a、作为无符号数时,比较后的大小由、作为无符号数时,比较后的大小由CFCF和和ZFZF决定:决定: ZF=1 ZF=1 :则:则 AX = BX AX = BX ZF=0 ZF=0,CF=0 CF=0 :则:则 AX BX AX BX ZF=0 ZF=0,CF=1 CF=1 :则:则 AX BX AX BXb b、 作为带符号数时,比较后的大小由作为带符号数时,比较后的大小由SFSF、ZFZF和

20、和OFOF决定:决定: ZF=1 ZF=1 :则:则 AX = BX AX = BX OF OF 异或异或 SF = 0 SF = 0 :则:则 AX BX AX BX OF OF 异或异或 SF = 1 SF = 1 :则:则 AX BX AX BX9/17/20249/17/20242626例:例:MOVMOV AXAX,003AH 003AH ;0000 0000 0011 10100000 0000 0011 1010 MOV MOVBXBX,8003H 8003H ;1000 0000 0000 0011 1000 0000 0000 0011 CMP CMPAXAX,BX BX ;

21、1000 0000 0011 01111000 0000 0011 0111影响标志位:影响标志位: CF=1 CF=1,OF=1OF=1,ZF=0ZF=0,SF=1SF=1,PF=0PF=0,AF=0AF=0作为无符号数时,作为无符号数时,CF=1CF=1, 则则 AX BX AX 9 AL&0FH9 或或 AF=1 AF=1, 则则 AL+6 AL+6ALAL,1 1 AFAF 若若 AL&0F0H90H AL&0F0H90H 或或 CF=1 CF=1, 则则 AL+60H AL+60HALAL,1 1CFCF DAA DAA 9/17/20249/17/20243232(1) (1) 针

22、针对对组组合合BCDBCD数数组合组合BCDBCD数的减法调整指令,半字节数的减法调整指令,半字节1 1位位BCDBCD相减,有借位,要减相减,有借位,要减6 6调整。表示为调整。表示为: :若若 AL&0FH9 AL&0FH9 或或 AF=1 AF=1,则,则 AL-6 AL-6ALAL, 1 1 AFAF若若 AL9FH AL9FH 或或 CF=1 CF=1, 则则 AL-60H AL-60HALAL, 1 1 CFCF DAS DAS 9/17/20249/17/20243333(1) (1) 针针对对分分离离BCDBCD数数AAAAAA分离分离BCDBCD数的加法调整指令,只取低半字节

23、,数的加法调整指令,只取低半字节,其余同组合其余同组合BCDBCD数。表示为数。表示为: :若若 AL&0FH9 AL&0FH9 或或 AF=1, AF=1, 则则AL+6AL+6AL, AL, AH+1 AH+1AH,AH,1 1AF ; AFAF ; AFCF, AL&0FHCF, AL&0FHAL (AL (只取低只取低4 4位位) ) 9/17/20249/17/20243434(1) (1) 针针对对分分离离BCDBCD数数AASAAS分离分离BCDBCD数的减法调整指令,只取低半字节,数的减法调整指令,只取低半字节,其余同组合其余同组合BCDBCD数。表示为数。表示为: :若若 A

24、L&0FH9 AL&0FH9 或或 AF=1, AF=1, 则则AL-6AL-6AL, AL, AH-1 AH-1AH, 1AH, 1AF ; AFAF ; AFCF,CF, AL&0FH AL&0FHAL (AL (只取低只取低4 4位位) )9/17/20249/17/20243535(1) (1) 针针对对分分离离BCDBCD数数AAMAAM分离分离BCDBCD数的乘法调整指令,两个数的乘法调整指令,两个BCDBCD数相乘,数相乘,结果在结果在ALAL中,除以中,除以1010后商在后商在AHAH中,余数在中,余数在ALAL中。中。表示为表示为: AL/0AH: AL/0AHAH (AH

25、(商商) ) AL MOD 0AHAL MOD 0AHAL (AL (余余) )9/17/20249/17/20243636(1) (1) 针针对对分分离离BCDBCD数数AADAAD分离分离BCDBCD的除法调整指令,先将两个的除法调整指令,先将两个BCDBCD码码转为一字节二进制转为一字节二进制( (用高位用高位*10+*10+低位低位) ),得到被,得到被除数放于除数放于ALAL中,并把中,并把AHAH清零,运算后,清零,运算后,商商-AL-AL,余数,余数-AH-AH表示为表示为: : AH*0AH+ALAH*0AH+ALALAL,0 0AHAH; 先调整再做除法,商到先调整再做除法,

26、商到ALAL中,余数到中,余数到AHAH中。中。9/17/20249/17/202437373.2.3 3.2.3 位操作指令位操作指令1 1 1 1、逻辑运算类指令、逻辑运算类指令、逻辑运算类指令、逻辑运算类指令: 参与运算的操作数可以是字节或字参与运算的操作数可以是字节或字ANDANDDSTDST,SRCSRC ; DST ; DSTSRCSRCDSTDST,清,清CFCF、OFOF ;根据结果置;根据结果置SFSF、ZFZF和和PF,PF,标志标志AFAF不定不定ORORDSTDST,SRC SRC ; DST; DSTSRCSRCDSTDST,标志位设置同上,标志位设置同上XORXOR

27、DSTDST,SRC SRC ; DST ; DST 异或异或SRC-SRC-DST, DST, 标志位设置同上标志位设置同上TEST DSTTEST DST,SRC SRC ; DST; DSTSRCSRC,仅置标志位,标志位设置同上,仅置标志位,标志位设置同上NOTNOTDSTDST ; DST ; DST中各位取反中各位取反DSTDST,不影响标志位,不影响标志位9/17/20249/17/20243838OROR CL CL,03H 03H ;置位;置位CLCL的的D0D0、D1D1ANDAND AL AL,0F5H 0F5H ;清;清ALAL的的D1D1、D3D3XORXOR AH

28、AH,0FH 0FH ; AHAH的低半字节取反的低半字节取反TEST ALTEST AL,02H 02H ;判断;判断ALAL的的D1D1是否为是否为0 0, ;是;是,ZF=1,ZF=1,否则否则,ZF=0,ZF=0XORXOR AL AL,TEST_CODE TEST_CODE ;当当ALAL与与TEST_CODETEST_CODE相同时,相同时,ZF=1ZF=1,否则,否则,ZF=0ZF=0逻辑运算指令经常用来对寄存器或存储单元的某逻辑运算指令经常用来对寄存器或存储单元的某些位进行置位(些位进行置位(1 1)或者清零()或者清零(0 0)的操作。)的操作。例:例:9/17/20249/

29、17/202439392 2 2 2、移位指令、移位指令、移位指令、移位指令: : : : 按位进行从左到右或从右到左的移位。以下按位进行从左到右或从右到左的移位。以下按位进行从左到右或从右到左的移位。以下按位进行从左到右或从右到左的移位。以下 CNT CNT 表示移位的次数。表示移位的次数。表示移位的次数。表示移位的次数。SHRSHR DST DST,CNTCNT ; ;逻辑右移逻辑右移SHL/SAL DSTSHL/SAL DST,CNTCNT ; ;逻辑逻辑/ /算术左移算术左移SARSAR DST DST,CNTCNT ; ;算术右移算术右移9/17/20249/17/202440403

30、 3 3 3、循环移位指令、循环移位指令、循环移位指令、循环移位指令: : : :RORRORDST,CNTDST,CNT ; ; 循环右移循环右移ROLROLDST,CNTDST,CNT ; ; 循环左移循环左移RCR DST,CNTRCR DST,CNT ; ; 带进位循环右移带进位循环右移RCL DST,CNTRCL DST,CNT ; ;带进位循环左移带进位循环左移a, 移位指令影响AF外的各状态标志位.b, 循环移位指令只影响CF、OFc, CNT可以为立即数1或者寄存器CL(预先设置移位次数): 当CNT=1时,OF=0表示移位前后DST的最高位相同,OF=1, 表示不同;当CNT

31、1时,OF无意义.9/17/20249/17/20244141(1 1)串传送:串传送:(DSDS:SISI)()(ESES:DIDI),隐含寻址,),隐含寻址, 不影响标志位。不影响标志位。MOVSWMOVSW;字传送:;字传送:SI2SI2SISI,DI2DI2DIDIMOVSBMOVSB;字节传送:;字节传送:SI1SI1SISI,DI1DI1DIDI(2 2)串比较:串比较:(DSDS:SISI)()(ESES:DIDI),隐含寻址,仅影响标志位。),隐含寻址,仅影响标志位。CMPSWCMPSW;字比较:;字比较:SI2SI2SISI,DI2DI2DIDICMPSBCMPSB ;字节比

32、较:;字节比较:SI1SI1SISI,DI1DI1DIDI(3 3)串扫描:串扫描:隐含寻址,仅影响标志位。隐含寻址,仅影响标志位。SCASW SCASW ;字扫描:;字扫描:AXAX(ESES:DIDI),),DI2DI2DIDISCASB SCASB ;字节扫描:;字节扫描:ALAL(ESES:DIDI),),DI1DI1DIDI3.2.4 3.2.4 串操作指令与重复前缀串操作指令与重复前缀9/17/20249/17/20244242(4 4)串取出:串取出:隐含寻址,不影响标志位。隐含寻址,不影响标志位。LODSWLODSW ;字取出:(;字取出:(DSDS:SISI)AXAX,SI2

33、SI2SISILODSB LODSB ;字节取出:(;字节取出:(DSDS:SISI)ALAL,SI1SI1SISI(5 5)串存储:串存储:隐含寻址,不影响标志位。隐含寻址,不影响标志位。STOSWSTOSW ;字存储:;字存储:AXAX(ESES:DIDI),),DI2 DI2 DIDISTOSBSTOSB ;字节存储:;字节存储:ALAL(ESES:DIDI),),DI1 DI1 DIDI9/17/20249/17/202443436 6、串操作可以加重复前缀使得其连续执行多次串操作可以加重复前缀使得其连续执行多次REP MINST REP MINST ;当;当 CX0 CX0 时,重复

34、执行时,重复执行MINSTMINST,且,且CXCX11CX CX ;MINSTMINST是是MOVSMOVS或或STOSSTOS指令指令REPE/REPZ CINST REPE/REPZ CINST ;当;当 CX0 CX0 且且 ZF=1 ZF=1 时,重复执行时,重复执行CINSTCINST ;且;且CXCX1 1 CXCX,CINSTCINST是是CMPSCMPS或或SCASSCASREPNE/REPNZREPNE/REPNZ CINST CINST ;当;当 CX0 CX0 且且 ZF=0 ZF=0 时,重复执行时,重复执行CINSTCINST; 且且CXCX1 1 CXCX,CIN

35、STCINST是是CMPSCMPS或或SCASSCAS9/17/20249/17/20244444串操作类指令可以与重复前缀配合使用,从而操作得串操作类指令可以与重复前缀配合使用,从而操作得以重复执行,并在条件符合时停止执行。以重复执行,并在条件符合时停止执行。 无无LODS LODS REPE/REPZ REPNE/REPNZREPE/REPZ REPNE/REPNZ SCAS SCAS REPE/REPZ REPNE/REPNZREPE/REPZ REPNE/REPNZ CMPS CMPS REPREPMOVSMOVS可添加的重复前缀可添加的重复前缀可添加的重复前缀可添加的重复前缀 REP

36、REP STOS STOS 串操作指令串操作指令串操作指令串操作指令 9/17/20249/17/20244545转移类指令可以改变代码段寄存器转移类指令可以改变代码段寄存器CSCS与指令指针与指令指针IPIP的值或仅的值或仅改变改变IPIP的值,从而可以以改变指令执行的顺序,以满足程序分的值,从而可以以改变指令执行的顺序,以满足程序分支或跳转的需要。支或跳转的需要。3.2.5 3.2.5 控制转移指令控制转移指令1. 1. 无条件转移、调用和返回指令无条件转移、调用和返回指令(1 1)无条件转移指令)无条件转移指令JMPJMP格式:格式:JMP OPRD JMP OPRD ;OPRDOPRD

37、是转移的目的地址是转移的目的地址功能:转移到目的地址所指示的指令去执行功能:转移到目的地址所指示的指令去执行。9/17/20249/17/20244646直接转移直接转移 短程转移短程转移 近程转移近程转移 远程转移远程转移 JMP SHORT OPRD JMP SHORT OPRD ;IP=IP+8IP=IP+8位位移量,目的地址与位位移量,目的地址与JMPJMP指指令所处地址的距离在令所处地址的距离在-128-128127127范围之内。范围之内。 近程转移:近程转移:JMP NEAR PTR OPRD JMP NEAR PTR OPRD IP=IP+16IP=IP+16位位移量,位位移量

38、,NEARNEAR可省略,可省略,目的地址与目的地址与JMPJMP指令处于同一地址段指令处于同一地址段范围之内。范围之内。JMP FAR PTR OPRD JMP FAR PTR OPRD IP=OPRDIP=OPRD的段内位移量的段内位移量CS=OPRDCS=OPRD所在段地址。所在段地址。直接转移的直接转移的直接转移的直接转移的3 3 3 3种形式:种形式:种形式:种形式: 9/17/20249/17/20244747间接转移指令的目的地址间接转移指令的目的地址可以由存储器或寄存器给出,可以由存储器或寄存器给出,有以下有以下2 2种形式:种形式: 段内间接转移:段内间接转移: JMP WO

39、RD PTR OPRD JMP WORD PTR OPRD ;IP=EA IP=EA (由(由OPRDOPRD的寻址方式确定)的寻址方式确定)例如:例如:JMP WORD PTRBX JMP WORD PTRBX ;IP=DS16+BXIP=DS16+BXJMP WORD PTR BX JMP WORD PTR BX ;IP=BXIP=BX 段间间接转移:段间间接转移: JMP DWORD PTR OPRD JMP DWORD PTR OPRD ;IP=EAIP=EA,CS=EA+2CS=EA+2该指令指定的双字节地址指针的第一个字单元内容送该指令指定的双字节地址指针的第一个字单元内容送IPI

40、P,第二个字单元内容送第二个字单元内容送CSCS。例如:例如: JMP DWORD PTR BX+SI JMP DWORD PTR BX+SI9/17/20249/17/20244848(2 2)调用和返回)调用和返回 功能:调用功能:调用CALLCALL指令用来调用一个过程或子程序。指令用来调用一个过程或子程序。调用指令格式如下:调用指令格式如下:调用指令格式如下:调用指令格式如下: 段内调用:段内调用: CALL NEAR PTR OPRD CALL NEAR PTR OPRD操作:操作:SP=SP-2SP=SP-2,(,(SP+1SP+1,SPSP)=IP=IP,IP=IP+16IP=I

41、P+16位位移量位位移量 CALLCALL指令首先将当前指令首先将当前IPIP内容压入堆栈。当执行内容压入堆栈。当执行RETRET指令后,指令后,再从堆栈中取出一个字放入再从堆栈中取出一个字放入IPIP中。中。9/17/20249/17/20244949 段间调用:段间调用: CALL FAR PTR OPRD CALL FAR PTR OPRD操作:操作:SP=SP-2SP=SP-2,(,(SP+1SP+1,SPSP)=CS=CS;SP=SP-2SP=SP-2,(SP+1SP+1,SPSP)=IP=IP;IP=EAIP=EA;CS=EA+2CS=EA+2CALLCALL指令先把指令先把CSC

42、S压入堆栈,再把压入堆栈,再把IPIP压入堆栈。当执行压入堆栈。当执行RETRET指令指令而返回时,从堆栈中取出一个字放入而返回时,从堆栈中取出一个字放入IPIP中,然后从堆栈中再取出中,然后从堆栈中再取出第二个字放入第二个字放入CSCS中,作为段间返回地址。中,作为段间返回地址。返回指令有如下格式:返回指令有如下格式:RET RET ;SP=SP=(SP+1SP+1),),SPSP),),SP=SP+2SP=SP+2RET n RET n ;SP=SP=(SP+1SP+1),),SPSP),),SP=SP+2 SP=SP+nSP=SP+2 SP=SP+nRET nRET n指令要求指令要求n

43、 n为偶数,当为偶数,当RETRET正常返回后,再做正常返回后,再做SP=SP+nSP=SP+n操作。操作。9/17/20249/17/202450502. 2. 条件转移指令条件转移指令条件转移指令条件转移指令8086/80888086/8088提供了多条不同的条件转移指令,它们根据提供了多条不同的条件转移指令,它们根据标志寄存器中各标志位的状态,决定程序是否进行转移。标志寄存器中各标志位的状态,决定程序是否进行转移。条件转移指令的目的地址必须在现行的代码段条件转移指令的目的地址必须在现行的代码段(CS)(CS)内,内,并且以当前指针寄存器并且以当前指针寄存器IPIP内容为基准,其位移必须在

44、内容为基准,其位移必须在+127-128+127-128的范围之内。的范围之内。 9/17/20249/17/202451513. 3. 3. 3. 循环控制指令循环控制指令循环控制指令循环控制指令对于需要重复进行的操作,微机系统可用循环程对于需要重复进行的操作,微机系统可用循环程序结构来进行,序结构来进行,8086/80888086/8088系统为了简化程序设计,系统为了简化程序设计,设置了一组循环指令,这组指令主要对设置了一组循环指令,这组指令主要对CXCX或标志或标志位位ZFZF进行测试,确定是否循环,指令均不影响任进行测试,确定是否循环,指令均不影响任何标志位何标志位 。9/17/20

45、249/17/202452523.2.6 3.2.6 标志处理和标志处理和CPUCPU控制类指令控制类指令CF CF CF 指令助记指令助记指令助记指令助记符符符符功能功能功能功能指令名称指令名称指令名称指令名称STCSTC CF 1 CF 1进进位位位位标标志置志置志置志置 1 1 CLCCLC CF 0 CF 0进进位位位位标标志置志置志置志置 0 0 CMCCMC CF CF进进位位位位标标志置取反志置取反志置取反志置取反 STDSTD DF 1 DF 1方向方向方向方向标标志置志置志置志置 1 1 (地址减量)(地址减量)(地址减量)(地址减量)CLDCLD DF 0 DF 0方向方向

46、方向方向标标志置志置志置志置 0 0 (地址增量)(地址增量)(地址增量)(地址增量) STISTI IF 1 IF 1中断允中断允中断允中断允许标许标志置志置志置志置 1 1(开中断)(开中断)(开中断)(开中断)CLICLI IF 0 IF 0中断允中断允中断允中断允许标许标志置志置志置志置 0 0(关中断)(关中断)(关中断)(关中断) 1. 1. 1. 1.标志处理指令标志处理指令标志处理指令标志处理指令 9/17/20249/17/20245353 2 2 2 2 外部同步指令外部同步指令外部同步指令外部同步指令 外外部部同同步步指指令令 (1 1)ESCESC指令指令(2 2)等待指令)等待指令WAITWAIT(3 3)封锁总线指令)封锁总线指令LOCKLOCK9/17/20249/17/202454543.4 小 结常用的常用的8 8寻址方式寻址方式 9/17/20249/17/20245555

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号