微型计算机技术与应用第3章Pentium的指令系统课件

上传人:风*** 文档编号:241312221 上传时间:2024-06-17 格式:PPT 页数:123 大小:4.93MB
返回 下载 相关 举报
微型计算机技术与应用第3章Pentium的指令系统课件_第1页
第1页 / 共123页
微型计算机技术与应用第3章Pentium的指令系统课件_第2页
第2页 / 共123页
微型计算机技术与应用第3章Pentium的指令系统课件_第3页
第3页 / 共123页
点击查看更多>>
资源描述
第第3章章 Pentium的的 指令系统指令系统博学审问慎思明辨笃行第3章Pentium的指令系统博学第第3章章Pentium的指令系统的指令系统3.1Pentium的的寻址方式址方式3.2Pentium的指令系的指令系统3.3汇编语言中的言中的标记、表达式和、表达式和伪指令指令教学重点教学重点:寻址方式;寻址方式;传送指令中的堆栈指令、交换指令、换码指令、输入传送指令中的堆栈指令、交换指令、换码指令、输入/输出指令;输出指令;算术运算指令中的比较指令;算术运算指令中的比较指令;串操作指令;串操作指令;转移指令;转移指令;中断调用示例;中断调用示例;规范程序;规范程序;伪指令伪指令DB、DW、PTR。第第3章章Pentium的指令系统的指令系统2024/6/172第3章Pentium的指令系统3.1指令的基本格式:指令的基本格式:MOVAX,1235H(双操作数)(双操作数)INCCX(单操作数)操作数)寻址方式:址方式:说明操作数所在地址(来源)的方法明操作数所在地址(来源)的方法操作操作码操作数或操作数地址操作数或操作数地址指令的两个问题:指令的两个问题:指出进行什么操作指出进行什么操作涉及的操作数和操作结果放在何处涉及的操作数和操作结果放在何处第第3章章Pentium的指令系统的指令系统3.1Pentium的的寻址方式址方式2024/6/173指令的基本格式:操作码操作数或操作数地址指令的两个问题:第3v操作数直接存放在指令中,紧跟在操作码之后操作数直接存放在指令中,紧跟在操作码之后,MOVAL,80H MOVAX,1090H MOVEAX,10002000H(Immediateaddressing)作为指令的一部分,直接存放在代码段里,这种操作为指令的一部分,直接存放在代码段里,这种操作数称为立即数。立即数可以是位或作数称为立即数。立即数可以是位或16、32位的。位的。高高位字节放在高地址位字节放在高地址,低位字节放在低地址低位字节放在低地址。使用场合:使用场合:经常用于给寄存器赋初值。经常用于给寄存器赋初值。注意:注意:只能用于源操作数字段只能用于源操作数字段,不能用于目的操作,不能用于目的操作数字段。数字段。第第3章章Pentium的指令系统的指令系统3.1.1立即数寻址立即数寻址2024/6/174操作数直接存放在指令中,紧跟在操作码之后,(Immediat例:例:MOVAL,05H指令指令执行后行后:(AL)=05H例:例:MOVAX,3064H指令指令执行后行后:(AX)=3064H立即立即寻址方式址方式机器代码:机器代码:1011000000000101操作码:操作码:B0立即数:立即数:05H机器代码:机器代码:101110000110010000110000操作码:操作码:B8立即数:立即数:3064H第第3章章Pentium的指令系统的指令系统例例:2024/6/175例:MOVAL,05H例:MOVAX,2024/6/1762023/8/962024/6/1772023/8/97(Registeraddressing)INCCXROLAH,1MOVECX,EAX操作数在寄存器中,指令只须指定寄存器号。操作数在寄存器中,指令只须指定寄存器号。这种寻址方式因为操作数在寄存器中,操作这种寻址方式因为操作数在寄存器中,操作在在CPU内部,不执行总线周期,不需要访问存储内部,不执行总线周期,不需要访问存储器,器,因此因此运算速度较高运算速度较高。既可用于源操作数,也可用于目的操作数。既可用于源操作数,也可用于目的操作数。3232位通用寄存器:位通用寄存器:位通用寄存器:位通用寄存器:EAX EBX ECX EDX EAX EBX ECX EDX 1616位通用寄存器:位通用寄存器:位通用寄存器:位通用寄存器:AX BX CX DX AX BX CX DX 8 8位通用寄存器:位通用寄存器:位通用寄存器:位通用寄存器:AH AL BH BL AH AL BH BL 第第3章章Pentium的指令系统的指令系统3.1.2寄存器寻址寄存器寻址2024/6/178(Re指令指令执行前行前:(AX)3064(SS)1234 MOVSS,AX指令指令执行后行后:(AX)保持不)保持不变。(。(SS)3064H指令指令执行前:行前:指令指令执行后行后:SSSSAXAX3064H3064H3064H3064H1234H1234H3064H3064H寄存器寄存器寻址方式址方式第第3章章Pentium的指令系统的指令系统例例:2024/6/179指令执行前:(AX)3064(第第3章章Pentium的指令系统的指令系统2024/6/1710第3章Pentium的指令系统2023/8/910第第3章章Pentium的指令系统的指令系统2024/6/1711第3章Pentium的指令系统2023/8/911I/O直接寻址:地址在指令中直接提供直接寻址:地址在指令中直接提供(0255)INAL,82H OUT80H,AX INEAX,80HI/O间接寻址:利用间接寻址:利用DX设置端口地址设置端口地址(065535)MOV DX,80HINAL,DX OUTDX,AX OUTDX,EAX第第3章章Pentium的指令系统的指令系统3.1.3输入输入/输出端口寻址输出端口寻址2024/6/1712第3章Pentium的指令系统3.1.3输入/输出端口3.1.4存储器寻址存储器寻址操作数在主内存中,通过存储器地址指示操作数在主内存中,通过存储器地址指示1.直接寻址直接寻址(Directaddressing)MOVAX,1070HMOVEAX,ES:1000H注意:注意:(1)直接)直接寻址方式适用于址方式适用于处理理单个个变量。量。(2)直直接接寻址址方方式式隐含含的的段段寄寄存存器器是是DS,8086/8088允允许段段跨跨越越,即允即允许使用使用CSSSES作作为段寄存器,段寄存器,这时,必,必须在指令中特在指令中特别标明。明。(3)IBMPC机机中中规定定双双操操作作数数指指令令必必须有有一一个个操操作作数数使使用用寄寄存存器器方式,方式,这就是常常先要把一个就是常常先要把一个变量送到寄存器去的原因。量送到寄存器去的原因。第第3章章Pentium的指令系统的指令系统2024/6/17133.1.4存储器寻址操作数在主内存中,通过存储器地址指则:(AX)=3050H直接直接寻址方式址方式MOVAX,3100H(DS)=6000H(63100H)=3050H必须先必须先求出操作数的物理地址求出操作数的物理地址,然后再访问存储器才能取得操作数。然后再访问存储器才能取得操作数。第第3章章Pentium的指令系统的指令系统例例:2024/6/1714则:(AX)=3050H直接寻址方式MOVAX,310第第3章章Pentium的指令系统的指令系统2024/6/1715第3章Pentium的指令系统2023/8/915第第3章章Pentium的指令系统的指令系统2024/6/1716第3章Pentium的指令系统2023/8/9162.寄存器间接寻址寄存器间接寻址(Register indirect addressing)操作数的有效地址存放在寄存器中操作数的有效地址存放在寄存器中(寄存器内容偏移地址寄存器内容偏移地址)MOV AX,BX MOV EAX,EBX 注:注:若若选择BP、SP、ESP、EBP寄存器作寄存器作为间接接寻址址操作数在堆操作数在堆栈段区域中,用段区域中,用SS寄存器的内容作寄存器的内容作为段地址。段地址。在指令中可以指定段跨越前缀来取得其他段中的数据。在指令中可以指定段跨越前缀来取得其他段中的数据。例例:MOVES:DI,AXMOVDX,DS:BP操作数在存操作数在存储器存器存储单元中元中,第第3章章Pentium的指令系统的指令系统2024/6/17172.寄存器间接寻址(RegisterindirectMOVBX,DI(DS)=6000H(DI)=2000HPA=62000H(62000H)=50A0H(BX)=50A0H寄存器寄存器间接接寻址方式址方式MOVBX,DI第第3章章Pentium的指令系统的指令系统例:例:2024/6/1718寄存器间接寻址方式第3章Pentium的指令系统例:MOVBP,AX执行前:行前:(SS)=1000H,(BP)=3000H,(AX)=1234H执行后:行后:PA=13000H(13000H)=1234H寄存器寄存器间接接寻址方式址方式MOVBP,AX若选择若选择BP寄存器作为间接寻址寄存器作为间接寻址,操作数在堆栈操作数在堆栈段区域中,用段区域中,用SS寄存器的内容作为段地址。寄存器的内容作为段地址。操作数物理地址操作数物理地址:PA=16d(SS)+(BP)第第3章章Pentium的指令系统的指令系统例:例:2024/6/1719MOVBP,AX寄存器间接寻址方式若选择B第第3章章Pentium的指令系统的指令系统2024/6/1720第3章Pentium的指令系统2023/8/920第第3章章Pentium的指令系统的指令系统2024/6/1721第3章Pentium的指令系统2023/8/9213.寄存器相对寻址寄存器相对寻址(Registerrelativeaddressing)操作数的操作数的有效地址是一个基址或变址寄存器的内容有效地址是一个基址或变址寄存器的内容和指令中指定的和指令中指定的8位或位或16、32位位移量之和。位位移量之和。MOVAX,SI+100H4.基址加变址的寻址基址加变址的寻址(Basedindexedaddressing)操作数的操作数的有效地址是一个基址寄存器和一个变址寄有效地址是一个基址寄存器和一个变址寄存器的内容之和,基址寄存器名和变址寄存器名均有指存器的内容之和,基址寄存器名和变址寄存器名均有指令指定。令指定。MOVAX,BX+SIMOVEDX,EBX+ESIMOVEDX,EBXESI第第3章章Pentium的指令系统的指令系统2024/6/17223.寄存器相对寻址(Registerrelativea寄存器相寄存器相对寻址方式址方式MOVAX,COUNTBPOPOPOPOP40H40H20H20H.48H48H55H55H.55H55H48H48H存储器存储器操操作作码码位移量位移量COUNTCOUNT代代码码段段堆堆栈栈段段55040H55040H50000H50000HAHAHALAL第第3章章Pentium的指令系统的指令系统例:例:MOVAX,COUNTBPMOVAX,COUNT+BPMOVAX,COUNT+BPCOUNT为16位位移量。位位移量。指令指令执行前行前:(SS)=5000H,(BP)=3000H,COUNT=2040H,(AX)=1234H指令指令执行后行后:EA=5040HPA=55040H(55040H)=5548H(AX)=5548H2024/6/1723寄存器相对寻址方式OPOP40H20H.48HMOVAX,BXSI或或MOVAX,BX+SI执行指令前行指令前:(DS)=3200H,(BX)=0456H,(SI)=1094H(334EAH)=4567H执行指令后行指令后:EA=14EAHPA=334EAH(AX)=4567H基址加基址加变址址寻址方式址方式MOVAX,BX+SI第第3章章Pentium的指令系统的指令系统例:例:2024/6/1724基址加变址寻址方式第3章Pentium的指令系统例:202第第3章章Pentium的指令系统的指令系统2024/6/1725第3章Pentium的指令系统2023/8/925第第3章章Pentium的指令系统的指令系统2024/6/1726第3章Pentium的指令系统2023/8/926第第3章章Pentium的指令系统的指令系统2024/6/1727第3章Pentium的指令系统2023/8/927第第3章章Pentium的指令系统的指令系统2024/6/1728第3章Pentium的指令系统2023/8/9285相对的基址加变址寻址相对的基址加变址寻址(Relativebasedindexedaddressing)MOVAX,BP+SI+0050操作数操作数有效地址是一个基址寄存器和一个变址寄存有效地址是一个基址寄存器和一个变址寄存器的内容和器的内容和8位或位或16、32位位移量之和位位移量之和。第第3章章Pentium的指令系统的指令系统2024/6/17295相对的基址加变址寻址(RelativebasedinMOVAX,MASKBXDIMOVAX,MASKBX+DIMOVAX,MASX+BX+DI执行指令前行指令前:(DS)=3000H(BX)=1346H(DI)=0500HMASK=1234H(32A7AH)=4050H执行指令后行指令后:EA=2A7AHPA=32A7AH(AX)=4050H相相对基址加基址加变址址MOVAX,MASK+BX+DI第第3章章Pentium的指令系统的指令系统例:例:2024/6/1730相对基址加变址第3章Pentium的指2024/6/17312023/8/9312024/6/17322023/8/93232位有效地址位有效地址基址寄存器(变址寄存器基址寄存器(变址寄存器*比例)位移量比例)位移量其中的其中的4个组成部分是:个组成部分是:基址寄存器基址寄存器任何任何8个个32位通用寄存器之一;位通用寄存器之一;变址寄存器变址寄存器除除ESP之外的任何之外的任何32位通用寄存器之一;位通用寄存器之一;比例比例可以是可以是1248(因为操作数的长度可以是(因为操作数的长度可以是1248字节);字节);位移量位移量可以是可以是816、32位值。位值。32位存储器寻址方式的组成公式为:位存储器寻址方式的组成公式为:第第3章章Pentium的指令系统的指令系统2024/6/173332位有效地址其中的4个组成部分是:32位存储器寻址方式的设设DS=2000H,SS=3000H,BP=0200H,SI=4000H,BUF=1000H,EAX=00001000H,EBX=00002000H。假设按假设按16位实模式操作,确定下列每条指令访问内存的物位实模式操作,确定下列每条指令访问内存的物理地址,并且指出源操作数及目的操作数的寻址方式,理地址,并且指出源操作数及目的操作数的寻址方式,源操作数所在逻辑段。源操作数所在逻辑段。(1)MOV AL,1234H (2)MOV EDX,BX (3)MOV CL,ES:BX100H (4)MOV SI,EBX (5)MOV AH,BUFBXSI (6)MOV EAX,BP1234H 习习题题第第3章章Pentium的指令系统的指令系统2024/6/1734设DS=2000H,SS=3000H,BP=0200H,SI3.2Pentium的指令系统的指令系统vPentium的指令分为如下几类:的指令分为如下几类:传送指令;传送指令;串操作指令;串操作指令;算术运算指令;算术运算指令;逻辑运算和移位指令;逻辑运算和移位指令;转移和调用指令;转移和调用指令;标志操作和处理器指令;标志操作和处理器指令;控制指令;控制指令;条件测试和字节设置指令;条件测试和字节设置指令;系统管理指令;系统管理指令;支持高级语言的指令。支持高级语言的指令。第第3章章Pentium的指令系统的指令系统2024/6/17353.2Pentium的指令系统Pentium的指令分为如3.2.1传送指令传送指令功能:功能:负责把数据、地址或立即数在把数据、地址或立即数在寄存器、存寄存器、存储单元、元、I/O端口端口之之间传送。送。特点:特点:计算机最基本、最重要的一种操作,使用比例最高。算机最基本、最重要的一种操作,使用比例最高。种种类(分七种分七种):通用通用传送指令送指令堆堆栈操作指令指令操作指令指令交交换指令指令输入入/输出指令出指令换码指令指令地址地址传送指令送指令标志志传送指令送指令第第3章章Pentium的指令系统的指令系统2024/6/17363.2.1传送指令功能:负责把数据、地址或立即数在寄存器1.通用传送指令通用传送指令(GeneralPurposeTransfer)1)MOVDEST,SRC两个操作数的数位相同两个操作数的数位相同功功能:能:l把一个字节把一个字节(B)或一个字(或一个字(W)、一个双字()、一个双字(DW)操)操作数由源传送至目的。作数由源传送至目的。l源操作数可以是源操作数可以是通用寄存器通用寄存器、段寄存器、立即数、内存单元;、段寄存器、立即数、内存单元;目的操作数可以是目的操作数可以是通用寄存器、段寄存器(除通用寄存器、段寄存器(除CS)、内存单元)、内存单元 源操作数不是立即数时,两操作数之一必为寄存器。源操作数不是立即数时,两操作数之一必为寄存器。源操作数与目的操作数的类型要一致。源操作数与目的操作数的类型要一致。不能用立即数、不能用立即数、CSCS和和IP(EIP)IP(EIP)做目的操作数。做目的操作数。不允许在段寄存器之间、内存单元之间直接传送数据。不允许在段寄存器之间、内存单元之间直接传送数据。MOVBX,2000H MOVAX,2000HMOVBX,AX MOVES,AL MOVCL,1234H MOVES,AXMOVEAX,EBXMOVCX,1234H MOVCS,3050H MOVIP,1234H MOV2225H,AX MOVDS,ES MOVSS,DS MOV2100H,AX 第第3章章Pentium的指令系统的指令系统2024/6/1737通用传送指令(GeneralPurposeTransfe2)扩展传送指令扩展传送指令MOVZXDEST,SRCMOVSXDEST,SRC两个操作数的数位不相同两个操作数的数位不相同例:例:MOVBL,80HMOVSXAX,BL;AX=FF80H(符号扩展)(符号扩展)MOVZXAX,BL;AX=0080H(零扩展)(零扩展)MOVSXEAX,BL;AX=FFFFFF80HMOVZXEAX,BL;AX=00000080H 目的操作数为通用寄存器(目的操作数为通用寄存器(1616位或位或3232位)位)源操作数长度必须小于目的操作数长度,为通用寄存器或源操作数长度必须小于目的操作数长度,为通用寄存器或 存储器操作数(存储器操作数(8 8位或位或1616位)位)所有的传送操作不影响标志位所有的传送操作不影响标志位第第3章章Pentium的指令系统的指令系统2024/6/17382)扩展传送指令两个操作数的数位不相同例:MOVBL,符号符号扩展:展:符号符号扩展展是指用一个操作数的符号位是指用一个操作数的符号位(即最高位)(即最高位)形成另一个操作数,那么所形成的后一个操作数的形成另一个操作数,那么所形成的后一个操作数的各位是全各位是全0(正数正数)或全或全1(负数)。数)。符号符号扩展不改展不改变数据大小数据大小n对于数据于数据64H(表示数据(表示数据100),其最高位),其最高位D7为0,符号符号扩展后高展后高8位都是位都是0,成,成为0064H(仍表示数据仍表示数据100)n对于数据于数据ff00H(表示有符号数表示有符号数256),其最高位,其最高位D15为1,符号符号扩展后高展后高16位都是位都是1,成,成为ffffff00H(仍表示有符号数(仍表示有符号数256)2024/6/17392023/8/9392.堆栈操作指令堆栈操作指令(Stack)堆堆栈按照按照先先进后出后出原原则组织的一段内存区域的一段内存区域特点:特点:特点:特点:只有一个出入口,出入口用堆只有一个出入口,出入口用堆栈指指针SP来表示。来表示。SP在任何在任何时候都是指向堆候都是指向堆栈当前的当前的栈顶。下推式的(下推式的(规定堆定堆栈设置在堆置在堆栈段内)改段内)改变SP的内容,随着的内容,随着推入堆推入堆栈内容增加,内容增加,SP的的值减少。减少。.(SP)-2(SP)-2(SP)-1(SP)-1(SP)(SP)堆堆栈栈段段Word 1Word 2Word 3Word 4Word 5StackPUSHPOP第第3章章Pentium的指令系统的指令系统2024/6/17402.堆栈操作指令(Stack)堆栈按照先进后出原则q存放存放CPU寄存器或存寄存器或存储器中器中暂时不使用的数据,不使用的数据,使用数据使用数据时将其将其弹出;出;q调用子程序用子程序,或响或响应中断中断时都要用到堆都要用到堆栈。调用用子程序子程序(或(或过程)或程)或发生中断生中断时要要保保护断点的地址断点的地址,子程序或中断返回子程序或中断返回时恢复断点。恢复断点。子程序子程序:在一个:在一个实际程序中,有些操作要程序中,有些操作要执行多次,把要行多次,把要重复重复执行操作行操作编为子程序。子程序。也常把一些常用的操作也常把一些常用的操作编成成标准化、通用准化、通用化的子程序。化的子程序。第第3章章Pentium的指令系统的指令系统堆栈用途:堆栈用途:2024/6/1741子程序:在一个实际程序中,有些操作要执行多次,把要重复执行操入栈指令:入栈指令:入栈指令:入栈指令:PUSHsrc;(SP)(SP)-2/(SP)-4出栈指令:出栈指令:出栈指令:出栈指令:POPdest;(SP)(SP)+2/(SP)+4PUSHEAXPUSHCSPUSHBX+DIPUSH0870HPUSHDWORDPTREBX+ESIPOPBXPOPESPOPEAX堆栈操作都按字、双字操作。堆栈操作都按字、双字操作。PUSH,POP指令的操作数可能有三种:指令的操作数可能有三种:寄存器寄存器(通用寄存器,地址指针,变址寄存器)(通用寄存器,地址指针,变址寄存器),段寄存器段寄存器(CS除外,除外,PUSHCS合法,合法,POPCS非法)非法),存储器存储器。PUSH,POP指令应该成对使用,保持原有状态。指令应该成对使用,保持原有状态。POP不能用立即不能用立即寻址方式址方式POP1234H 第第3章章Pentium的指令系统的指令系统2024/6/1742入栈指令:PUSHsrc;(SP)假设假设(AX)=2107H,执行执行PUSHAX(SP)低地址低地址高地址高地址(SP)07H21H低地址低地址高地址高地址进栈方向进栈方向*PUSHAX执行前执行前PUSHAX执行后执行后(SP)-2第第3章章Pentium的指令系统的指令系统例:例:2024/6/1743假设(AX)=2107H,执行PUSHPOPBX(SP)低地址低地址高地址高地址(SP)07H21H低地址低地址高地址高地址出栈方向出栈方向07H21H (BX)2107H(SP)(SP)+2POPBX执行前执行前POPBX执行后执行后*第第3章章Pentium的指令系统的指令系统例:例:2024/6/1744POPBX(SP)低地址高地址(SP)07H低地址PUSHAPOPAPUSHADPOPAD堆栈成组操作指令:堆栈成组操作指令:堆栈成组操作指令:堆栈成组操作指令:将将8个个16位通用寄存器的内容按位通用寄存器的内容按AX、CX、DX、BX、SP、BP、SI、DI的次序推入推栈,的次序推入推栈,SP-16从推栈中弹出从推栈中弹出8个个16位数据分别按位数据分别按DI、SI、BP、SP、BX、DX、CX、AX的次序送入寄存器中,的次序送入寄存器中,SP+16将将8个个32位通用寄存器的内容按位通用寄存器的内容按EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI的次序推的次序推入推栈,入推栈,SP-32从推栈中弹出从推栈中弹出8个个32位数据分别按位数据分别按EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX的次序的次序送入寄存器中,送入寄存器中,SP+32第第3章章Pentium的指令系统的指令系统2024/6/1745PUSHA堆栈成组操作指令:将8个16位通用寄存器的内容XCHGdest,src3.交换指令交换指令(Exchange)功功能:能:一个字一个字节、字、双字源操作数与目的操作数相交、字、双字源操作数与目的操作数相交换。可以可以实现:寄存器之:寄存器之间、寄存器和存、寄存器和存储器之器之间存存储器之器之间(两个存(两个存储单元之元之间)不能交)不能交换;两个操作数中必两个操作数中必须有一个在寄存器中;有一个在寄存器中;段寄存器、段寄存器、IP、EIP不能作不能作为一个操作数;一个操作数;不影响不影响标志位。志位。应用用举例:例:XCHGBL,DLXCHGEAX,ESIXCHGCOUNTDI,AXXCHGBX,DI XCHGDS,AX 第第3章章Pentium的指令系统的指令系统2024/6/1746XCHGdest,src3.交换指令(Ex处理器执行空操作该指令,需要化费处理器执行空操作该指令,需要化费时间,在主存中也要占用一个字节空间,时间,在主存中也要占用一个字节空间,实现短时间延时,临时占用代码空间实现短时间延时,临时占用代码空间特殊应用:特殊应用:空操作指令空操作指令NOPXCHGEAX,EAX第第3章章Pentium的指令系统的指令系统2024/6/1747特殊应用:空操作指令NOP第3章Pentium的指令系BSWAP32位寄存器位寄存器 BSWAP EAX,EAX=67452301H寄存器内部字节交换指令寄存器内部字节交换指令EAX=01234567H,操作:操作:将将32位寄存器的位寄存器的4个字节通过两两交换实现反序排列使个字节通过两两交换实现反序排列使数据次序按字节为单位反过来,以改变数据的存放方式。数据次序按字节为单位反过来,以改变数据的存放方式。例:例:第第3章章Pentium的指令系统的指令系统2024/6/1748BSWAP32位寄存器BSWAPEAX,4./5.累加器专用传送指令累加器专用传送指令(只限于使用(只限于使用EAX、AX或或AL)1)输入)输入/输出指令输出指令INac,PORT OUTPORT,ac两操作数分两操作数分别是端口地址内容和累加器内容是端口地址内容和累加器内容(AL或或AX或或EAX)寻址址:直接直接寻址址(8位端口地址,位端口地址,0255)PORT=0FFH间接接寻址址(16位端口地址由位端口地址由DX指定,指定,寻址址64K)PORTFFH每个端口数据每个端口数据长度均度均为8位位 第第3章章Pentium的指令系统的指令系统2024/6/17494./5.累加器专用传送指令(只限于使用EAX、AX或AL直接的直接的I/O指令指令 IN AL,50H IN AX,70H IN EAX,70H OUT 80H,AX间接的间接的I/O指令:指令:MOV DX,80H IN AL,DX IN AX,DX IN EAX,DX OUT DX,AX OUT DX,EAX第第3章章Pentium的指令系统的指令系统2024/6/1750直接的I/O指令第3章Pentium的指令系统2023/82)换码指令换码指令(Translate字节转换指令)字节转换指令)XLAT;(;(AL)(BX)+(AL)XLATB;(;(AL)(EBX)+(AL)功功能:能:将一种将一种字字节代代码转换成另一种成另一种字字节代代码隐含含规定将代定将代码表格的首地址存入表格的首地址存入BX/EBX中,中,将将AL存放待存放待查某某编码在表格内的偏移量在表格内的偏移量。把把BX/EBX和和AL的内容相加作的内容相加作为有效地址,并有效地址,并据此据此读出其内存出其内存单元的内容送元的内容送AL中。中。第第3章章Pentium的指令系统的指令系统2024/6/17512)换码指令(Translate字节转换指令)X格雷码编码规则如下:格雷码编码规则如下:011000100011200101300110401001501010601100710001810010910100第第3章章Pentium的指令系统的指令系统例:例:2024/6/1752格雷码编码规则如下:第3章Pentium的指令系统例:2例:例:MOVBX,OFFSETTABLE;(BX)=0040HMOVAL,3XLATTABLE指令执行后指令执行后(AL)=33H注意注意:(BX)30HF004031HF0041(AL)=332HF004233HF0043TABLE(DS)=F000H不影响标志位不影响标志位字节表格字节表格(长度不超过长度不超过256)首地址首地址(BX)需转换代码需转换代码(AL)第第3章章Pentium的指令系统的指令系统2024/6/1753(BX)30HF00406.地址传送指令地址传送指令LEAReg,MemEA;EA(Reg)dstsrc功功能:能:加加载有效地址,有效地址,把指令中指定的把指令中指定的存存储器操作器操作数有效地址数有效地址装入指定的寄存器装入指定的寄存器。这是一条特殊指令,是一条特殊指令,传送的不是操作数本身,送的不是操作数本身,而是操作数的有效地址。而是操作数的有效地址。目的操作数不允许是段寄存器。目的操作数不允许是段寄存器。源操作数的寻址方式不允许是立即数和寄存器方式。源操作数的寻址方式不允许是立即数和寄存器方式。源操作数必须是一个存储器。源操作数必须是一个存储器。当目标寄存器位数多而数据位数少时当目标寄存器位数多而数据位数少时,可进行高位零扩展。可进行高位零扩展。LEADS,BX LEABX,2250H LEADI,BX LEABX,10HDILEADI,BX LEABL,DI LEAAH,2728 LEAEDI,BX+1946H(如如BX=1000H,则执行指令后则执行指令后EDI=00002946H)1)取有效地址指令)取有效地址指令(LoadEffectiveAddress)第第3章章Pentium的指令系统的指令系统2024/6/17546.地址传送指令LEAReg第第3章章Pentium的指令系统的指令系统注意:设注意:设(DS)=3000HBUFFER=1000H(31000H)=0040H(1)LEA指令与指令与MOV的区的区别LEABX,BUFFER;(;(BX)=1000HMOVBX,BUFFER;(BX)=0040H(2)LEA指令与指令与MOV等价等价LEABX,BUFFER;(BX)=1000HMOVBX,OFFSETBUFFER;(;(BX)=1000H2024/6/1755第3章Pentium的指令系统注意:设(DS)=300设(BX)=0400H,(,(SI)=003CH执行指令后:行指令后:EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH(BX)=139EHLEABX,BX+SI+0F62H139EH139EH第第3章章Pentium的指令系统的指令系统例:例:2024/6/1756设(BX)=0400H,(SI)=003CHLEABX,2)取段码和偏移量的指令)取段码和偏移量的指令(LoadpointerusingDS/ES)dstsrc功功能:能:将指令指定的将指令指定的32位位/64位的地址指位的地址指针送到指令指定送到指令指定寄存器和寄存器和DS或或ES。将指令指定将指令指定Mem单元的前两元的前两/四个四个单元内容元内容(16/32位偏移量位偏移量)装入指定通用寄存器,把后两装入指定通用寄存器,把后两个个单元内容元内容(段地址段地址)装入到装入到DS/ES/SS/FS/GS段寄存器。段寄存器。LESReg,Mem;(Reg)(EA)(DS)(EA)+2)LDSLSSLGSLFS第第3章章Pentium的指令系统的指令系统 目的操作数不允许是段寄存器。目的操作数不允许是段寄存器。源操作数不允许是立即数和寄存器方式。源操作数不允许是立即数和寄存器方式。2024/6/17572)取段码和偏移量的指令(Loadpointerusi假假设:(DS)=C000H指令指令:LDSSI,0010H执行指令后行指令后:(SI)=0180H(DS)=2000H第第3章章Pentium的指令系统的指令系统例例:2024/6/1758假设:(DS)=C000H第3章Pentium的指令系指令指令:LSSESP,EBX执行指令后行指令后:(ESP)=12345678H(SS)=9ABCH78H78H56H56H34H34H12H12HBCHBCH.存储器存储器BCHBCH09H09HEBX第第3章章Pentium的指令系统的指令系统例例:2024/6/175978H56H34H12HBCH.存储器BCH09HEB7.标志传送指令标志传送指令(Flagregistertransfer)功功能:能:LAHF将将标志寄存器的低志寄存器的低8位取到位取到AH中。中。SAHF将将AH的内容送入的内容送入标志寄存器低志寄存器低8位中。位中。LAHF;(;(AH)(PSW的低字节)的低字节)SAHF;(;(PSW的低字节)的低字节)(AH)OFDFIFTFSFZFAFPFCFD7D6D4D2D0AHFlagLAHF不影响不影响标志位志位,SAHF由装入的由装入的值确定确定标志位的志位的值,即影响即影响标志位。志位。第第3章章Pentium的指令系统的指令系统2024/6/17607.标志传送指令(FlagregistertransPUSHFPOPFPUSHFDPOPFD对标志寄存器的推入和弹出堆栈指令对标志寄存器的推入和弹出堆栈指令功功能:能:PUSHF将将标志寄志寄存器的低存器的低16位推入到堆位推入到堆栈中。中。POPF从堆从堆栈中中弹出一个字的内容送入出一个字的内容送入标志寄存器低志寄存器低16位中。位中。功功能:能:PUSHFD将将标志志寄存器的寄存器的32位推入到堆位推入到堆栈中。中。POPFD从堆从堆栈中中弹出一个字的内容送入出一个字的内容送入32位位标志寄存器中。志寄存器中。第第3章章Pentium的指令系统的指令系统2024/6/1761PUSHFPUSHFD对标志寄存器的推入和弹出堆栈指令设:(DS)=5000HTABLE=1000H各各单元内容如元内容如图分析下列指令分析下列指令执行行结果:果:MOVBX,TABLE;(;(BX)=MOVBX,OFFSETTABLE;(;(BX)=LEABX,TABLE;(;(BX)=LESBX,TABLE;(;(BX)=,(,(ES)=LDSBX,TABLE;(;(BX)=,(,(DS)=0040H1000H1000H0040H3000H0040H3000H习题习题:2024/6/1762设:(DS)=5000H0040H1000H1000H第第3章章Pentium的指令系统的指令系统3.2.2算术运算指令算术运算指令(Arithmetic)功能:功能:提供加、减、乘、除、类型转换五种基本算术操作提供加、减、乘、除、类型转换五种基本算术操作;利用十进制调整指令和利用十进制调整指令和ASCII调整指令对调整指令对BCD码表示的码表示的十进制数进行算术运算十进制数进行算术运算;对带符号数与无符号数进行乘、除运算。对带符号数与无符号数进行乘、除运算。特点:特点:大部分都影响标志位大部分都影响标志位,不同指令影响不同不同指令影响不同:都可以用于字节、字、双字的运算都可以用于字节、字、双字的运算;双操作数指令当源不为立即数时,必须有一个操作数为双操作数指令当源不为立即数时,必须有一个操作数为寄存器;单操作数指令不能为立即数。寄存器;单操作数指令不能为立即数。2024/6/1763第3章Pentium的指令系统3.2.2算术运算指令(A1)数的表示范围)数的表示范围a.无符号数无符号数 N位位二二进进制制数数可可表表示示的的无无符符号号数数范范围围为为02N-1。例例如如,8位位二二进进制制数数00H0FFH表表示示0255,16位位二二进制数进制数0000H0FFFFH表示表示065535。b.有符号数有符号数N位位二二进进制制补补码码数数可可以以表表示示的的带带符符号号数数范范围围为为-2N-12N-1-1。例例如如,8位位二二进进制制数数可可以以表表示示-128127,16位二进制数可以表示位二进制数可以表示-3276832767。CF=1OF=1第第3章章Pentium的指令系统的指令系统溢出问题溢出问题2024/6/17641)数的表示范围CF=1OF=1第3章Pentium的指 这样两两个个有有/无无符符号号数数进行行加加减减运运算算时,如如果果运运算算结果超出可表示的数果超出可表示的数值范范围,会,会发生出生出错,产生生溢出溢出现象。象。溢溢出出只只能能出出现在在两两个个同同号号数数相相加加和和两两个个异异号号数数相相减减的的情况下。情况下。通常判通常判别溢出的方法用溢出的方法用双高位法双高位法:所所谓双高位判双高位判别,即,即规定符号位定符号位(用(用CS表示)表示)有有进位位时,CS=1,否,否则 CS=0。数。数值部分最高位部分最高位(CP表示)表示)有有进位位时CP=1,否,否则 CS=0。若。若CSCP=1(异或异或运算),运算),则有溢出有溢出产生。生。D7 D6 D5 D4 D3D2 D1 D0CSCPCS CP=1溢出溢出第第3章章Pentium的指令系统的指令系统如何判别溢出如何判别溢出2024/6/1765这样两个有/无符号数进行加减运算时,如果运算结果超出可1.加法类指令加法类指令(Addition)ADDdest,src;(dest)(dest)+(src)立即数,寄存器,存储器立即数,寄存器,存储器立即数,寄存器,存储器立即数,寄存器,存储器寄存器,存储器寄存器,存储器寄存器,存储器寄存器,存储器1)不带进位位的加法指令不带进位位的加法指令ADDADDCX,1000HADDDI,SIADDBX+DI,AXADDEAX,BX+2000H第第3章章Pentium的指令系统的指令系统2024/6/17661.加法类指令(Addition)ADDdestMOVAL,7EH;(AL)=7EHMOVBL,5BH;(BL)=5BHADDAL,BL;(AL)=7EH+5BH=D9H影响影响标志位的情况志位的情况:SF=1,结果最高位果最高位1ZF=0,结果不等于果不等于0AF=1,D3位向位向D4有有进位位PF=0,”1”的个数的个数为奇数奇数CF=0,无,无进位位OF=1,和超,和超过127(两个正数相加,(两个正数相加,(两个正数相加,(两个正数相加,结结果果果果为负为负;反之亦是);反之亦是);反之亦是);反之亦是)第第3章章Pentium的指令系统的指令系统例:例:2024/6/1767MOVAL,7EH;ADCAX,SI ADCDX,SIADCBX,3000H2)带进位位的加法指令带进位位的加法指令ADCADCdest,src;(dest)(dest)+(src)+CFCFCF:CF:进位标志进位标志CF的现行值的现行值(上条指令上条指令上条指令上条指令CFCF值值值值)用途:用途:主要用于多字节运算中。主要用于多字节运算中。第第3章章Pentium的指令系统的指令系统2024/6/1768ADC AX,SI2)带进位位的加法指令ADCA计算两个多字节数相加计算两个多字节数相加3B74AC60F8H+20D59E36C1H=?流程图流程图多字节数内存存放多字节数内存存放两个多字节数存放在:两个多字节数存放在:DATA1,DATA2的开始单元。的开始单元。举例:举例:第第3章章Pentium的指令系统的指令系统2024/6/1769计算两个多字节数相加3B74AC60F8H+20D59E36程序:程序:MOVCX,5MOVSI,0;清清SICLC;清;清CFLOOPER:MOVAL,DATA2SIADCDATA1SI,ALINCSI;(SI)+1(SI)DECCX;(CX)-1(CX)JNZLOOPER;(CX)0转转HLT;停机;停机第第3章章Pentium的指令系统的指令系统2024/6/1770程序:第3章Pentium的指令系统2023/8/973)字交换加法指令字交换加法指令XADDXADDdest,src;(dest)(src),(dest)+(src)(dest)例:已知例:已知EAX=20000002H,1000H开始的内存单元中为开始的内存单元中为30000003H执行指令执行指令XADD1000H,EAXEAX=30000003H,1000H开始的内存单元中为开始的内存单元中为50000005H 源操作数必须是寄存器。源操作数必须是寄存器。目的操作数可以是存储器和寄存器方式。目的操作数可以是存储器和寄存器方式。第第3章章Pentium的指令系统的指令系统2024/6/17713)字交换加法指令XADDXADDdest,src4)增量指令增量指令INCINC dest;(dest)(dest)+1寄存器、存储器。不能是段寄存器寄存器、存储器。不能是段寄存器寄存器、存储器。不能是段寄存器寄存器、存储器。不能是段寄存器(Incrementby1)功能:功能:对指定的目标操作数对指定的目标操作数+1操作数单元。操作数单元。用途:用途:用于在循环程序中修改地址指针和循环次数。用于在循环程序中修改地址指针和循环次数。标志位影响情况:标志位影响情况:影响影响SF,ZF,AF,PF,OF。不影响不影响不影响不影响CFCF。INCDL;8位寄存器位寄存器1INCSI;16位寄存器位寄存器1INCBYTEPTRBXSI;存存储器器+1(字字节操作操作)INCWORDPTRDI;存;存储器器1(字操作)(字操作)INCDS;第第3章章Pentium的指令系统的指令系统2024/6/17724)增量指令INCINCdest;(dest)2.减法类指令减法类指令(Subtraction)1)不考虑借位的减法指令不考虑借位的减法指令SUBSUBdest,src;(dest)(dest)-(src)立即数,寄存器,存储器立即数,寄存器,存储器立即数,寄存器,存储器立即数,寄存器,存储器寄存器,存储器寄存器,存储器寄存器,存储器寄存器,存储器SUBEBX,ECXSUBBP+2,CLSUBSI,5010HSUBWORDPTRDI,1000H第第3章章Pentium的指令系统的指令系统2024/6/17732.减法类指令(Subtraction)1)不考虑借2)考虑借位的减法指令)考虑借位的减法指令SBB(Subtractionwithborrow)SBBAX,2530HSBBWORDPTREDI+2,1000HSBBdest,src;(dest)(dest)-(src)-CF用途:用途:用于多字节数相减用于多字节数相减3)减量指令)减量指令DEC(Decrementby1)DECdest;(dest)(dest)-1寄存器、存储器。不能是段寄存器寄存器、存储器。不能是段寄存器寄存器、存储器。不能是段寄存器寄存器、存储器。不能是段寄存器第第3章章Pentium的指令系统的指令系统2024/6/17742)考虑借位的减法指令SBB(SubtractionDEC用途用途举例:例:MOVAX,0FFFFHCYC:DECAXJNZCYCHLT用于延用于延时时间。第第3章章Pentium的指令系统的指令系统2024/6/1775DEC用途举例:第3章Pentium的指令系统20234)求补指令求补指令NEG(Negate)NEGdest;(dest)0-(dest)寄存器、存寄存器、存储器器操作操作:把操作数按位求反后末位把操作数按位求反后末位+1。(dest)0FFFFH-(dest)+11。操作数的原。操作数的原值为正数,求正数,求补后后变为其其负数的数的补码。2。操作数的原。操作数的原值为负数数(以以补码形式表示形式表示),求,求补后后变为其其对应的正数。的正数。3。影响各。影响各标志位。志位。4。操作数不能。操作数不能为段寄存器。段寄存器。NEGEAXNEGECX第第3章章Pentium的指令系统的指令系统2024/6/17764)求补指令NEG(Negate)NEG求绝对值求绝对值在内存中,在内存中,从从AREA1开始存放开始存放100个带符号数。个带符号数。求各数的绝对值将其存求各数的绝对值将其存于于AREA2的开始单元。的开始单元。流程图流程图第第3章章Pentium的指令系统的指令系统应用举例应用举例2024/6/1777求绝对值流程图第3章Pentium的指令系统应用举例202程序:程序:LEASI,AREA1LEADI,AREA2MOVCX,100CHECK:MOVAL,SIORAL,AL;(AL)内容不变,置标志内容不变,置标志JNSNEXT;SF=0转转NEXTNEGAL;负数求补负数求补NEXT:MOVDI,AL;送目标;送目标INCSIINCDIDECCXJNZCHECKHLT2024/6/1778程序:2023/8/9785)比较指令比较指令CMP(Compare)CMPdest,src;(destdest)-(srcsrc)立即数,寄存器,存储器立即数,寄存器,存储器寄存器,存储器寄存器,存储器影响标志:影响标志:A、C、O、P、S、Z。只置标志位只置标志位CMP AX,2000HCMP EAX,EBX+EDI+100CMPEDX,EDI第第3章章Pentium的指令系统的指令系统2024/6/17795)比较指令CMP(Compare)CMPd用途:用途:用比较指令来比较两个数之间的关系:用比较指令来比较两个数之间的关系:两者是否相等,两个数中哪个大。两者是否相等,两个数中哪个大。(1)根据)根据Z标志,判断两者是否相等;标志,判断两者是否相等;(2)根据根据CF标志,判断两个无符号数的大小;标志,判断两个无符号数的大小;(3)用用SF、OF标志,判断二个带符号数的大小。标志,判断二个带符号数的大小。CMPAX,BXZF=1,(AX)=(BX),两者相等两者相等ZF=0,(AX)=(BX),两者不相等两者不相等比比较AX,BX寄存器寄存器,将大数将大数(AX)CMPAX,BXJNCNEXT;CF=0转NEXTXCHGAX,BXNEXT:结论:CF=0,(AX)(BX);CF=1,(AX)0,B0A0,B0SF=0SF=0,OF=0 OF=0 则:则:ABAB5 57 7情情况况A0,B0A0,B0SF=1SF=1,OF=0 OF=0 则:则:ABAB5 52 25 57 72 2-5-5-7-71 1-7-7-5-5-5-5-(-7)-(-7)+2+2A0,B0A0,B0SF=1SF=1,OF=0 OF=0 则:则:ABABA0,B0A0,BBAB-7-7-(-5)-(-5)-2-2 3+127+127-63-63A0,B0,BBAB+127+127-(-63)-(-63)+190+190 4-63-63+127+127A0A0SF=0SF=0,OF=1 OF=1 则:则:ABA9+110第第3章章Pentium的指令系统的指令系统2024/6/1792BCD数的运算结果19组合BCD:00011 1)加减法的加减法的加减法的加减法的组组合合合合BCDBCD调调整指令:整指令:整指令:整指令:;AL将将AL中和中和调整整为组合合BCD码差差DAA和和DAS指令的指令的调整方法:整方法:AF1或或(AL)03AF,则(AL)(AL)06H,AF1CF1或或(AL)47AF,则(AL)(AL)60H,CF1(DAA做做+,DAS做做-)注意注意:*隐含的操作寄存器含的操作寄存器为AL*紧接在加减指令之后使用接在加减指令之后使用*影响影响条件条件标志位志位(对OF无定无定义)第第3章章Pentium的指令系统的指令系统(ADD/ADCAL,i8/r8/m8)DAA(SUB/SBBAL,i8/r8/m8)DAS2024/6/17931)加减法的组合BCD调整指令:;AL将AL中和调整为组2 2)加减法的分离加减法的分离加减法的分离加减法的分离B
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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