欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    (精品)汇编语言顺序结构程序.ppt

    • 资源ID:69843338       资源大小:1.61MB        全文页数:147页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    (精品)汇编语言顺序结构程序.ppt

    第五章顺序结构程序顺序结构程序教学重点 从从本本章章开开始始,从从程程序序结结构构角角度度展展开开学学习习8086常常用用指指令令的的功功能能及及应应用用。本本章章重重点点掌掌握:握:80 x86 传传送送、算算术术运运算算、逻逻辑辑操操作作、移移位操作位操作等指令等指令程序设计的步骤程序设计的步骤程序的基本控制结构程序的基本控制结构主要内容5.1 5.1 程序设计的步骤程序设计的步骤5.2 5.2 流程图的应用流程图的应用5.3 5.3 程序的基本控制结构程序的基本控制结构5.4 5.4 数据传送指令数据传送指令5.5 5.5 算术运算指令算术运算指令5.6 5.6 逻辑操作指令逻辑操作指令5.7 5.7 移位操作指令移位操作指令5.8 5.8 状态标志位操作指令状态标志位操作指令5.9 5.9 简单的简单的I/OI/O功能调用功能调用5.10 5.10 顺序结构程序举例顺序结构程序举例第5章5.1 程序设计的步骤 1.1.分析问题分析问题2.2.建立数学模型建立数学模型3.3.设计算法设计算法4.4.编制程序编制程序5.5.上机调试上机调试第5章5.2 流程图的应用(1)(1)流程线流程线(2)(2)端点框端点框 (3)(3)判断框判断框(4)(4)处理框处理框(5)(5)连接框连接框条件条件YN开始开始结束结束要描述的内容要描述的内容第5章顺序结构初始化部分初始化部分工作部分工作部分修改部分修改部分开始开始结束结束第5章分支与循环结构结束结束设置数据段地址设置数据段地址设置数据指针设置数据指针AL 第一个数据第一个数据(指针指针)=0FFH?保存结果保存结果YN11AL(指针)?(指针)?AL (指针)(指针)指针增量指针增量NY开始开始第5章5.3 程序的基本控制结构S1S2S3S2S1YN条件=真S1条件=真NY条件=真S1S2YN(1)顺序结构(2)分支(选择)结构(3)循环(迭代)结构第5章5.3.1 顺序程序设计顺顺序序程程序序完完全全按按指指令令书书写写的的前前后后顺顺序序执执行行每每一一条条指指令令,是是最最基基本本、最最常常见见的的程程序序结结构。构。ssegsegment stack;定义堆栈段定义堆栈段dw 512 dup(?);堆栈段有堆栈段有512字(字(1024字节)空间字节)空间ssegends;堆栈段结束堆栈段结束dsegsegment;定义数据段定义数据段string db Hello,Everybody!,0dh,0ah,$dsegendscodesegment;code;定义代码段定义代码段assume cs:code,ds:dseg,ss:ssegstart:mov ax,dseg;建立建立DS段地址段地址mov ds,axmov dx,offset stringmov ah,9int 21hmov ax,4c00hint 21h;利用功能调用返回利用功能调用返回DOScodeends;代码段结束代码段结束end start;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点第5章汇编语言指令格式(复习)由由4 4部分组成:部分组成:标号标号:指令助记符指令助记符 目的操作数目的操作数,源操作数源操作数;注释注释 标号表示该指令在主存中的逻辑地址标号表示该指令在主存中的逻辑地址 每个指令助记符就代表一种指令每个指令助记符就代表一种指令 目的和源操作数表示参与操作的对象目的和源操作数表示参与操作的对象 注释是对该指令或程序段功能的说明注释是对该指令或程序段功能的说明第5章指令操作数的表达(补充)r8任意一个任意一个8位通用寄存器。位通用寄存器。AH AL BH BL CH CL DH DLr16任意一个任意一个16位通用寄存器。位通用寄存器。AX BX CX DX SI DI BP SPreg代表代表r8或或r16。seg段寄存器。段寄存器。CS DS ES SS第5章指令操作数的表达(补充)m8一一个个8位位存存储储器器操操作作数数单单元(所有主存寻址方式)。元(所有主存寻址方式)。m16一一个个16位位存存储储器器操操作作数数单元(所有主存寻址方式)。单元(所有主存寻址方式)。mem代表代表m8或或m16。第5章指令操作数的表达(补充)i8一个一个8位立即数位立即数i16一个一个16位立即数位立即数imm代表代表i8或或i16dest目的操作数目的操作数src源操作数源操作数第5章数据传送是计算机中最基本、最重要的一种操作数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均除标志寄存器传送指令外,均不影响标志不影响标志位位数据传送指令共有数据传送指令共有1212条:条:重点掌握重点掌握MOV XCHG XLAT PUSH POP LEA5.4 数据传送指令MOV PUSHPOP XCHGXLAT LEALDS LESLAHF SAHFPUSHF POPF第5章MOV(move)传送指令汇编格式:MOV :MOV dest,srcdest,src 操作:将一个源操作数将一个源操作数(字节或字字节或字)传送到目传送到目标操作数中。标操作数中。dest(srcdest(src)受影响的状态标志位受影响的状态标志位:没有没有说明说明:指令中指令中destdest和和srcsrc不能同时为不能同时为存储器存储器操操作数作数;CSCS不能做为不能做为目标操作数目标操作数使用使用,段段寄存器寄存器之间之间不能互相传送不能互相传送,立即数立即数不能不能送入送入段寄存器段寄存器。第5章传送指令MOV(move)把把一一个个字字节节或或字字的的操操作作数数从从源源地地址址传传送至目的地址送至目的地址MOV MOV reg/mem,immreg/mem,imm;立即数送寄存器或主存;立即数送寄存器或主存MOVMOV例题例题5.1MOV MOV reg/mem/seg,regreg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存例题例题5.2MOV MOV reg/seg,memreg/seg,mem;主存送(段)寄存器;主存送(段)寄存器例题例题5.3MOV MOV reg/mem,segreg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存例题例题5.5第5章MOV指令传送功能限制MOV也并非任意传送也并非任意传送立即数立即数段寄存器段寄存器CSCS DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器第5章非法传送种种两个操作数的类型不一致两个操作数的类型不一致n例例如如源源操操作作数数是是字字节节,而而目目的的操操作作数是字;或相反数是字;或相反两个操作数不能都是存储器两个操作数不能都是存储器n传传送送指指令令很很灵灵活活,但但主主存存之之间间的的直直接传送却不允许接传送却不允许段寄存器的操作有一些限制段寄存器的操作有一些限制n段段寄寄存存器器属属专专用用寄寄存存器器,对对他他们们的的操作能力有限操作能力有限示例示例示例示例示例示例示例示例示例示例示例示例 MOV(move)传送指令(思考)判断下列各条语句的对错:判断下列各条语句的对错:DATA DB 10H MOV SI,DATAMOV AX,CS MOV DS,1000HMOV BX,BXMOV AX,DLMOV DS,CSMOV SI,10H立即数立即数段寄存器段寄存器CSCS DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器第5章堆栈操作指令堆堆栈栈是是一一个个“后后进进先先出出FILOFILO”(或或说说“先先进进后后出出FILO”FILO”)的的主主存存区区域域,位位于于堆堆栈栈段段中中;SSSS段段寄寄存器存器记录其段地址记录其段地址堆堆栈栈只只有有一一个个出出口口,即即当当前前栈栈顶顶;用用堆堆栈栈指指针针寄存器寄存器SPSP指定指定栈栈顶顶是是地地址址较较小小的的一一端端(低端),栈底不变(低端),栈底不变第5章堆栈的操作堆堆栈栈只只有有两两种种基基本本操操作作:进进栈栈和和出出栈,对应两条指令栈,对应两条指令PUSH和和POPPUSHPUSH;进栈指令先使;进栈指令先使堆栈指针堆栈指针SPSP减减2 2,然后把一个字操然后把一个字操作数存入堆栈顶作数存入堆栈顶部部POPPOP;出栈指令把栈顶;出栈指令把栈顶的一个字传送至指的一个字传送至指定的目的操作数,定的目的操作数,然后堆栈指针然后堆栈指针SPSP加加2 2说明说明:SS内容为段基址内容为段基址,偏移量由堆栈指针偏移量由堆栈指针SP指出。指出。PUSH指令的目标地址一定在当前堆栈中,操作数一定是指令的目标地址一定在当前堆栈中,操作数一定是16位的寄存器或存储器操作数。位的寄存器或存储器操作数。POP指令目标操作数也指令目标操作数也只能是只能是16位的存储器或寄存器操作数位的存储器或寄存器操作数(CS除外除外)。第5章进栈指令PUSHpush axpush axpush 2000hpush 2000hPUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/segPUSHPUSH第5章PUSH 指令(举例)假定假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是:则执行下列指令后堆栈的状态是:PUSH AXPUSH BX第5章PUSH AXPUSH BX假定AX=1234H,BX=5678H,SS=2000H,SP=0100H,则执行下列指令后堆栈的状态是PUSH 指令(举例)第5章出栈指令POPpop axpop axpop 2000hpop 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2POPPOP第5章POP 指令(举例)思考:假定在执行指令:POP CX POP DX之前,堆栈的状态如图所示。指令执行后CX,DX的内容及堆栈的状态?CX=5678HDX=1234H第5章POP 指令(举例)思考:假定SI=1234H,DI=5678H,则右侧指令执行后,DS,ES的内容是?PUSHSIPUSHDIPOP DSPOP ESDS=5678HES=1234第5章堆栈的特点堆栈操作的单位是堆栈操作的单位是字字,进栈和出栈只对,进栈和出栈只对字量字量字字量量数数据据从从栈栈顶顶压压入入和和弹弹出出时时,都都是是低低地地址址字节送字节送低字节低字节,高地址高地址字节送字节送高字节高字节堆堆栈栈操操作作遵遵循循先先进进后后出出原原则则,但但可可用用存存储储器器寻址方式随机存取堆栈中的数据寻址方式随机存取堆栈中的数据堆栈常用来堆栈常用来n临时存放数据临时存放数据n传递参数传递参数n保存和恢复寄存器保存和恢复寄存器n实现段更换实现段更换保存和恢复寄存器保存和恢复寄存器实现段更换实现段更换第5章交换指令XCHG(eXCHanGe)指令汇编格式:XCHG XCHG dest,srcdest,src 操作:destdest的内容与的内容与srcsrc的内容互换。的内容互换。(dest)(srcdest)(src)受影响的状态标志位受影响的状态标志位:没有没有说明:destdest和和srcsrc不能同时为存储器操作数。不能同时为存储器操作数。段寄存器、立即数不能作为操作数。段寄存器、立即数不能作为操作数。第5章交换指令XCHG(exchange)把两个地方的数据进行互换把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与寄存器之间对换数据寄存器与存储器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHGXCHGXCHG XCHG reg,reg/memreg,reg/mem;regreg reg/memreg/mem例题例题5.7例题例题5.6XCHG指令(举例与思考)XCHG AL,BLXCHG AL,10XCHG CL,BXXCHG BL,BX+SI+10XCHG AL,SIXCHG SI,BX+10XCHG AX,AXXCHG DX,DS判断下列各条语句的对错:判断下列各条语句的对错:第5章换码指令XLAT(translate)指令汇编格式:XLAT:XLAT操作:BX:BX和和ALAL内容之和指出的内存字节单元内容之和指出的内存字节单元的内容送到的内容送到ALAL中。中。AL(BX+AL)AL(BX+AL)受影响的状态标志位:没有没有说明:XLAT:XLAT指令用于查表。表的开始地址即指令用于查表。表的开始地址即表头地址由表头地址由BXBX寄存器给出。寄存器给出。ALAL中的原中的原始值是要寻址的表中元素地址的位移始值是要寻址的表中元素地址的位移量量,规定表中第一个字节的位移量为规定表中第一个字节的位移量为0 0。这是一种特殊的基址变址寻址方式这是一种特殊的基址变址寻址方式,基基址寄存器为址寄存器为BX,BX,变址寄存器为变址寄存器为ALAL。第5章换码指令执行前:换码指令执行前:在主存建立一个在主存建立一个字节量表格字节量表格,内含要转换成的目的代码,内含要转换成的目的代码表格首地址表格首地址存放于存放于BXBX,ALAL存放相对表格首地址的存放相对表格首地址的位移量位移量换码指令执行后:换码指令执行后:将将ALAL寄存器的内容转换为寄存器的内容转换为目标代码目标代码换码指令XLAT(translate)将将BX指指定定的的缓缓冲冲区区中中、AL指指定定的的位位移移处的一个字节数据取出赋给处的一个字节数据取出赋给ALXLATXLATXLATXLAT;alds:bx+alalds:bx+al 例题例题5.8第5章思考题:如何用XLAT 实现加密 看如下的一种加密方式(替代加密):看如下的一种加密方式(替代加密):A B C D E F G H I J K L M N O P QY Z D M R N H X J L I O Q U W A CR S T U V W X Y ZB E G F K P T S V明文:明文:THIS IS A COMPUTER密文:密文:GXJE JE Y DWQAFGRB第5章XLAT 应用举例(实现加密)JMTAB DB YZDMRNHXJLIOQ DB UWACBEGFKPTSV MOV AX,SEG JMTAB MOV DS,AX MOV BX,OFFSET JMTAB MOV AL,T SUB AL,A MOV AH,0 ADD BX,AX MOV AL,BXXLATMOV AH,0ADD BX,AXMOV AL,BX第5章地址传送指令地地址址传传送送指指令令将将存存储储器器单单元元的的逻逻辑辑地址送至指定的寄存器地址送至指定的寄存器n有效地址传送指令有效地址传送指令 LEAn指针传送指令指针传送指令 LDS和和LES注意不是获取存储器单元的内容注意不是获取存储器单元的内容第5章取有效地址LEA(load EA)指令汇编格式:L:LEAEA dest,srcdest,src操作:将指令中给出的存储器操作数的有效地将指令中给出的存储器操作数的有效地址址(即地址的偏移量即地址的偏移量)送到指定的寄存器中。送到指定的寄存器中。destEAdestEA受影响的状态标志位:没有没有说明:LEA:LEA指令是将源操作数地址的偏移量指令是将源操作数地址的偏移量,即即有效地址传送到目标操作数中。源操作数必须有效地址传送到目标操作数中。源操作数必须是一个存储器操作数是一个存储器操作数,目标操作数可以是任一目标操作数可以是任一1616位通用寄存器、指针寄存器或变址寄存器位通用寄存器、指针寄存器或变址寄存器。LEALEA第5章有效地址传送指令LEA(load EA)将将存存储储器器操操作作数数的的有有效效地地址址传传送至指定的送至指定的16位寄存器中位寄存器中例题例题LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEALEALEA第5章LEA指令举例DATA1 DB 10H LEA BX,DATA1 MOV BX,OFFSET DATA1 MOV BX,1000H MOV DI,2000H LEA AX,BX+1243H LEA DX,BXDI+1234HAX=2243H,DX=4234H2243H41H42H30H.4234H30H第5章指针传送指令L LDSDS r16,mem r16,mem;r16memr16mem,;DSmem+2DSmem+2LDSLDS指指令令将将主主存存中中memmem指指定定的的字字送送至至r16r16,并并将将memmem的的下下一一字字送送DSDS寄存器寄存器L LESES r16,mem r16,mem;r16memr16mem,;ESmem+2ESmem+2LESLES指指令令将将主主存存中中memmem指指定定的的字字送送至至r16r16,并并将将memmem的的下下一一字字送送ESES寄存器寄存器例题例题加载数据段寄存器加载数据段寄存器说明说明:将将mem指出的指出的连续两个字连续两个字的内容的内容,即一个即一个32位的指位的指针变量传送到一对针变量传送到一对16位的目标寄存器中。高位字为段基地位的目标寄存器中。高位字为段基地址址,低位字为偏移量低位字为偏移量,传送到由传送到由r16指出的一个通用寄存器、指出的一个通用寄存器、指针寄存器或变址寄存器中指针寄存器或变址寄存器中,但不能是段寄存器。但不能是段寄存器。加载附加段寄存器加载附加段寄存器第5章00H01H00H10H0010H内存单元内容如右图,执行如下内存单元内容如右图,执行如下指令后,请说明指令后,请说明BX和和DS的值:的值:MOV SI,10HLDS BX,SIBX=?DS=?LDS应用思考BX=0100HDS=1000H第5章标志寄存器传送指令标标志志寄寄存存器器传传送送指指令令用用来来传传送送标标志志寄寄存存器器FLAGS的的内内容容,方方便便进进行行对各个标志位的直接操作对各个标志位的直接操作有有2对对4条指令条指令n低低8位传送:位传送:LAHF和和SAHFn16位传送:位传送:PUSHF和和POPF第5章标志低字节进出AH指令LAHF;AHFLAGSAHFLAGS的低字节的低字节LAHFLAHF指指令令将将标标志志寄寄存存器器的低字节送寄存器的低字节送寄存器AHAHSF/ZF/AF/PF/CFSF/ZF/AF/PF/CF状状态态标标志志位位分分别别送送入入AHAH的的第第7/6/4/2/07/6/4/2/0位位,而而 AHAH的的第第5/3/15/3/1位任意位任意SAHF;FLAGSFLAGS的低字节的低字节AHAHSAHFSAHF将将AHAH寄寄存存器器内内容容送送FLAGSFLAGS的低字节的低字节用用AHAH的的第第7/6/4/2/07/6/4/2/0位位相相 应应 设设 置置 SF/ZF/AF/SF/ZF/AF/PF/CFPF/CF标志标志AH SF:ZF:AF:PF:CF说明:此此2指令在指令在80 x86中几乎无用中几乎无用,主要是为了保证与主要是为了保证与8080/8085向下兼容向下兼容,才保留了该指令才保留了该指令.第5章标志寄存器进出堆栈指令PUSHF;SPSPSPSP2 2;SS:SPFLAGSSS:SPFLAGSPUSHFPUSHF指指令令将将标标志志寄寄存存器器的的内内容容压压入入堆堆栈栈,同时栈顶指针同时栈顶指针SPSP减减2 2POPF;FLAGSSS:SPFLAGSSS:SP;SPSPSPSP2 2POPFPOPF指指令令将将栈栈顶顶字字单单元元内内容容送送标标志志寄寄存存器器,同同时栈顶指针时栈顶指针SPSP加加2 2例题例题5.5 算术运算指令5.5.1 加法运算指令加法运算指令5.5.2 减法运算指令减法运算指令5.5.3 乘法运算指令乘法运算指令5.5.4 除法运算指令除法运算指令四则运算是计算机经常进行的一种操作。算术运算指令实现四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算二进制(和十进制)数据的四则运算请注意算术运算类指令请注意算术运算类指令对标志的影响对标志的影响掌握:掌握:ADD/ADC/INC、SUB/SBB/DEC/NEG/CMP熟悉:熟悉:MUL/IMUL、DIV/IDIV5.5.1 加法运算指令1.ADD(addition)加法加法2.ADC(addition with carry)带进位加带进位加3.INC(increment by 1)增增1第5章1.ADD(addition)1.ADD(addition)加法加法指令汇编格式:ADD ADD dest,srcdest,src操作操作:两个操作数求和两个操作数求和,结果存目标操作数结果存目标操作数中。中。dest(dest)+(srcdest(dest)+(src)受影响的状态标志位:OF,SF,ZF,AF,PF,CF OF,SF,ZF,AF,PF,CF说明:destdest和和srcsrc不能同时为存储器操作数不能同时为存储器操作数和段寄存器。和段寄存器。ADD ADD reg,imm/reg/memreg,imm/reg/mem;regregregregimm/reg/memimm/reg/memADD ADD mem,imm/regmem,imm/reg;memmemmemmemimm/regimm/regADDADD第5章1.ADD(addition)加法MOV AL,67HMOV BL,34HADD AL,BLAL=9BHOF:1,SF:1,ZF:0,AF:0,PF:0,CF:0例:ADD AL,3 ADD CX,MEM_W ADD GAMABPDI,BL ADD BP+DI+OFFSET GAMA,BLADDADD011001110011010010011011+第5章2.ADC 2.ADC 带进位加法带进位加法指令汇编格式:ADC ADC dest,srcdest,src操作操作:两个操作数相加的同时两个操作数相加的同时,再加上再加上CFCF。结果存入目标操作数中。结果存入目标操作数中。dest(dest)+(src)+CFdest(dest)+(src)+CF受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF OF,SF,ZF,AF,PF,CF说明:ADC ADC指令主要与指令主要与ADDADD配合,实现多精度配合,实现多精度加法运算。加法运算。例例:ADC AL,3 ADC AL,3 ADC DX,BX+10 ADC DX,BX+10ADCADC第5章2.ADC 2.ADC 指令应用思考指令应用思考如何实现:如何实现:3字节数据相加字节数据相加:123456H+789ABCH=8ACF12H00010010 00110100 0101011001111000 10011010 1011110010001010 11001111 00010010 ADC ADC ADD+MOV AL,56HMOV AH,34HMOV BL,12HADD AL,0BCHADC AH,9AHADC BL,78HADCADCMOV AX,3456HADD AX,9ABCH第5章3.增量指令INC(increment)指令汇编格式:INC INC destdest(reg/mem)操作:将指定的操作数加将指定的操作数加1,1,并将结果回送到目并将结果回送到目标操作数中。标操作数中。dest(dest)+1dest(dest)+1受影响的状态标志位:OF,SF,ZF,AF,PF OF,SF,ZF,AF,PF说明:INC INC 指令不影响指令不影响CFCF。要明确操作数的类型。要明确操作数的类型。INCINC第5章指令INC应用的示例与思考判断对错,为什么错?如何改正?判断对错,为什么错?如何改正?INC ALINC DATA1INC BXINC BXINC WORD PTRBXINC BYTE PTRBXX第5章5.5.2 减法运算指令1.SUB(subtract)减减法法2.SBB(subtract with borrow)带借位减带借位减3.DEC(decrement by 1)减减14.NEG(negate)取补取补5.CMP(compare)比较比较第5章1.SUB1.SUB(subtract)减法减法指令汇编格式指令汇编格式:SUB SUB dest,srcdest,src操作操作:从目标操作数减去源操作数从目标操作数减去源操作数,结果存入结果存入目标操作数中。目标操作数中。dest(dest)-(srcdest(dest)-(src)受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF OF,SF,ZF,AF,PF,CFSUBSUBSUB SUB reg,imm/reg/memreg,imm/reg/mem;regregregregimm/reg/memimm/reg/memSUB SUB mem,imm/regmem,imm/reg;memmemmemmemimm/regimm/reg第5章1.SUB1.SUB (subtract)减法减法MOV AL,97HMOV BL,34HSUB AL,BLAL=63HOF:1,SF:0,ZF:0,AF:0,PF:1,CF:0100101110011010001100011-SUBSUB例例:SUB AL,10H SUB AL,BX+10H SUB AL,AL第5章2.SBB 2.SBB 带借位减法带借位减法指令汇编格式指令汇编格式:SBB SBB dest,srcdest,src操作操作:从目标操作数中减去源操作数和从目标操作数中减去源操作数和CF,CF,结结果存入目标操作数中。果存入目标操作数中。dest(dest)-(src)-CFdest(dest)-(src)-CF受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CFOF,SF,ZF,AF,PF,CF说明说明:SBB SBB 指令主要用于多精度数据减法。指令主要用于多精度数据减法。例例:SBB AL,0 SBB AL,0 SBB DL,CL SBB DL,CLSBBSBB第5章2.SBB 2.SBB 指令应用思考指令应用思考如何实现:如何实现:3字节数据相减字节数据相减:923456H-789ABCH=19999AH10010010 00110100 0101011001111000 10011010 1011110000011001 10011001 10011010 SBB SBB SUB-MOV AL,56HMOV AH,34HMOV BL,92HSUB AL,0BCHSBB AH,9AHSBB BL,78HSBBSBBMOV AX,3456HSUB AX,9ABCH第5章3.DEC3.DEC(decrement by one)减减1 1指令汇编格式指令汇编格式:DEC DEC destdest (reg/mem)操作操作:将指定的操作数减将指定的操作数减1,1,并将结果送回到目并将结果送回到目标操作数中。标操作数中。dest(dest)-1dest(dest)-1受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PFOF,SF,ZF,AF,PF说明说明:DEC DEC指令不影响指令不影响CFCF。例例:DEC BX DEC BX DEC BYTE PTR BX+SI+1000H DEC BYTE PTR BX+SI+1000H DEC SP DEC SPDECDEC INC指令和指令和DEC指令都是单操作数指令指令都是单操作数指令 主要用于对计数器和地址指针的调整主要用于对计数器和地址指针的调整第5章4.NEG 4.NEG(negate)取补取补(取负取负)指令汇编格式指令汇编格式:NEG NEG destdest(reg/mem)操作操作:用用0 0减去指令中给定的操作数减去指令中给定的操作数,最后将结果送最后将结果送回到给定的操作数中。求补运算也可以表达回到给定的操作数中。求补运算也可以表达成:将操作数按位取反后加成:将操作数按位取反后加1 1。dest0-(dest)dest0-(dest)受影响的状态标志位受影响的状态标志位:OF,SF,ZF,AF,PF,CF OF,SF,ZF,AF,PF,CF说明说明:NEG NEG 指令对于带符号的数来说是取负指令对于带符号的数来说是取负,即改即改变操作数的符号。如果操作数操作前内容变操作数的符号。如果操作数操作前内容非非零零,操作后,操作后CF=1CF=1,否则,否则CF=0CF=0。例例:NEG AX NEG AX NEG BYTE PTR BX+10 NEG BYTE PTR BX+10NEGNEG例题例题第5章5.CMP(compare)比较指令汇编格式:CMP CMP dest,srcdest,src操作:将目的操作数减去源操作数,但结果不回送将目的操作数减去源操作数,但结果不回送目的操作数,按照定义相应设置状态标志。目的操作数,按照定义相应设置状态标志。(dest)-(srcdest)-(src)受影响的状态标志位:OF,SF,ZF,AF,PF,CFOF,SF,ZF,AF,PF,CF说明:CMP CMP 将两个操作数相减将两个操作数相减,两个操作数保持原两个操作数保持原值不变值不变,但与但与SUBSUB指令一样影响标志。指令一样影响标志。CMP reg,imm/reg/mem;regimm/reg/memCMP mem,imm/reg;memimm/regCMPCMP例:CMP AL,BL CMP DL,10H例题例题第5章5.5.3 乘法运算指令 乘法指令共有两条乘法指令共有两条,分别对应无符号整数分别对应无符号整数的乘法和带符号整数的乘法的乘法和带符号整数的乘法.MUL r8/m8MUL r8/m8;无符号字节乘法;无符号字节乘法;AXALr8/m8AXALr8/m8MUL r16/m16MUL r16/m16;无符号字乘法;无符号字乘法;DX.AXAXr16/m16DX.AXAXr16/m16IMUL r8/m8IMUL r8/m8;有符号字节乘法;有符号字节乘法;AXALr8/m8AXALr8/m8IMUL r16/m16IMUL r16/m16;有符号字乘法;有符号字乘法;DX.AXAXr16/m16DX.AXAXr16/m16例题例题举例说明说明说明说明5.5.4 除法运算指令DIV r8/m8;无符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数DIV r16/m16;无符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数IDIV r8/m8;有符号字节除法:ALAXr8/m8的商,AhAXr8/m8的余数IDIV r16/m16;有符号字除法:;AXDX.AXr16/m16的商,DXDX.AXr16/m16的余数例题例题说明说明说明说明第5章乘除法指令的应用扩充乘法指令能实现乘法指令能实现:BYTEBYTE=WORD WORDWORD=DWORD除法指令能实现除法指令能实现:WORD/BYTE=BYTE DWORD/WORD=WORD思考:思考:如何实现:如何实现:WORDBYTE BYTE/BYTE WORD/WORDWORDDWORD第5章字节/字转换为字/双字(无符号数)无符号:无符号:字节转换为字字节转换为字(ALAX):MOV AH,0 字转换为双字字转换为双字(AXDX:AX):MOV DX,0带符号带符号:字节转换为字字节转换为字(ALAX)正数正数:MOV AH,0 负数负数:MOV AH,0FFH 字转换为双字字转换为双字(AXDX:AX)正数:正数:MOV DX,0 负数:负数:MOV DX,0FFFFH第5章3.CBW(convert byte to word)字节转换为字字节转换为字符号扩展指令(字节/字 字/双字)CBWCBW;ALAL的符号扩展至的符号扩展至AHAH;如;如ALAL的最高有效位是的最高有效位是0 0,则,则AHAH0000;ALAL的最高有效位为的最高有效位为1 1,则,则AHAHFFHFFH。ALAL不变不变CWDCWD;AXAX的符号扩展至的符号扩展至DXDX;如;如AXAX的最高有效位是的最高有效位是0 0,则,则DXDX0000;AXAX的最高有效位为的最高有效位为1 1,则,则DXDXFFFFHFFFFH。AXAX不变不变符号扩展指令常用于获得符号扩展指令常用于获得倍长的数据倍长的数据例题例题4.CWD(convert word to double word)字转换为双字字转换为双字 不影响标志位不影响标志位第5章DATA1 DW 45HDATA2 DW 3CH无无符号数:符号数:MOV AX,DATA1 MUL DATA2带带符号数:符号数:MOV AX,DATA1 IMUL DATA2乘法应用举例乘法应用举例第5章DATA1 DB 45HDATA2 DW 3CH无无符号数:符号数:MOV AL,DATA1 MOV AH,0 MUL DATA2带带符号数:符号数:MOV AL,DATA1 CBW IMUL DATA2乘法应用举例WORDBYTE WORDWORD第5章DATA1 DW 45HDATA2 DB 3CH无无符号数:符号数:MOV AX,DATA1 DIV DATA2带带符号数:符号数:MOV AX,DATA1 IDIV DATA2除法应用举例除法应用举例第5章 DATA1 DB 45HDATA2 DB 3CH无无符号数:符号数:MOV AL,DATA1 MOV AH,0 DIV DATA2带带符号数:符号数:MOV AL,DATA1 CBW IDIV DATA2除法应用举例除法应用举例 BYTE/BYTE WORD/BYTE第5章DATA1 DW 45HDATA2 DW 3CH无无符号数:符号数:MOV AX,DATA1 MOV DX,0 DIV DATA2带带符号数:符号数:MOV AX,DATA1 CWD IDIV DATA2除法应用举例除法应用举例WORD/WORD DWORD/WORD第5章5.6逻辑操作指令1.NOT(not,or form 1s complement)1.NOT(not,or form 1s complement)取反取反2.AND(and,logical conjunction)2.AND(and,logical conjunction)逻辑与逻辑与3.OR(or,inclusive)3.OR(or,inclusive)逻辑或逻辑或4.XOR(exclusive or)4.XOR(exclusive or)异或异或5.TEST(test,or logical compare)5.TEST(test,or logical compare)测试测试第5章1.逻辑非指令NOT对一个操作数执行逻辑非运算对一个操作数执行逻辑非运算NOT指令是一个单操作数指令指令是一个单操作数指令NOT指令不影响标志位指令不影响标志位NOT NOT reg/memreg/mem ;reg/memreg/memreg/memreg/mem 按按位位取取反反,原原来来是是“0”的的位位变变为为“1”;原原来来是是“1”的的位位变变为为“0”NOTNOT例:NOT AH NOT DX NOT WORD PTR BX+SI+1000H第5章2.逻辑与指令AND对对

    注意事项

    本文((精品)汇编语言顺序结构程序.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开