新编汇编语言第五章.pptx
《新编汇编语言第五章.pptx》由会员分享,可在线阅读,更多相关《新编汇编语言第五章.pptx(94页珍藏版)》请在咨信网上搜索。
1、学习目的掌握转移指令与循环指令的使用方法,能够在程序中使用各种程序结构。掌握汇编语言程序设计的完整步骤,能够上机调试程序。5.1 顺序结构程序设计顺序结构:指令按照内存中的地址顺序依次被执行,没有任何流程改变。例1 计算 Z=(3X+Y-5)/2(其中的变量为无符号数)(1)数据分析表达式中有三个变量X、Y、Z,可以使用三个内存单元来表示。未指明变量的变化范围,使用字节、字为单位均可,这里以字为单位。(2)算法分析3X :2X+X一条移位指令和一条加法指令3X+Y-5:一条加法指令和一条减法指令(3X+Y-5)/2:可使用右移指令程序应为顺序结构,按照表达式规定的顺序使用加法、减法、移位指令可
2、实现全部运算。(3)绘制流程图并写出程序主体开始计算2X+X计算3X+Y-5计算(3X+Y-5)/2结束MOV AX,VARXSHL AX,1ADD AX,VARXADD AX,VARYSUB AX,5SAR AX,1MOV VARZ,AX编制完整程序的余下步骤(4)选择一种程序框架,把程序主体添加到框架中。(5)汇编过程:使用MASM.EXE对源程序文件(ASM)进行汇编,检查并修改语法错误,生成目标代码文件(OBJ)。(6)连接过程:使用LINK.EXE连接工具把OBJ文件组织为可执行文件(EXE文件)。(7)使用DEBUG调试可执行程序,观察并修改程序中的逻辑错误。5.2 分支程序设计若
3、程序需对计算结果或测试条件进行判断,根据判断结果来决定程序流程,则采用分支结构。汇编语言中,实现分支结构的指令是转移类指令,这类指令通过修改CS和IP的内容来改变程序执行的流程。循环结构可看作分支结构的一种特例。5.2.1 转移指令转移指令分为无条件和条件两类。无条件转移指令一定改变程序流程,改变下一条将要执行的指令地址。条件转移指令会判断特定的标志位或寄存器,如果满足条件,则改变程序流程,如果不满足则不会改变程序流程。两种转移指令的功能都不可忽视,在程序中都是经常使用的。(1)无条件转移指令指令格式:JMP 目标地址功能:无条件的修改IP或者CS、IP中的内容,改变下一条将要执行的指令地址。
4、即跳转到目标地址继续执行程序。标志位影响:无(1)无条件转移指令 JMP L1 MOV AX,0 L1:MOV AX,0FFFFH 执行JMP指令后,程序流程改变到L1标号指明的地址。(1)无条件转移指令JMP指令的转移类型分为两种:段内转移和段间转移。(1)段内转移JMP指令本身和目标地址在同一代码段内,只需修改IP的内容,而不需要改变CS的内容。(1)无条件转移指令1)段内直接转移格式:JMP 标号机器指令由两部分构成,OPCODE和DISP,OPCODE是操作码,DISP是一个8位或16位的补码。1)段内直接转移指令DISP表示的含义是标号地址相对于JMP后一条指令的字节距离。DISP=
5、标号偏移量 JMP后一条指令偏移量上面的计算是汇编程序在汇编过程中完成的。1)段内直接转移指令标号地址 JMP后一条指令地址:DISP 0标号地址 JMP后一条指令地址:DISP 0功能:IP=(IP)+DISP1)段内直接转移指令(IP)+DISP该加法是两个补码的加法。DISP可以是正数或负数,但是(IP)总是理解为正数。把第16位(超出字的范围)理解为符号位,(IP)的第16位总是理解为0,DISP的第16位由它自己的符号位决定。1)段内直接转移指令例:(IP)=1100101001101011 DISP=11100110(IP)+DISP:0 11001010 01101011+1 1
6、1111111 11100110 0 11001010 01010001注意,相加的结果总是一个正数,补码加法完毕以后应当重新把(IP)看作无符号数。短转移与长转移DISP字段是由汇编程序在汇编过程中计算并生成的。按照DISP的长度,段内直接转移指令又可分为短转移和长转移两种类型。若DISP在-128127范围内,则只占用一个字节。这种情况称为短转移。若DISP超过了-128127范围,则DISP占用一个字。这种情况称为长转移,其转移范围为-3276832767。2)段内间接转移JMP指令针对的目标偏移量存放在16位通用寄存器或字内存单元中。指令格式:JMP 通用寄存器名称 JMP 字内存单元
7、功能:IP=(通用寄存器)IP=(EA)2)段内间接转移例:JMP BX功能:IP=(BX)JMP WORD PTR SI功能:IP=(DS:SI)段内直接与段内间接的区别注意段内直接转移和段内间接转移的区别。段内直接转移:由机器指令的DISP字段给出目标地址相对于JMP后一条指令的带符号字节距离,功能为IP=(IP)+DISP。段内间接转移:由16位通用寄存器或字内存单元直接给出IP寄存器新的内容。(2)段间转移标号地址和JMP指令不在同一代码段内,这类转移必须同时修改CS和IP的内容,才能完成正确的转移操作。1)段间直接转移指令格式:JMP FAR类型的标号 JMP FAR PTR 标号第
8、二种格式是强制指定标号的临时类型属性为FAR,无论该标号定义为什么类型,都作为FAR类型来引用。1)段间直接转移机器指令中除OPCODE字段外,还有两个16位的字段,分别表示目标地址的偏移量和段基值。功能:IP=目标地址偏移量 CS=目标地址段基值同时修改CS、IP中的内容,实现段间转移。2)段间间接转移该转移方式所用的目标地址只能是存放在双字内存单元中的内容。指令格式:JMP DWORD PTR 双字单元起始偏移量功能:IP=(EA)CS=(EA+2)2)段间间接转移例:ADR1 DD L1JMP DWORD PTR ADR1功能:实现段间转移,目标地址为L1标号所在位置,逻辑地址存放在AD
9、R1双字单元中。2)段间间接转移例:JMP DWORD PTR BXDI双字单元有效地址:EA=(BX)+(DI)采用基址变址寻址方式。功能:IP=(EA)CS=(EA+2)(2)条件转移指令功能:根据前一条指令所影响的某些标志位或寄存器状态作为判断条件;当条件满足时,把程序流程转移到指定的目标地址;当条件不满足时,不改变程序流程,CPU会顺序执行下一条指令。(2)条件转移指令统一的汇编指令格式:JXX 目标地址标志位影响:无(只使用标志位作为判断条件,不会去修改它)(2)条件转移指令机器指令格式:总是占用2个字节,OPCODE与带符号的相对位移量(DISP)。由于DISP仅有8位,转移范围一
10、定是-128 127字节,只能是短转移,这一特征对于所有条件转移指令是一致的。如果需要条件转移的转移范围得到扩大,那么必须结合使用无条件转移。(2)条件转移指令在执行条件转移指令前,一般需要执行一条算术运算指令或逻辑运算指令对特定标志位产生有意义的影响。根据所判断的条件,条件转移指令可分为三类:单条件转移、无符号数条件转移,带符号数条件转移。(1)单条件转移指令这一类条件转移指令只对某一个标志位或寄存器的状态进行判断,并决定是否进行转移。1)单标志位转移单标志位转移指令总共有5对,能对5个标志位:CF、ZF、SF、OF、PF各自的状态进行判断。例:JC L1JNC L11)单标志位转移例1 编
11、写一段程序判断两个字节变量DB1和DB2的内容是否相同,如果相同则把AL清0,否则置全1。MOV AL,DB1 CMP AL,DB2 JZ L1 MOV AL,0FFH JMP L2 ;无条件转移对于实现分支结构也是必不可少的L1:MOV AL,00HL2:MOV AH,4CH INT 21H1)单标志位转移注意分析,上面的条件转移有什么样的缺陷。如果JZ L1指令和L1标号之间的字节距离超过127,那么在汇编过程中就会出现语法错误。1)单标志位转移条件转移指令不适合直接用于距离较远的转移。一般来说,应该结合无条件转移指令在分支结构中实现长距离转移。就上面的例子,可通过流程图来得到合理的源程序
12、。根据流程图写出相关程序主体CMP AL,DB2JZ L1JMP L2MOV AL,DB1AL=DB1AL=0AL=DB2?AL B 成立则转移JNBE:A B 不成立则转移这两个助记符含义相同,对应同一条机器指令。判断规则:CF=0 AND ZF=0,转移,否则不转移。CF=0:A-B最高位不产生借位,够减,ABZF=0:A-B结果不为0,AB综合分析所得:AB(2)无符号数条件转移指令JAE:AB成立则转移JNB:AB不成立则转移两个助记符对应同一条机器指令。判断规则:CF=0 OR ZF=1,转移,否则不转移。CF=0:A-B最高位不产生借位,够减,ABZF=1:A-B结果为0,A=B综
13、合分析所得:AB(2)无符号数条件转移指令JB:AB成立则转移JNAE:AB不成立则转移两个助记符对应同一条机器指令。判断规则:CF=1 AND ZF=0,转移,否则不转移。CF=1:A-B最高位产生借位,不够减,ABZF=0:A-B的结果不为0,AB综合分析所得:AB不成立则转移两个助记符对应同一条机器指令。判断规则:CF=1 OR ZF=1,转移,否则不转移。CF=1:A-B最高位产生借位,不够减,ABZF=1:A-B的结果为0,A=B综合分析所得:AB(2)无符号数条件转移指令例2 数据段中的ARY数组中存放了10个字节型的无符号数,从数组中找出最大的数保存到MAX字节单元中。例2 (1
14、)数据分析 数组ARY需要10个字节的空间。MAX字节单元用于存放最终结果。例2(2)算法分析1)把数组中的第0个数据首先存放到一个寄存器中(这里选用AL)。2)将寄存器中数据与数组中每一个数据按顺序作比较,每遇到一个大于寄存器中数据的数组元素,则用它替换寄存器中数据,保持寄存器中数据总是当前最大值。例2(2)算法分析3)由于需要逐个访问数组中的元素,需要使用一个基址或变址寄存器作为一维数组的浮动下标,这里选用SI;4)需要一个计数器,对访问次数进行记数,保证对数组的访问不会越界,这里数组中有10个元素,使用CX来完成记数的功能。(3)绘制流程图并写出程序主体开始开始初始化初始化SI、CX、A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新编 汇编语言 第五
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。