计算机软硬件设计与实践:3指令系统的基本指令

上传人:壹****1 文档编号:569393448 上传时间:2024-07-29 格式:PPT 页数:105 大小:287.50KB
返回 下载 相关 举报
计算机软硬件设计与实践:3指令系统的基本指令_第1页
第1页 / 共105页
计算机软硬件设计与实践:3指令系统的基本指令_第2页
第2页 / 共105页
计算机软硬件设计与实践:3指令系统的基本指令_第3页
第3页 / 共105页
计算机软硬件设计与实践:3指令系统的基本指令_第4页
第4页 / 共105页
计算机软硬件设计与实践:3指令系统的基本指令_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《计算机软硬件设计与实践:3指令系统的基本指令》由会员分享,可在线阅读,更多相关《计算机软硬件设计与实践:3指令系统的基本指令(105页珍藏版)》请在金锄头文库上搜索。

1、指令系统的基本指令指令系统的基本指令 数据传送指令数据传送指令算术运算指令算术运算指令逻辑指令逻辑指令串处理指令串处理指令控制转移指令控制转移指令处理机控制指令处理机控制指令数据传送指令数据传送指令数据传送指令,能够实现内部寄存器之间的数据传送,内部寄存器与存储器之间的数据传送,通用数据传送指令通用数据传送指令堆栈操作指令堆栈操作指令标志寄存器传送指令标志寄存器传送指令地址传送指令地址传送指令输入输出指令输入输出指令通用数据传送指令通用数据传送指令MOV指令XCHGXCHG指令指令XLATXLAT和和XLATBXLATB指令指令MOVMOV总结总结可在CPU内或CPU和存储器之间传送字或字节传

2、送的信息可从寄存器到寄存器立即数到寄存器立即数到存储单元存储单元到寄存器寄存器到存储单元寄存器或存储单元到除CS外的段寄存器段寄存器到寄存器或存储单元MOVMOV总结总结MOV指令的目的操作数不允许用立即数方式,也不允许用CS寄存器。除源操作数为立即数的方式外,两操作数必须有一个是寄存器。不允许在两个段寄存器之间直接传送数据不允许在两个存储器之间直接传送数据立即数不能直接送段寄存器XCHGXCHG指令指令XCHG D,S ;(D)(S)功能:将源操作数和目的操作数的内容相互交换。注意:源操作数和目的操作数可以是通用寄存器或存储器,但D和S不得同时是存储器操作数。 XLATXLAT和和XLATB

3、XLATB指令指令XLATB XLATB ;(;(ALAL)(BXBX)+ +(ALAL)该指令为换码指令,常用于该指令为换码指令,常用于查表查表,并约定,并约定BXBX中中装入的是表的起始偏移地址,装入的是表的起始偏移地址,ALAL是相对表头的是相对表头的偏移量,因而(偏移量,因而(BXBX)+ +(ALAL)表示所要查找的元表示所要查找的元素的有效地址,指令执行后,该元素将送至素的有效地址,指令执行后,该元素将送至ALAL寄存器,所以称该指令为换码指令,即从表中寄存器,所以称该指令为换码指令,即从表中换取与换取与ALAL中的序号相对应的码值。中的序号相对应的码值。 XLAT指令XLAT X

4、LAT ;无操作数无操作数XLAT Source-table XLAT Source-table ;设置形式操作数设置形式操作数XLAT XLAT 段段寄寄存存器器:Source-tableSource-table;带带段段超超越的操作数越的操作数堆栈操作指令堆栈操作指令PUSHPUSH指令指令POPPOP指令指令进栈指令进栈指令PUSHPUSH语句格式:语句格式: PUSH OPSPUSH OPS功功能能:将将寄寄存存器器、段段寄寄存存器器或或存存储储器器中中的的一一个字数据压入堆栈,堆栈指针减个字数据压入堆栈,堆栈指针减2 2。(SPSP)SPSP(OPSOPS)158SP158SP(SP

5、SP)SPSP(OPSOPS)70SP70SP指令的操作数:可以是16位的通用寄存器,段寄存器和存储器。出栈指令出栈指令POPPOP语句格式:语句格式: POP OPDPOP OPD功功能能: 将将栈栈顶顶元元素素弹弹出出送送至至某某一一寄寄存存器器、段段寄存器(除寄存器(除CSCS外)或存储器,堆栈指针加外)或存储器,堆栈指针加2 2。从从POPPOP指指令令功功能能可可看看出出,该该指指令令为为PUSHPUSH指指令令的的逆过程。逆过程。( SPSP)(OPDOPD)7070(SPSP)+ +SP SP (SPSP)(OPDOPD)158158(SPSP)+ +SPSP目的操作数可以是目的

6、操作数可以是1616位通用寄存器、段寄存器位通用寄存器、段寄存器和存储器和存储器,但是,但是代码段代码段CSCS不能不能作为目的操作数作为目的操作数出栈指令。出栈指令。标志寄存器传送指令标志寄存器传送指令标志送标志送AHAH指令指令LAHFLAHFAHAH送标志指令送标志指令SAHFSAHF标志寄存器进栈指令标志寄存器进栈指令PUSHFPUSHF标志寄存器出栈指令标志寄存器出栈指令POPFPOPF标志送标志送AHAH指令指令LAHFLAHF语句格式:语句格式:LAHFLAHF功能:将标志寄存器的功能:将标志寄存器的低低8 8位位送入送入AHAH寄存器。寄存器。即即(FLAGSFLAGS)7-0

7、AH7-0AH。该该指指令令的的执执行行对对标标志志位无影响。位无影响。【例】标志寄存器传送。【例】标志寄存器传送。执行前:(执行前:(FLAGSFLAGS)=0485H=0485H,(,(AXAX)=0FFFFH=0FFFFH执行指令:执行指令:LAHFLAHF执行前:(执行前:(FLAGSFLAGS)=0485H=0485H,(,(AXAX)=085FFH=085FFHAHAH送标志指令送标志指令SAHFSAHF语句格式:语句格式:SAHFSAHF功功能能:将将AHAH的的内内容容送送入入标标志志寄寄存存器器的的低低8 8位位,高高8 8位不变。即(位不变。即(AHAH) FLAGS7-0

8、 FLAGS7-0。从该指令功能可看出,从该指令功能可看出,SAHFSAHF为为LAHFLAHF的逆过程。的逆过程。 标志寄存器进栈指令标志寄存器进栈指令PUSHFPUSHF语句格式:语句格式:PUSHFPUSHF功功能能:将将标标志志寄寄存存器器的的内内容容压压入入堆栈。即(堆栈。即(FLAGSFLAGS)(SPSP)。)。标志寄存器出栈指令标志寄存器出栈指令POPFPOPF功能:功能: 将栈顶内容弹出送入标志寄存器中。将栈顶内容弹出送入标志寄存器中。即即(SPSP)FLAGSFLAGS。POPFPOPF指令与指令与PUSHFPUSHF指令互为逆过程。指令互为逆过程。【例】将标志寄存器的单步

9、标志【例】将标志寄存器的单步标志TFTF置位。置位。PUSHFPUSHF;(;(FLSGSFLSGS)(SPSP)POP AXPOP AX;(;(SPSP)AXAXOR AXOR AX, 0100H 0100H;设置设置D8=TF=1D8=TF=1PUSH AXPUSH AX;(;(AXAX)(SPSP)POPFPOPF;(;(SPSP)FLAGSFLAGS,即(即(AXAX)FLAGSFLAGS地址传送指令地址传送指令传送偏移地址指令传送偏移地址指令 LEALEA传送偏移地址及数据段首址指令传送偏移地址及数据段首址指令LDSLDS传送偏移地址及附加数据段指令传送偏移地址及附加数据段指令LES

10、LES共同特点:共同特点:把变量的偏移地址(把变量的偏移地址( LEALEA )或段地址和偏移地址()或段地址和偏移地址( LDSLDS、 LESLES )送给寄存器,以提供访问变量的工具。)送给寄存器,以提供访问变量的工具。指定的寄存器指定的寄存器不能不能使用使用段寄存器段寄存器源操作数必须使用源操作数必须使用除立即数和寄存器方式外的除立即数和寄存器方式外的其它其它寻址方式。寻址方式。传送偏移地址指令传送偏移地址指令 LEALEA语句格式:语句格式: LEA OPDLEA OPD,OPSOPS功功能能:按按源源地地址址的的寻寻址址方方式式计计算算偏偏移移地地址址,将偏移地址送入指定寄存器。将

11、偏移地址送入指定寄存器。【例】主存偏移地址的获取。【例】主存偏移地址的获取。MOV BXMOV BX,0100H0100H;(;(BXBX)=0100H=0100HMOV SIMOV SI, 0210H 0210H;(;(SISI) =0210H =0210HLEA BXLEA BX,1234BX+SI1234BX+SI;(;(BXBX)=1544H=1544HLEA SILEA SI,BX+SI+20HBX+SI+20H;(SI)(BX)+(SI)+20H(SI)(BX)+(SI)+20HLDSLDS指令指令LDS REG,SRCLDS REG,SRC;(;(REGREG)(SRCSRC)(

12、)(DSDS)(SRC +2SRC +2) 功能:把源操作数指定的4个相继的字节送到由指令指定的寄存器及DS寄存器中。该指令常指定SI寄存器。 LESLES指令指令LES REG,SRCLES REG,SRC;(REGREG)(SRCSRC)(ESES)(SRC SRC +2+2) 功功能能:将将主主存存某某字字单单元元内内容容送送指指定定寄寄存器。存器。(OPSOPS)OPDOPD,(,(OPS+2OPS+2)ESES 该指令常指定DI寄存器。输入输出指令输入输出指令输入指令输入指令ININ输出指令输出指令OUTOUT外部设备最多可有外部设备最多可有6553665536个个I/OI/O端口。

13、端口。端口地址为端口地址为00000000H0FFFFHH0FFFFH其中,前其中,前256256个(个(0 0 0FFH)0FFH)端口可端口可以直接在指令中指定以直接在指令中指定算术运算类指令算术运算类指令加法指令加法指令减运算指令减运算指令乘运算指令乘运算指令除运算指令除运算指令符号扩展指令符号扩展指令 十进制调整指令十进制调整指令加法指令加法指令加加1 1指令指令 INCINC加指令加指令ADDADD带进位加指令带进位加指令ADCADC加加法法运运算算除除INCINC不不影影响响CFCF位位外外,其其余余都都影影响响条件标志位条件标志位(CF ZF SF OF PF AFCF ZF S

14、F OF PF AF)CFCF位位是是根根据据最最高高有有效效位位是是否否有有向向高高位位的的进位设置的。有,进位设置的。有,CFCF1 1OFOF根据操作数的符号及变化情况来设置根据操作数的符号及变化情况来设置若若两两操操作作数数符符号号相相同同,结结果果的的符符号号与与之之相相反,反,OFOF1 1OFOF表示表示带符号数带符号数的溢出的溢出CFCF表示表示无符号数无符号数的溢出的溢出加运算指令加运算指令语句格式:语句格式:INC OPDINC OPD功功能能:将将目目的的操操作作数数加加1 1,结结果果送送目目的的地地址址。即(即(OPDOPD)+1OPD+1OPD。INCINC指指令令

15、是是一一个个单单操操作作数数指指令令,操操作作数数可可以以是是寄存器或存储器操作数。寄存器或存储器操作数。如:如:INC BXINC BX,即(即(BXBX)+1BX+1BX。用法:加加1 1指令可用于对指令可用于对计数器和地址指针计数器和地址指针进进行调整行调整,由于对CF无影响,所以无需保护状态标志位。 加加1 1指令指令 INCINC语句格式:语句格式:ADD OPDADD OPD, OPS OPS功功能能:将将目目的的操操作作数数与与源源操操作作数数相相加加,结结果果存存入入目目的的地地址址中中,源地址的内容不改变。源地址的内容不改变。即(即(OPDOPD)+ +(OPSOPS)(OP

16、D)(OPD)。加指令加指令ADDADD语句格式:语句格式:ADC OPDADC OPD,OPSOPS功功能能:将将目目的的操操作作数数加加源源操操作作数数再再加加低低位位进进位位,结果送目的地址。结果送目的地址。用法:该指令常用于用法:该指令常用于多精度加法多精度加法的计算。的计算。即(即(OPDOPD)+ +(OPSOPS)+CF (OPD)+CF (OPD)。【例】无符号双字加法运算。【例】无符号双字加法运算。MOVMOV AXAX,4652H4652H ;(;(AXAX)=4652H=4652HADDADD AXAX,0F0F0H0F0F0H;(;(AXAX)=3742H=3742H,

17、CF=1CF=1MOVMOV DXDX,0234H0234H ;(;(DXDX)=0234H=0234HADCADC DXDX,0F0F0H0F0F0H;(;(DXDX)=0F325H=0F325H,CF=0CF=0带进位加指令带进位加指令ADCADC减减1 1指令指令DECDEC减指令减指令SUBSUB带借位减指令带借位减指令 SBBSBB求补指令求补指令NEGNEG比较指令比较指令 CMPCMP减运算指令减运算指令减运算指令减运算指令减法运算的条件码设置与加法运算类似减法运算的条件码设置与加法运算类似OFOF根据操作数的符号及变化情况来设置根据操作数的符号及变化情况来设置若若两两操操作作数

18、数符符号号相相反反,结结果果的的符符号号与与减减数数相同,则相同,则OFOF1 1OFOF表示表示带符号数带符号数的溢出的溢出CFCF表示表示无符号数无符号数的溢出的溢出语句格式:语句格式:DEC OPDDEC OPD 功功能能:将将目目的的操操作作数数减减1 1,结结果果送送目目的的地地址址。即(即(OPDOPD)11(OPDOPD)。)。标志位:除CF标志位不受影响外,其余状态标志均受影响。目的操作数:可以放在通用寄存器和存储器中。如:如:DEC CXDEC CX。即(即(CXCX)1CX1CX。减减1 1指指令令DECDEC也也一一般般用用于于对对计计数数器器和和地地址址指指针针的调整。

19、的调整。减减1 1指令指令DECDEC语句格式:语句格式:SUB OPDSUB OPD,OPSOPS功功能能:目目的的操操作作数数减减源源操操作作数数,结结果果存于目的地址,源地址内容不变。存于目的地址,源地址内容不变。即(即(OPDOPD)()(OPSOPS)(OPDOPD)指令将对CF、AF、SF、ZF、PF、OF状态标志位有影响,使用的操作数组合与ADD指令相同。减指令减指令SUBSUB语句格式:语句格式:SBB OPD SBB OPD ,OPSOPS功功能能:目目的的操操作作数数减减源源操操作作数数再再减减低低位位借位借位CFCF,结果送目的地址。结果送目的地址。即(即(OPDOPD)

20、(OPSOPS)CF CF ( OPD OPD)用法:SBB指令常用于多精度的减法运算中。带借位减指令带借位减指令 SBBSBB语句格式:语句格式:NEG OPDNEG OPD功功能能:将将目目的的操操作作数数的的每每一一位位求求反反(包包括括符号位)后加符号位)后加1 1,结果送目的地址。,结果送目的地址。即(即(OPDOPD)(OPDOPD)。)。或或0 0FFFFHFFFFH(OPDOPD)11(OPDOPD)。)。操作数:可以是操作数:可以是通用寄存器或存储器通用寄存器或存储器。标标志志位位:影影响响SFSF、ZFZF、AFAF、PFPF、OFOF,在在一一般般情情况况下下,总总使使C

21、F=1CF=1,除除非非操操作作数数为为零零时时,才才使使CF=0CF=0;OFOF标标志志一一般般情情况况下下为为0 0,但但当当操操作作为为8080H H或或80008000H H,NEGNEG指指令令对对其其求求补补,结结果果与原操作数相同,此时与原操作数相同,此时OF=1OF=1。求补指令求补指令NEGNEG比较指令比较指令 CMPCMP语句格式:语句格式:CMP OPDCMP OPD,OPSOPS功能:功能:目目的的操操作作数数减减源源操操作作数数,结结果果只只影影响响标标志志位位,不送入目的地址。不送入目的地址。即(即(OPDOPD)()(OPSOPS)。)。用法:用法:此此指指令

22、令常常用用于于比比较较两两个个数数的的大大小小,当当比比较较指指令令与与条条件件转转移移指指令令结结合合使使用用时时,可可以以完完成成各各种条件判断和相应的程序转移。种条件判断和相应的程序转移。乘运算指令乘运算指令无符号数乘法指令无符号数乘法指令MULMUL有符号乘指令有符号乘指令IMULIMUL特点:特点:目的操作数必须是目的操作数必须是累加器累加器,源源操操作作数数可可以以使使用用除除立立即即数数方方式式以以外外的的任一种寻址方法任一种寻址方法乘运算指令乘运算指令对对CFCF和和OFOF以以外外的的条条件件码码无无定定义义(状状态态不不定)定)对对MULMUL指指令令,若若乘乘积积的的高高

23、一一半半为为0 0,CFCF和和OFOF为为0 0对对MULMUL指指令令,若若乘乘积积的的高高一一半半为为低低一一半半的的符号扩展,符号扩展,CFCF和和OFOF为为0 0无符号数乘法指令无符号数乘法指令MULMUL语句格式:语句格式: MUL OPSMUL OPS功能:功能: 若若是是字字节节数数据据相相乘乘,(ALAL)与与OPSOPS相相乘乘得得到到字字数据存入数据存入AXAX中;中;若若是是字字数数据据相相乘乘,则则(AXAX)与与OPSOPS相相乘乘得得到到双双字数据,高字存入字数据,高字存入DXDX、低字存入低字存入AXAX中。中。即字节乘法:(即字节乘法:(ALAL)* * (

24、OPSOPS) (AXAX),),字乘法:(字乘法:(AXAX) * * (OPSOPS) (DXDX,AXAX)有符号乘指令有符号乘指令IMULIMUL语句格式:语句格式:IMUL OPSIMUL OPS功能:字节乘法:(功能:字节乘法:(ALAL)* *(OPSOPS)(AX)(AX),字乘法:(字乘法:(AXAX)* *(OPSOPS)(DX(DX、AX)AX)。IMULIMUL指令除计算对象是带符号二进制数外,其指令除计算对象是带符号二进制数外,其他都与他都与MULMUL一样,但计算结果不同。一样,但计算结果不同。 【例】有符号数【例】有符号数0 0B4HB4H与与1111H H相乘。

25、相乘。MOVMOV ALAL,0B4H0B4H;(;(ALAL)=B4H=B4HMOVMOV BLBL,11H11H;(;(BLBL)=11H=11HIMULIMULBLBL ;(;(AXAX)=0FAF4H=0FAF4H除运算指令除运算指令无符号除指令无符号除指令DIVDIV有符号有符号除指令除指令IDIVIDIV特点:特点:目的操作数必须存放在目的操作数必须存放在AXAX或或DX,AXDX,AX中中源源操操作作数数可可以以使使用用除除立立即即数数方方式式以以外外的的任一种寻址方法任一种寻址方法除法指令对所有条件码均除法指令对所有条件码均无定义无定义无符号除指令无符号除指令DIVDIV语句格

26、式:语句格式:DIV OPSDIV OPS功能:字节除法:功能:字节除法:(AXAX)/ /(OPSOPS) (AL) (AL)(商)、商)、( (AH)AH)(余数)余数)字字除除法法:(DXDX、AXAX)/ /(OPSOPS) (AX)(AX)(商商)、( (DX)DX)(余数)余数)【例】写出实现无符号数【例】写出实现无符号数04000400H / 0B4HH / 0B4H运算的程序段。运算的程序段。MOVMOVAXAX,0400H0400H ;(;(AXAX)=0400H=0400HMOVMOVBLBL,0B4H0B4H;(;(BLBL)=0B4H=0B4HDIVDIVBLBL ;商

27、(商(ALAL)=05H=05H,余数(余数(AHAH)=7CH =7CH 语句格式:语句格式:IDIV OPSIDIV OPS功能:字节除法:功能:字节除法:(AXAX)/ /(OPSOPS) (AL) (AL)(商)、商)、( (AH)AH)(余数)余数)字除法:字除法:(DXDX,AXAX)/ /(OPSOPS) (AX ) (AX )(商)、商)、( (DX)DX)(余数)余数)除除法法指指令令DIVDIV和和IDIVIDIV虽虽然然对对标标志志的的影影响响未未定定义义,但但可可产生溢出。产生溢出。【例】写出实现有符号数【例】写出实现有符号数04000400H /0B4HH /0B4H

28、运算的程序段。运算的程序段。有符号有符号除指令除指令IDIVIDIVMOVMOVAXAX,0400H0400H ;(;(AXAX)=0400H=0400HMOVMOVBXBX,0B4H0B4H;(;(BXBX)=0B4H=0B4HIDIVIDIV BXBX;(;(ALAL)=0F3H=0F3H,(,(AHAH)=24H=24H符号扩展指令符号扩展指令 字节转换成字指令字节转换成字指令CBWCBW将字转换成双字指令将字转换成双字指令CWDCWD语句格式:语句格式:CBWCBW功能:将功能:将ALAL中的符号位数据扩展至中的符号位数据扩展至AHAH。【例】将字节数据扩展成字数据。例】将字节数据扩展

29、成字数据。MOVMOV ALAL,0A5H0A5HCBWCBWADDADD ALAL,70H70HCBWCBW字节转换成字指令字节转换成字指令CBWCBW;(;(ALAL)=0A5H=0A5H;(;(AXAX)=0FFA5H=0FFA5H;(;(ALAL)=25H=25H;(;(AXAX)=0025H=0025H语句格式:语句格式:CWDCWD功能:将功能:将AXAX中的符号位数据扩展至中的符号位数据扩展至DX DX 。【例】将字数据扩展成双字数据。例】将字数据扩展成双字数据。MOVMOV DXDX, 0 0MOVMOV AXAX, 0FFABH 0FFABHCWDCWD将字转换成双字指令将字

30、转换成双字指令CWDCWD;(;(DXDX)=0=0;(;(AXAX)=0FFABH=0FFABH;(;(DXDX)=0FFFFH =0FFFFH (AXAX)=0FFABH=0FFABH十进制调整指令十进制调整指令压缩压缩BCDBCD码调整指令码调整指令DAA(decimal adjust for addition)DAA(decimal adjust for addition)DAS (decimal adjust for subtraction)DAS (decimal adjust for subtraction)非压缩非压缩BCDBCD码调整指令码调整指令AAA(ASCII adju

31、st for addition)AAA(ASCII adjust for addition)AAS (ASCII adjust for subtraction)AAS (ASCII adjust for subtraction)AAM (ASCII adjust for multiplication)AAM (ASCII adjust for multiplication)AAD (ASCII adjust for division)AAD (ASCII adjust for division)加法的十进制调整指令加法的十进制调整指令DAA DAA 语句格式:语句格式:DAADAA功能:功能:

32、如如果果ALAL寄寄存存器器中中低低4 4位位大大于于9 9或或辅辅助助进进位位 ( AFAF) =1=1, 则则 ( ALAL) = =( ALAL) +6+6且且(AFAF)=1=1;如如果果(ALAL)=0A0H=0A0H或或(CFCF)=1=1,则则(ALAL)= =(ALAL)+60H+60H且(且(CFCF)=1=1。同同时时,SFSF、ZFZF、PFPF均均有有影影响响。对对OFOF无无影响影响减法的十进制调整指令减法的十进制调整指令DASDAS语句格式:语句格式:DASDAS功能:功能:如如果果(AFAF)=1=1或或ALAL寄寄存存器器中中低低4 4位位大大于于9 9,则(,

33、则(ALAL)= =(ALAL)6 6且(且(AFAF)=1=1;如如 果果 ( ALAL) =0A0H=0A0H或或 ( CFCF) =1=1, 则则(ALAL)= =(ALAL)60H60H且(且(CFCF)=1=1。同时同时SFSF、ZFZF、PFPF均受影响。均受影响。非压缩非压缩BCDBCD码调整指令码调整指令加法的非压缩加法的非压缩BCDBCD码调整指令码调整指令AAAAAA减法的非压缩减法的非压缩BCDBCD码调整指令码调整指令AASAAS乘法的非压缩乘法的非压缩BCDBCD码调整指令码调整指令AAMAAM除法的非压缩除法的非压缩BCDBCD码调整指令码调整指令AADAAD语句格

34、式:语句格式:AAA AAA 功功能能:未未组组合合的的BCDBCD加加法法调调整整指指令令,亦亦可可以以作作为为ASCIIASCII码加法调整指令。码加法调整指令。用用法法:必必须须将将其其和和放放在在累累加加器器ALAL中中,AAAAAA指指令令要紧跟在加法指令之后使用。要紧跟在加法指令之后使用。如果如果ALAL的低的低4 4位大于位大于9 9或(或(AFAF)=1=1,则:则:(ALAL)= =(ALAL)+6 +6 (AHAH)= =(AHAH)+1+1(AFAF)= =(CFCF)=1 =1 且且ALAL高高4 4位清零。位清零。否则:(否则:(CFCF)= =(AFAF)=0 AL

35、=0 AL高高4 4位清零。位清零。加法的非压缩加法的非压缩BCDBCD码调整指令码调整指令语句格式:语句格式:AASAAS 功功能能:是是未未组组合合BCDBCD码码减减法法调调整整指指令令,可可对对ALAL中中的的两两个个未未组组合合的的十十进进制制数数相相减减的的结结果果进进行行调调整,使差成为正确的十进制数。整,使差成为正确的十进制数。如果如果ALAL的低的低4 4位大于位大于9 9或(或(AFAF)=1=1,则:则:(ALAL)= =(ALAL)6 6 (AHAH)= =(AHAH)1 1 (AFAF)= =(CFCF)=1 AL=1 AL高高4 4位清零。位清零。否则:(否则:(C

36、FCF)= =(AFAF)=0 AL=0 AL高高4 4位清零。位清零。其他标志位其他标志位OFOF、PFPF、SFSF、ZFZF不确定。不确定。减法的非压缩减法的非压缩BCDBCD码调整指令码调整指令AAMAAM未组合的未组合的BCDBCD码乘法调整指令码乘法调整指令AAMAAM功功能能: :它它将将AXAX中中未未组组合合BCDBCD码码的的乘乘积积调调整整为为正正确确的的未未组组合合的的BCDBCD码码,高高位位在在AHAH中中,低位在低位在ALAL中。中。AAMAAM具体操作如下:具体操作如下:AHAL/0AH AHAL/0AH ;除除1010取整商取整商AHAHALAL%0AH AL

37、AL%0AH ;除除1010取余取余ALALAADAADAAD AAD ;隐含操作数隐含操作数AHAH,ALAL指指令令功功能能:除除法法运运算算前前,先先调调整整被被除除数数AXAX内内容容,将将AXAX中中的的两两个个未未组组合合的的BCDBCD码码转转换换成成一一个个字字节节的的二二进进制制数数,即即把把非非压压缩缩型型十十进进制制数数变成二进制数。变成二进制数。其操作为:其操作为:ALAL(AHAH)10+10+(ALAL)AH0AH0逻辑指令逻辑指令逻辑运算指令逻辑运算指令移位指令移位指令逻辑运算指令逻辑运算指令求反指令求反指令NOTNOT与指令与指令ANDAND测试指令测试指令TE

38、STTEST或指令或指令OROR异或指令异或指令XORXOR语句格式:语句格式:NOT OPDNOT OPD功功能能:将将目目的的地地址址中中的的内内容容逐逐位位取取反反后后送入目的地址。送入目的地址。即(即(OPDOPD)(OPDOPD)操操作作数数可可以以是是通通用用寄寄存存器器或或存存储储器器,此此指令对状态标志位无影响。指令对状态标志位无影响。 求反指令求反指令NOTNOT语句格式:语句格式:AND OPDAND OPD, OPS OPS功功能能:将将目目的的操操作作数数和和源源操操作作数数进进行行逻逻辑辑乘乘运算,结果存目的地址。运算,结果存目的地址。即(即(OPDOPD)(OPSO

39、PS)(OPDOPD)。)。说明:逻辑乘的运算法则为:说明:逻辑乘的运算法则为: 11=111=1,10=010=0,01=001=0,00=000=0用法:常用于用法:常用于位屏蔽和位检验位屏蔽和位检验操作。操作。位屏蔽:是将目的操作数中指定的位设置为位屏蔽:是将目的操作数中指定的位设置为0 0。与指令与指令ANDAND语句格式:语句格式:TEST OPDTEST OPD,OPSOPS功功能能:源源地地址址和和目目的的地地址址的的内内容容执执行行按按位位的逻辑的逻辑与与运算,结果运算,结果不送入不送入目的地址。目的地址。即(即(OPDOPD)(OPSOPS)。)。 测试指令测试指令TESTT

40、EST语句格式:语句格式:OR OPDOR OPD,OPSOPS功功能能:将将目目的的操操作作数数和和源源操操作作数数进进行行逻逻辑加运算,结果存目的地址。辑加运算,结果存目的地址。即(即(OPDOPD)(OPSOPS)OPDOPD。说明:逻辑加的运算法则为:说明:逻辑加的运算法则为:11=111=1,10=110=1,01=101=1,00=000=0。用用法法:常常用用于于判判断断一一个个数数是是否否为为零零,或或用用 于于 将将 BCDBCD码码 转转 换换 成成 ASCIIASCII, 以以 及及 判判 断断 一一 个个 数的正负。数的正负。或指令或指令OROR语句格式:语句格式: X

41、OR OPDXOR OPD,OPSOPS功功能能:目目的的操操作作数数与与源源操操作作数数做做按按位位加加运运算算,结结果送入目的地址。果送入目的地址。即(即(OPDOPD)(OPS) (OPS) (OPDOPD)。)。说明:按位加的运算法则为;说明:按位加的运算法则为;11=011=0,10=110=1,01=101=1,00=000=0。即即“相同为零,相异为相同为零,相异为1”1”,凡与,凡与1 1相相“异或异或”的的位将位将“求反求反”,凡与,凡与“0”“0”相相“异或异或” ” 的位保持的位保持不变。不变。用法:根据该指令特点可很容易地将用法:根据该指令特点可很容易地将寄存器清零寄存

42、器清零,并同时也将进位标志位并同时也将进位标志位CFCF清零,清零,异或指令异或指令XORXOR移位指令移位指令 移移位位指指令令包包括括算算术术移移位位指指令令、逻逻辑辑移移位位指指令令和和循循环环移移位位指指令令,分分别别进进行行左左移移和和右右移移操操作。这些指令均有统一的语句格式:作。这些指令均有统一的语句格式: 标号:标号: 操作符操作符OPDOPD,1 1或或 标号:标号: 操作符操作符OPDOPD,CLCL其其功功能能为为将将目目的的操操作作数数的的所所有有位位按按操操作作符符规规定定的的方方式式移移动动1 1位位或或按按寄寄存存器器CLCL规规定定的的次次数数(02550255

43、)移移动动,结结果果送送入入目目的的地地址址。目目的的操操作作数数是是8 8位位(或或1616位位)的的寄寄存存器器数数据据或或存存储储器器数据。数据。移位指令移位指令nSHL(shift logic left) 逻辑左移逻辑左移nSAL(shift arithmetic left) 算术左移算术左移nSHR(shift logic right) 逻辑右移逻辑右移nSAR(shift arithmetic right)算术右移算术右移nROL(rotate left) 循环左移循环左移nROR(rotate right)循环右移循环右移nRCL(rotate left through carr

44、y)带进带进位循环左移位循环左移nRCR(rotate right through carry)带带进位循环右移进位循环右移语句格式:语句格式:SAL OPDSAL OPD,1 1 或或SHL OPDSHL OPD,1 1 SAL OPD SAL OPD,CLCL或或SHL OPDSHL OPD,CLCL功功能能:将将(OPDOPD)向向左左移移动动CLCL指指定定的的次次数数,最最低低位位补补入入相相应应的的,的的内内容容为为最最后后移入位的值。移入位的值。算术左移和逻辑左移指令算术左移和逻辑左移指令算术右移指令算术右移指令SARSAR语句格式:语句格式:SAR OPDSAR OPD,1 1

45、或或SAR OPDSAR OPD,CLCL功能:将(功能:将(OPDOPD)向右移动向右移动CLCL指定的次数且最高位保指定的次数且最高位保持不变;持不变;CFCF的内容为最后移入位的值。的内容为最后移入位的值。说说明明:算算术术右右移移是是针针对对有有符符号号数数而而言言的的,有有符符号号数数经算术右移后,其符号不变。经算术右移后,其符号不变。语句格式:语句格式:SHR OPDSHR OPD,1 1 或或 SHR OPDSHR OPD,CLCL功功能能:将将(OPDOPD)向向右右移移动动CLCL规规定定的的次次数数,最最高高位位补补入入相相应应个个数数的的,CFCF的的内内容容为为最最后后

46、移入位的值。移入位的值。注:逻辑右移注:逻辑右移1 1位,可使无符号数除以位,可使无符号数除以2 2。 逻辑右移指令逻辑右移指令SHRSHR语句格式:语句格式:ROL OPDROL OPD,1 1或或ROL LPDROL LPD,CLCL功功能能:将将目目的的操操作作数数的的最最高高位位与与最最低低位位连连成成一一个个环环,将将环环中中的的所所有有位位一一起起向向左左移移动动CLCL规规定定的的次次数数。CFCF的的内内容容为为最最后后移移入入位位的的值。值。循环左移指令循环左移指令ROLROL语句格式:语句格式: ROR OPDROR OPD,1 1或或ROR OPDROR OPD,CLCL

47、功功能能:将将目目的的操操作作数数的的最最高高位位与与最最低低位位连连成成一一个个环环,将将环环中中的的所所有有位位一一起起向向右右移移动动CLCL规规定的次数,定的次数,CFCF的内容为最后移入位的值。的内容为最后移入位的值。循环右移指令循环右移指令RORROR语句格式:语句格式: RCL OPDRCL OPD, 1 1或或RCL OPDRCL OPD,CLCL功能:将目的操作数连同功能:将目的操作数连同CFCF标志一起向左标志一起向左循环移动循环移动CLCL规定的次数。规定的次数。 带进位的循环左移指令带进位的循环左移指令语句格式:语句格式:RCR OPDRCR OPD,1 1或或RCR

48、ODRCR OD,CLCL功能:将目的操作数连同功能:将目的操作数连同CFCF标志一起向标志一起向右循环移动所规定的次数。右循环移动所规定的次数。 带进位的循环右移指令带进位的循环右移指令重复前缀:重复前缀:REP REPE/REPZ REPNE/REPNZREP REPE/REPZ REPNE/REPNZ数据串传送指令数据串传送指令MOVSMOVS数据串比较指令数据串比较指令CMPSCMPS字符串扫描指令字符串扫描指令SCASSCAS取数据串指令取数据串指令LODSLODS存数据串指令存数据串指令STOSSTOS串操作指令串操作指令用用SISI寄存器寻址源操作数寄存器寻址源操作数用用DIDI

49、寄存器寻址目的操作数寄存器寻址目的操作数源操作数隐含的段寄存器为源操作数隐含的段寄存器为DSDS,但但允许允许段超越,段超越,目的操作数的段寄存器约定为目的操作数的段寄存器约定为ESES,不允许不允许段超越。段超越。每当串操作指令执行后,可以自动实现源变址或目的每当串操作指令执行后,可以自动实现源变址或目的变址,地址的增量可正可负,变址,地址的增量可正可负,当方向标志位当方向标志位(DFDF)=0=0,地址增量为地址增量为正正;当;当(DFDF)=1=1时,地址增量为时,地址增量为负负,地址增量的,地址增量的大小大小取决于串取决于串操作数操作数的类型的类型,当操作数为字节属性时,地址增量为,当

50、操作数为字节属性时,地址增量为1 1,当操,当操作数为字属性时,地址增量为作数为字属性时,地址增量为22串操作指令特点串操作指令特点(1 1)REP REP REPREP前缀用在前缀用在MOVSMOVS、STOS STOS 、LODSLODS指令前。指令前。功功 能能 : 每每 执执 行行 一一 次次 串串 指指 令令 ( CXCX) 1 1, 直直 到到(CXCX)=0=0,重复执行结束。重复执行结束。(2 2)REPZ REPZ 该指令一般用在该指令一般用在CMPSCMPS、SCASSCAS指令前。指令前。功功能能:每每执执行行一一次次串串指指令令(CXCX)1 1,并并判判断断ZFZF标

51、标志是否为志是否为0 0,只要(,只要(CXCX)=0=0或或ZF=0ZF=0,则重复执行结束。则重复执行结束。(3 3)REPNZ REPNZ 该指令一般用在该指令一般用在CMPSCMPS、SCAS SCAS 指令前。指令前。功功能能:每每执执行行一一次次串串指指令令(CXCX)1 1,并并判判断断ZFZF标标志是否为志是否为0 0,只要(,只要(CXCX)=0=0或或ZF=1ZF=1,则重复执行结束。则重复执行结束。重复前缀指令重复前缀指令MOVS MOVS 目的串目的串, ,源串源串MOVSBMOVSBMOVSWMOVSW功功能能:将将DS:SIDS:SI所所规规定定的的源源数数据据串串

52、中中的的字字节节、字字传传送送至至目目的的串串,目目的的串串的的地地址址由由ESES:DIDI确确定定。每每当当指指令令执执行行后后,变变址址寄寄存存器器SISI、DIDI将将依依据据传传送送的的操操作作数数类类型型自自动动变变址址,其其变变址址值值可可为为11,22,分分别别对对应应于于字字节节、字字传传送送。“+”“+”、“”号号由由DFDF标标志志位位的的值值确确定定,当当DF=0DF=0,变变址址取取“”,当当DF=1DF=1,变址取变址取“”。数据串传送指令数据串传送指令使用方法使用方法1 1、把存于、把存于数据段数据段中的源串首中的源串首/ /末地址放入末地址放入SISI寄存器寄存

53、器2 2、把将要存放数据串的、把将要存放数据串的附加段附加段的首的首/ /末地址末地址放入放入DIDI寄存器寄存器3 3、把串长放入、把串长放入CXCX寄存器寄存器4 4、建立方向标志(、建立方向标志(cldcld std std)5 5、使用串指令传送数据使用串指令传送数据CMPS CMPS 源串,目的串源串,目的串CMPSBCMPSB字节串比较字节串比较CMPSWCMPSW字串比较字串比较功功能能:将将SISI所所指指的的源源串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据与与DIDI所所指指的的目目的的串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的

54、的数数据据相相减减,并并根根据据相相减减的的结结果设置标志,但果设置标志,但结果并不保存结果并不保存。( SISI)()(DIDI)。 修改串指针,使之指向串中的下一个元素。修改串指针,使之指向串中的下一个元素。当当DF=0DF=0时时,(SISI)和和(DIDI)增增量量。当当DF=1DF=1时时,(SISI)和(和(DIDI)减量。减量。串比较指令串比较指令源操作数的逻辑地址为源操作数的逻辑地址为DSDS:SISI,可以段超越可以段超越,目的操作数的逻辑地址为目的操作数的逻辑地址为ESES:DIDI。比较指令执行后,变址寄存器比较指令执行后,变址寄存器SISI、DIDI会会自动自动变变址,

55、址,地址是增还是减,由地址是增还是减,由DFDF标志位来确定,标志位来确定,指令执行时是将源操作数减去目的操作数,该指令执行时是将源操作数减去目的操作数,该操作数将影响操作数将影响AFAF、CFCF、OFOF、PFPF、SFSF和和ZFZF标志标志指令前通常加重复前缀指令前通常加重复前缀REPZ/REPEREPZ/REPE,从而当发现从而当发现两个串不同时结束比较。两个串不同时结束比较。数据串比较指令数据串比较指令串搜索指令串搜索指令SCAS SCAS 目的串目的串 SCASBSCASB字节串搜索字节串搜索 SCASWSCASW字串搜索字串搜索功功能能:ALAL(字字节节)或或AXAX(字字)

56、中中的的内内容容与与DIDI所所指指的的目目的的串串中中的的一一个个字字节节(或或字字)存存储储单单元元中中的的数数据据相减,根据相减结果设置标志位,结果不保存,相减,根据相减结果设置标志位,结果不保存, 字节操作:(字节操作:(ALAL)()(DIDI),), 字操作:(字操作:(AXAX)()(DIDI)。)。 修改指针使之指向串中的下一个元素。修改指针使之指向串中的下一个元素。当当DF=0DF=0时,(时,(DIDI)增量。当增量。当DF=1DF=1时,(时,(DIDI)减量。减量。从源串中取数指令从源串中取数指令LODSLODS LODSBLODSB从字节串中取数从字节串中取数 LOD

57、SWLODSW从字串中取数从字串中取数功功能能:将将SISI所所指指的的源源串串中中的的一一个个字字节节(或或字字)存存储单元中的数据取出来送入储单元中的数据取出来送入ALAL(或或AXAX)中。中。即:即: 字节操作:(字节操作:( SISI)ALAL, 字操作:(字操作:( SISI)AXAX。 修改指针修改指针SISI,使它指向串中的下一个元素。使它指向串中的下一个元素。当当DF=0DF=0时,(时,(SISI)增量。当增量。当DF=1DF=1时,(时,(SISI)减量。减量。 STOSSTOS STOSBSTOSB往字节串中存数往字节串中存数STOSWSTOSW往字串中存数往字串中存数

58、功功能能:将将ALAL或或AXAX中中的的数数据据送送入入DIDI所所指指的的目目的的串中的字节(或字)存储单元中。串中的字节(或字)存储单元中。即:即: 字节操作:字节操作:(ALAL)DIDI, 字操作:字操作:(AXAX)DIDI。 修修改改指指针针DIDI,使使之之指指向向串串中中的的下下一一个个元元素。素。当当DF=0DF=0时,(时,(DIDI)增量)。增量)。当当DF=1DF=1时,(时,(DIDI)减量。减量。存数据串指令存数据串指令控制转移类指令控制转移类指令用于改变程序中指令执行路径用于改变程序中指令执行路径程序转移指令程序转移指令循环指令循环指令 子程序调用指令子程序调用

59、指令中断指令中断指令两种不同类型两种不同类型无条件转移无条件转移:指令执行与状态:指令执行与状态无关无关,指令将改变程序执行的顺序。指令将改变程序执行的顺序。条件跳转条件跳转:指令的执行要视指定的条:指令的执行要视指定的条件是否满足,如条件满足则转移发生,件是否满足,如条件满足则转移发生,否则顺序执行下一条指令,一般否则顺序执行下一条指令,一般根据根据执行上一指令后执行上一指令后标志寄存器的状态标志寄存器的状态而而决定是否转移决定是否转移程序转移指令程序转移指令无条件转移指令无条件转移指令JMP OPJMP OP段内直接转移段内直接转移段内间接转移段内间接转移段间直接转移段间直接转移段间间接转

60、移段间间接转移段内直接转移段内直接转移当当跳跳转转的的范范围围在在128 128 +127+127时时,称称为为段段内直接短转移内直接短转移。格式:格式:JMP JMP SHORTSHORT OPR OPR当当跳跳转转的的范范围围超超过过一一个个字字节节所所表表达达的的有有符符号号数数范范围围,但但跳跳转转目目的的标标号号仍仍在在同同一一段段内内,称为,称为段内直接近转移段内直接近转移。格式:格式:JMP JMP NEARNEAR PTR OPR PTR OPR( (IP)+dispIP)+disp(IP(IP) )段内间接转移段内间接转移转转移移指指令令的的操操作作数数是是1616位位的的通

61、通用用寄寄存存器器或或存存储器操作数,转移指令的目的地址为:储器操作数,转移指令的目的地址为: JMP WORD PTR OPRJMP WORD PTR OPR(EAEA) (IPIP) ,EAEA由由OPROPR的寻址方式确定,可使用的寻址方式确定,可使用除立即数方除立即数方式以外式以外的任一种寻址方式的任一种寻址方式 段间直接转移段间直接转移段段间间转转移移是是指指转转移移的的目目的的地地址址是是属属于于另另一一个个代代码码段段,因因而而在在发发生生跳跳转转时时,CSCS和和IPIP需需要要一一起起更更改改,用用操操作作数数的的第第一一个个字字装装入入IPIP,第第二二个个字字装装入入CS

62、CS,指指令令转转移移标标号号的的属属性性为远标号。为远标号。例如:例如: JMP JMP FAR PTRFAR PTR LABEL_NAME LABEL_NAME段间间接转移段间间接转移段段间间间间接接转转移移的的操操作作数数为为3232位位存存储储器器操操作作数数,存存储储器器中中的的第第一一个个字字加加载载IPIP,第第二字加载二字加载CSCS。例如:例如:JMP DWORD PTR BX+SIJMP DWORD PTR BX+SIJMP ALPHA BP+DIJMP ALPHA BP+DI条件转移指令条件转移指令简单简单条件转移指令条件转移指令无符号数无符号数条件转移指令条件转移指令有

63、符号数有符号数条件转移指令条件转移指令 它们都有通用的语句格式和功能。它们都有通用的语句格式和功能。语句格式:语句格式: 标号:标号: 操作符操作符 短标号短标号功能:功能:如果条件满足,则(如果条件满足,则(IPIP)位移量位移量IPIP。助记符助记符 意义意义 测试条件测试条件JE/JZ JE/JZ 等于等于 ( (ZF)=1ZF)=1JNE/JNZ JNE/JNZ 不等于不等于 (ZF)=0(ZF)=0JC JC 有进位或有借位有进位或有借位 (CF)=1(CF)=1JNC JNC 无进位或无借位无进位或无借位 (CF)=0(CF)=0JO JO 有溢出有溢出 (OF)=1(OF)=1J

64、NO JNO 无溢出无溢出 (OF)=0(OF)=0JP/JPE JP/JPE 奇偶位为奇偶位为1/1/偶偶 (PF)=1(PF)=1JNP/JPO JNP/JPO 奇偶位为奇偶位为0/0/奇奇 (PF)=0(PF)=0JS JS 为负为负 (SF)=1(SF)=1JNS JNS 为正为正 (SF)=0(SF)=0JCXZ CXJCXZ CX内容为内容为0 0 (CX)=0(CX)=0简单条件转移指令简单条件转移指令无符号数条件转移指令无符号数条件转移指令助记符助记符 意义意义 测试条件测试条件JA/JNBE JA/JNBE 大于或不小于等于大于或不小于等于 ( (CF)+(ZF)=0CF)+

65、(ZF)=0JAE/JNBJAE/JNB 大于等于或不小于大于等于或不小于 (CFCF)=0=0JB/JNAE JB/JNAE 小于或不大于等于小于或不大于等于 (CFCF)=1=1JBE/JNA JBE/JNA 小于等于或不大于小于等于或不大于 ( (CF)+(ZF)=1 CF)+(ZF)=1 有符号数条件转移指令有符号数条件转移指令 助记符助记符 意义意义 测试条件测试条件JG/JNLE JG/JNLE 大于或不小于等于大于或不小于等于 ( (SF)(OF)+(ZF)=0SF)(OF)+(ZF)=0JGE/JNL JGE/JNL 大于等于或不小于大于等于或不小于 (SF)(OF)=0(SF

66、)(OF)=0JL/JNGE JL/JNGE 小于或不大于等于小于或不大于等于 (SF)(OF)=1(SF)(OF)=1JLE/JNG JLE/JNG 小于等于或不大于小于等于或不大于 (SF)(OF)+(ZF)=1 (SF)(OF)+(ZF)=1 循环指令循环指令 共同特点:共同特点:指指令令用用CXCX作作为为记记数数器器,重重复复控控制制指指令令每每执执行行一一次次CXCX减减1 1,用用CXCX是是否否减减至至为为零零来判断循环转移;来判断循环转移;指指令令长长度度为为2 2字字节节,第第一一字字节节是是指指令令操操作作码码,第第二二字字节节是是相相对对偏偏移移量量,均均属属相对短转移

67、。相对短转移。循环指令循环指令LOOPLOOP相等相等/ /为零循环指令为零循环指令LOOPELOOPE不相等不相等/ /不为零循环指令不为零循环指令LOOPNELOOPNE LOOPLOOPLOOP LOOP 短标号短标号功能:功能:(CXCX)(CXCX)-1-1,测试测试CXCX的内容是否为的内容是否为0 0,若(若(CXCX)00则转移至目标操作数,则转移至目标操作数,否则顺序执行下一条指令。否则顺序执行下一条指令。它等效于以下两条指令组合:它等效于以下两条指令组合: DEC CXDEC CX JNE JNE 短标号短标号相等相等/ /为零循环指令为零循环指令LOOPELOOPE语句格

68、式:语句格式: LOOPE LOOPE 短标号短标号 LOOPZ LOOPZ 短标号短标号功能:功能: (CXCX)1 01 0且且ZF=1ZF=1, 则程序转移(循环);则程序转移(循环); 否则,顺序执行。否则,顺序执行。注注意意:状状态态标标志志ZFZF是是LOOPZ/LOOPELOOPZ/LOOPE之之前前的的指指令令执执行行时时所所生生成成的的ZFZF标标志志,CXCX寄寄存存器器减减1 1并不影响并不影响ZFZF的状态。的状态。不相等不相等/ /不为零循环指令不为零循环指令语句格式:语句格式: LOOPNE LOOPNE 短标号短标号 LOOPNZ LOOPNZ 短标号短标号功能:

69、功能: (CXCX)1010, 则程序转移(循环);则程序转移(循环); 否则,顺序执行。否则,顺序执行。除除转转移移条条件件需需(ZFZF)=0=0以以外外,其余同其余同LOOPZLOOPZ。子程序调用子程序调用CALLCALL子程序是完成某一功能的特子程序是完成某一功能的特殊程序段,每当程序需要这殊程序段,每当程序需要这一功能时,可以调用该子程一功能时,可以调用该子程序,而序,而不必重复书写不必重复书写这个代这个代码段,这样可以主程序简明,码段,这样可以主程序简明,占用较少的内存空间。占用较少的内存空间。 第一条指令返回子程序A调用子程序A下一条指令下一条指令调用子程序A主程序子程序调用过

70、程子程序调用过程子程序调用指令子程序调用指令1 1子程序调用指令子程序调用指令CALLCALL(1 1)段内直接调用段内直接调用(2 2)段内间接调用段内间接调用(3 3)段间直接调用段间直接调用(4 4)段间间接调用段间间接调用2 2返回指令返回指令RETRET(1 1)语句格式:语句格式:RETRET(2 2)语句格式:语句格式:RET nRET n(n n为偶数)为偶数) 段内直接调用段内直接调用段段内内调调用用是是指指被被调调用用的的子子程程序序与与调调用用主主程程序序同同处处在在一一个个代代码码段段中中,因因而而段段寄寄存存器器CSCS保保持持不不变变,在调用时在调用时只需改变指令指

71、针只需改变指令指针IPIP,属于属于NEARNEAR转移。转移。指令格式:指令格式: CALL NEAR_PROCCALL NEAR_PROC其中其中NEAR_PROCNEAR_PROC可以为过程名或标号,可以为过程名或标号,指令执行过程如下:指令执行过程如下:堆栈指针堆栈指针 (SPSP)(SPSP)-2-2 (SP+1SP+1):():(SPSP)(IPIP) (IPIP)(IPIP)+disp16+disp16段内间接调用段内间接调用指令格式:指令格式: CALL OPCALL OPOPOP可以是通用寄存器或字存储器操作数可以是通用寄存器或字存储器操作数指令执行过程如下:指令执行过程如下

72、:堆栈指针堆栈指针 (SPSP)(SPSP)-2-2 (SP+1SP+1):(SPSP)(IPIP) (IPIP)(EAEA)例:例:CALL BXCALL BXCALL MEM_WORDCALL MEM_WORDCALL WORD PTRBXCALL WORD PTRBX段间调用的段间调用的CALLCALL指令指令段间调用是指被调用的子程序与调用的主程段间调用是指被调用的子程序与调用的主程序处于两个序处于两个不同不同的代码段内,因而当程序进的代码段内,因而当程序进行调用转移时,行调用转移时,CSCS和和IPIP需一起变更需一起变更。根据操作数的类型可以将段间调用指令分成根据操作数的类型可以将

73、段间调用指令分成段间直接调用和段间间接调用。段间直接调用和段间间接调用。 段间直接调用段间直接调用指令格式:指令格式:CALL FAR_PROCCALL FAR_PROC其中其中FAR_PROCFAR_PROC可以为远过程名或远标号。可以为远过程名或远标号。指令执行的过程如下:指令执行的过程如下:( (SP)(SP)-2SP)(SP)-2 (SP+1):(SP)(CS) (SP+1):(SP)(CS) (CS)SEG FAR_PROC (CS)SEG FAR_PROC(SP)(SP)(SP)(SP)2 2 (SP+1):(SP)(IP) (SP+1):(SP)(IP) (IP)OFFSET F

74、AR_PROC (IP)OFFSET FAR_PROC段间间接调用段间间接调用指令格式:指令格式:CALL MEMORY32CALL MEMORY32概概念念:段段间间间间接接调调用用的的操操作作数数应应为为3232位位存存储储器器操操作作数数。指指令令执执行行过过程程与与上上述述段段间间直直接接调调用用类类似似,所所不不同同的的是是使使用用存存储储器器中中第第一一个个字字加加载载IPIP,使使用用存存储器中的第二个字加载储器中的第二个字加载CSCS。如:如:CALL CALL DWORD PTRDWORD PTRBXBX 子程序返回指令子程序返回指令指令格式:指令格式: RET RET 或或

75、 RET nRET n RETF RETF 或或 RETF nRETF n其中其中RETRET为近过程的结束返回指令,为近过程的结束返回指令,RETFRETF为远过程的结束返回指令,为远过程的结束返回指令,带带参参数数n n的的RETRET或或RETFRETF指指令令可可将将传传递递的的参参数数弹弹出作废。出作废。中断指令中断指令1 1中断调用指令中断调用指令INTINT语句格式:语句格式:INT nINT n功能:功能:(FLAGSFLAGS)(SPSP),),0 IF0 IF、TFTF。 (CSCS) (SPSP),(),(4*n+24*n+2) CS CS。 (IPIP) (SPSP),

76、(),(4*n4*n) IP IP。2 2中断返回指令中断返回指令IRETIRET语句格式:语句格式:IRETIRET功能:功能:(SPSP)IP IP (SPSP) CS CS (SPSP) FLAGS FLAGS 处理机控制指令处理机控制指令三三类类1212条条,主主要要用用于于设设置置和和清清除除CPUCPU的的状状态态标标志志位位,使使CPUCPU与与协协处处理器同步或执行空操作。理器同步或执行空操作。状态标志位操作指令状态标志位操作指令外部同步指令外部同步指令状态标志位操作指令状态标志位操作指令控制进位标志位控制进位标志位CFCF清进位清进位 CLCCLC ;CF0CF0进位求反进位求反 CMC CMC ;CFCF求反求反设置进位设置进位 STC STC ;CF1CF1控制方向标志位控制方向标志位DFDF清数据方向标志位清数据方向标志位 CLDCLD ;DF0DF0设置数据方向标志位设置数据方向标志位 STDSTD ;DF1DF1控制中断允许标志位控制中断允许标志位禁止可屏蔽中断请求禁止可屏蔽中断请求 CLICLI ;IF0IF0允许可屏蔽中断请求允许可屏蔽中断请求 STISTI ;IF1IF1

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

最新文档


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

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