汇编语言程序设计-.pptx
《汇编语言程序设计-.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序设计-.pptx(89页珍藏版)》请在咨信网上搜索。
1、汇编语言程序设计汇编语言程序设计 吴吴 向向 军军中山大学计算机科学系中山大学计算机科学系第第5章章 微机微机CPU的指令系统的指令系统5.1 汇编语言指令格式汇编语言指令格式5.1.1 指令格式指令格式 汇编语言的指令格式如下:指令助忆符 操作数1,操作数2,操作数3(*);注释 指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令。一条指令可以没有操作数,也可以有一个、二个或三个操作数。绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的。当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守:指令助忆符和操作数之间要有分隔符,分隔符可以是若干个空格或TAB键;
2、如果指令含有多个操作数,那么,操作数之间要用逗号“,”分开。指令后面还可以书写注释内容,不过,要在注释之前书写分号“;”。(*)操作数1为第一操作数,操作数2(如有的话)为第二操作数,其后以此类推。第第5章章 微机微机CPU的指令系统的指令系统5.1.2 了解指令的几个方面了解指令的几个方面 在学习汇编指令时,指令的功能无疑是我们学习和掌握的重点,但要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一些规定或约束。归纳起来,对指令还要掌握以下几个方面内容:要求指令操作数的寻址方式指令对标志位的影响、标志位对指令的影响指令的执行时间,对可完成相同功能的指令要选用执行时间短的指令第第5章章
3、微机微机CPU的指令系统的指令系统5.2 指令系统指令系统5.2.1 数据传送指令数据传送指令 指令系统是CPU指令的集合,CPU除了具有计算功能的指令外,还有一些实现其它功能的指令,也有为某种特殊的应用而增设的指令。指令按其功能分成以下几大类:数据传送指令、标志位操作指令、算术运算指令、逻辑运算指令、移位操作指令、位操作指令、比较运算指令、循环指令、转移指令、条件设置字节指令、字符串操作指令、ASCII-BCD码运算调整指令和处理器指令等。数据传送指令分:传送指令、交换指令、地址传送指令、堆栈操作指令、查表指令和I/O指令等。除指令SAHF和POPF指令外,本类的其它指令都不影响标志位。第第
4、5章章 微机微机CPU的指令系统的指令系统1.传送指令MOV(Move Instruction)传送指令是使用最频繁的指令,它相当于高级语言中的赋值语句。格式如下:MOV Reg/Mem,Reg/Mem/Imm(*)指令的功能是把源操作数(第二操作数)的值传给目的操作数(第一操作数)。指令执行后,目的操作数的值被改变,而源操作数的值不变。当存储单元是该指令的一个操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。下面列举几组正确的指令例子:源操作数是寄存器源操作数是存储单元源操作数是立即数(*)RegRegister(寄存器),MemMemory(存储器),ImmImmediate(立
5、即数),它们可以是8位、16位或32位(特别指出其位数的除外)。第第5章章 微机微机CPU的指令系统的指令系统对MOV指令有以下几条具体规定,其中有些规定对其它指令也同样有效。两个操作数的数据类型要相同,要同为8位、16位或32位;如:MOV BL,AX等是不正确的;两个操作数不能同时为段寄存器,如:MOV ES,DS等;代码段寄存器CS不能为目的操作数,但可作为源操作数,如:指令MOV CS,AX等不正确,但指令MOV AX,CS等是正确的;立即数不能直接传给段寄存器,如:MOV DS,100H等;立即数不能作为目的操作数,如:MOV 100H,AX等;指令指针IP,不能作为MOV指令的操作
6、数;两个操作数不能同时为存储单元,如:MOV VARA,VARB等,其中VARA和VARB是同数据类型的内存变量。第第5章章 微机微机CPU的指令系统的指令系统 对于规定2、4和7,我们可以用通用寄存器作为中转来达到最终目的。功能描述不正确的指令可选的解决方法把DS的值传送给ESMOV ES,DSMOV AX,DSMOV ES,AX把100H传给DSMOV DS,100HMOV AX,100HMOV DS,AX把字变量VARB的值传送给字变量VARAMOV VARA,VARBMOV AX,VARBMOV VARA,AX第第5章章 微机微机CPU的指令系统的指令系统2.传送填充指令(Move-a
7、nd-Fill Instruction)传送填充指令是把位数短的数据传送给位数长的目的操作数。MOVSX/MOVZX Reg/Mem,Reg/Mem/Imm;80386+指令的主要功能和限制与MOV指令类似,不同之处是:在传送时,对目的操作数的高位进行填充。根据其填充方式,又分为:符号填充和零填充。例5.1 已知:AL=87H,指令MOVSX CX,AL,MOVZX DX,AL执行后,问CX和DX的值是什么?第第5章章 微机微机CPU的指令系统的指令系统3.交换指令XCHG(Exchange Instruction)交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的
8、数据类型要相同。XCHG Reg/Mem,Reg/Mem 该指令的功能和MOV指令不同,后者是一个操作数的内容被修改,而前者是两个操作数都会发生改变。寄存器不能是段寄存器,两个操作数也不能同时为内存变量。例5.2 已知:AX=5678H,BX=1234H,指令XCHG AX,BX执行后,求各寄存器的值。第第5章章 微机微机CPU的指令系统的指令系统4.取有效地址指令LEA(Load Effective Address)指令LEA是把一个内存变量的有效地址送给指定的寄存器。其指令格式如下:LEA Reg,Mem 该指令通常用来对指针或变址寄存器BX、DI或SI等置初值之用。BUFFER DB 1
9、00 DUP(?)LEASI,BUFFER;把字节变量BUFFER在数据段内的偏移量送给SILEABX,BX+DI+200;把有效地址BX+DI+200送给BX问题:指令“LEA BX,BUFFER”和“MOV BX,OFFSET BUFFER”的执行效果是一样的吗?指令“LEA BX,BX+200”和“MOV BX,OFFSET BX+200”二者都正确吗?第第5章章 微机微机CPU的指令系统的指令系统4.取段寄存器指令(Load Segment Instruction)该组指令的功能是把内存单元的一个“低字”传送给指令中指定的16位寄存器,把随后的一个“高字”传给相应的段寄存器(DS、ES
10、、FS、GS和SS)。LDS/LES/LFS/LGS/LSS Reg,Mem 指令LDS(Load Data Segment Register)和LES(Load Extra Segment Register)在8086CPU中就存在,而LFS和LGS(Load Extra Segment Register)、LSS(Load Stack Segment Register)是80386及其以后CPU中才有的指令。若Reg是16位寄存器,那么,Mem必须是32位指针;若Reg是32位寄存器,那么,Mem必须是48位指针,其低32位给指令中指定的寄存器,高16位给指令符中的段寄存器。第第5章章 微
11、机微机CPU的指令系统的指令系统例如:PT1 DD 12345678HPT2 DF 43219012ABCDHLES BX,PT1LDS ESI,PT2 执行上述二条指令后,各寄存器的内容分别为:(BX)=5678H,(ES)=1234H,(ESI)=9012ABCDH,(DS)=4321H。第第5章章 微机微机CPU的指令系统的指令系统5、进栈操作1).PUSH(Push Word or Doubleword onto Stack)指令格式:PUSH Reg/Mem PUSH Imm;80286+一个字进栈,系统自动完成两步操作:SPSP-2,(SP)操作数;一个双字进栈,系统自动完成两步操
12、作:ESPESP-4,(ESP)操作数。2).PUSHA(Push All General Registers)指令格式:PUSHA;80286+其功能是依次把寄存器AX、CX、DX、BX、SP、BP、SI和DI等压栈。3).PUSHAD(Push All 32-bit General Registers)指令格式:PUSHAD;80386+其功能是把寄存器EAX、ECX、EDX、EBX、ESP、EBP、ESI和EDI等压栈。第第5章章 微机微机CPU的指令系统的指令系统6、出栈操作1).POP(Pop Word or Doubleword off Stack)指令格式:POP Reg/Mem
13、 弹出一个字,系统自动完成两步操作:操作数(SP),SPSP+2;弹出一个双字,系统自动完成两步操作:操作数(ESP),ESPESP+4。2).POPA(Pop All General Registers)指令格式:POPA;80286+其功能是依次把寄存器DI、SI、BP、SP、BX、DX、CX和AX等弹出栈。其实,程序员不用记住它们的具体顺序,只要与指令PUSHA对称使用就可以了。3).POPAD(Pop All 32-bit General Registers)指令格式:POPAD;80386+其功能是依次把寄存器EDI、ESI、EBP、ESP、EBX、EDX、ECX和EAX等弹出栈,它
14、与PUSHAD对称使用即可。第第5章章 微机微机CPU的指令系统的指令系统7、转换指令XLAT(Translate Instruction)转换指令有两个隐含操作数BX和AL。指令格式如下:XLAT/XLATB 其功能是把BX的值作为内存字节数组首地址、下标为AL的数组元素的值传送给AL。其功能描述的表达式是:ALBXAL。第第5章章 微机微机CPU的指令系统的指令系统5.2.2 标志位操作指令标志位操作指令1、进位CF操作指令l清进位指令CLC(Clear Carry Flag):CF0l置进位指令STC(Set Carry Flag):CF1l进位取反指令CMC(Complement Ca
15、rry Flag):CFnot CF2、方向位DF操作指令n清方向位指令CLD(Clear Direction Flag):DF0n置方向位指令STD(Set Direction Flag):DF13、中断允许位IF操作指令清中断允许位指令CLI(Clear Interrupt Flag):IF0 其功能是不允许可屏蔽的外部中断来中断其后程序段的执行。置中断允许位指令STI(Set Interrupt Flag):IF1 其功能是恢复可屏蔽的外部中断的中断响应功能,通常是与CLI成对使用的。第第5章章 微机微机CPU的指令系统的指令系统4、取标志位操作指令LAHF(Load AH from F
16、lags):AHFlags的低8位SAHF(Store AH in Flags):Flags的低8位AH5、标志位堆栈操作指令PUSHF/PUSHFD(Push Flags onto Stack):把16位/32位标志寄存器进栈;POPF/POPFD(Pop Flags off Stack):把16位/32位标志寄存器出栈;第第5章章 微机微机CPU的指令系统的指令系统1.加法指令加法指令ADD(ADD Binary Numbers Instruction)指令格式:ADD Reg/Mem,Reg/Mem/Imm 指令的功能是把源操作数的值加到目的操作数中。带进位加指令ADC(ADD With
17、 Carry Instruction)指令格式:ADC Reg/Mem,Reg/Mem/Imm 指令的功能是把源操作数和进位标志位CF的值(0/1)一起加到目的操作数中。加1指令INC(Increment by 1 Instruction)指令格式:INC Reg/Mem 指令的功能是把操作数的值加1(不影响CF)。交换加指令XADD(Exchange and Add)指令格式:XADD Reg/Mem,Reg;80486+指令的功能是先交换两个操作数的值,再进行算术“加”法操作。5.2.3 算术运算指令算术运算指令第第5章章 微机微机CPU的指令系统的指令系统例5.3 已知有二个32位数d1
18、和d2(用类型DD说明),编写程序片段把d2的值加到d1中。解:32位数d1和d2在内存中如下所示。方法1:用16位寄存器编写程序MOV AX,word ptr d1;由于d1是双字类型,必须使用强制类型说明符。MOV DX,word ptr d1+2;(DX,AX)构成一个32位数据ADD AX,word ptr d2;低字相加ADC DX,word ptr d2+2;高字相加。在低字相加时,有可能会产生“进位”MOV word ptr d1,AX;低字送给d1的低字MOV word ptr d1+2,DX;高字送给d1的高字d1 低字高字 d2第第5章章 微机微机CPU的指令系统的指令系统
19、方法2:用32位寄存器编写程序MOV EAX,d1ADD EAX,d2MOV d1,EAX 从上面两段程序不难看出:用32位寄存器来处理32位数据显得简单、明了,而16位微机虽然也能处理32位数据,但做起来就要复杂一些。d1 低字高字 d2第第5章章 微机微机CPU的指令系统的指令系统2.减法指令减法指令SUB(Subtract Binary Values Instruction)指令格式:SUB Reg/Mem,Reg/Mem/Imm 指令的功能是从目的操作数中减去源操作数。带借位减SBB(Subtract with Borrow Instruction)指令格式:SBB Reg/Mem,R
20、eg/Mem/Imm 指令的功能是把源操作数和标志位CF的值从目的操作数中一起减去。减1指令DEC(Decrement by 1 Instruction)指令格式:DEC Reg/Mem 指令的功能是把操作数的值减去1(不影响CF)。求补指令NEG(Negate Instruction)指令格式:NEG Reg/Mem 指令的功能:操作数0操作数,即改变操作数的正负号。第第5章章 微机微机CPU的指令系统的指令系统例5.4 已知有二个32位数d1和d2,编写程序片段从d1中减去d2的值。解:方法1:用16位寄存器编写程序MOV AX,word ptr d1;取低字MOV DX,word ptr
21、 d1+2;取高字,(DX,AX)构成一个32位数据SUB AX,word ptr d2;低字相减SBB DX,word ptr d2+2;高字相减。在低字相减时,有可能会产生“借位”MOV word ptr d1,AX;低字送给d1的低字MOV word ptr d1+2,DX;高字送给d1的高字d1 低字高字 d2第第5章章 微机微机CPU的指令系统的指令系统方法2:用32位寄存器编写程序MOV EAX,d1SUB EAX,d2MOV d1,EAXd1 低字高字 d2第第5章章 微机微机CPU的指令系统的指令系统3.乘法指令 乘法指令分为无符号乘法和有符号乘法指令,它们的唯一区别就在于:数
22、据的最高位是作为“数值”参与运算,还是作为“符号位”参与运算。乘法指令的被乘数大多数是隐含的,乘数在指令中显式地写出来。CPU会根据乘数是8位、16位,还是32位操作数,来自动选用被乘数:AL、AX或EAX。无符号数乘法指令MUL(Unsigned Multiply Instruction)指令格式:MUL Reg/Mem 受影响的标志位:CF和OF(AF、PF、SF和ZF无定义)指令的功能是把显式操作数和隐含操作数(都作为无符号数)相乘,所得的乘积按下表的对应关系存放。乘数位数隐含的被乘数乘积的存放位置举例8位ALAXMUL BL16位AXDX-AXMUL BX32位EAXEDX-EAXMU
23、L ECX第第5章章 微机微机CPU的指令系统的指令系统有符号数乘法指令IMUL(Signed Integer Multiply Instruction)指令格式:1)、IMUL Reg/Mem 2)、IMUL Reg,Imm;80286+3)、IMUL Reg1,Reg2/Mem,Imm;80286+4)、IMUL Reg1,Reg2/Mem;80386+1)、指令格式1该指令的功能是把显式操作数和隐含操作数(都作为有符号数)相乘,所得的乘积按表5.2的对应关系存放。2)、指令格式2其寄存器必须是16位/32位通用寄存器,其计算方式为:Reg Reg Imm4)、指令格式4其寄存器必须是16
24、位/32位通用寄存器,其计算方式为:Reg1 Reg1Reg2 或 Reg1 Reg1Mem3)、指令格式3其寄存器只能是16位通用寄存器,其计算方式为:Reg1 Reg2Imm 或 Reg1 MemImm 在指令格式24中,各操作数的位数要一致。如果乘积超过目标寄存器所能存储的范围,则系统将置溢出标志OF为1。第第5章章 微机微机CPU的指令系统的指令系统4.除法指令 除法指令的被除数是隐含操作数,除数在指令中显式地写出来。CPU会根据除数是8位、16位,还是32位,来自动选用被除数AX、DX-AX,还是EDX-EAX。除法指令功能是用显式操作数去除隐含操作数,可得到商和余数。当除数为0,或
25、商超出数据类型所能表示的范围时,系统会自动产生0号中断。无符号数除法指令DIV(Unsigned Divide Instruction)指令格式:DIV Reg/Mem 指令的功能是用显式操作数去除隐含操作数(都作为无符号数),所得商和余数按表5.3的对应关系存放。指令对标志位的影响无定义。除数位数隐含的被除数商余 数举 例8位AXALAHDIV BH16位DX-AXAXDXDIV BX32位EDX-EAXEAXEDXDIV ECX第第5章章 微机微机CPU的指令系统的指令系统5.有符号数除法指令IDIV(Signed Integer Divide Instruction)指令格式:IDIV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。