电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPT文档下载
分享到微信 分享到微博 分享到QQ空间

80*86汇编语言程序设计 第2版 教学课件 ppt 作者 马力妮 第5章 顺序、分支和循环程序设计

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

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

80*86汇编语言程序设计 第2版 教学课件 ppt 作者 马力妮 第5章 顺序、分支和循环程序设计

第5章 顺序、分支和循环程序设计,5.1顺序程序设计 5.2分支程序设计 5.3 循环程序设计 共6学时,编写程序的一般步骤,分析问题 算法设计,画出流程图 根据流程图编写源程序 程序的调试与修改,5.1 顺序程序设计,顺序程序设计在设计这种程序中,没有分支和循环,只要遵照算法按步骤顺序写出相应的指令即可。用流程图来描述如图5-1所示。,图5-1,【例5-1】设X、Y 、Z为有符号字变量,编写程序计算表达式 (X+Y)*5+8-X)Z的值,结果存放到双字变量RESULT中。 (1)程序的基本结构:,(2)计算表达式的值 算法分析: 步骤1:计算X+Y; 步骤2:计算(X+Y)*5; 步骤3:计算(X+Y)*5+8 步骤4:计算 (X+Y)*5+8-X 步骤5:计算(X+Y)*5+8-X)Z 程序算法流程图如图5-3所示。,(3) 根据流程图编写汇编程序: DATA SEGMENT ;数据段, 定义X、Y、Z为字变量 X DW ? Y DW ? Z DW ? RESULT DD ? ;RESULT为双字变量 DATA ENDS CODE SEGMENT CODE ;代码段 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;数据段段地址送DS中 MOV AX,X ADD AX,Y ; 计算X+YAX MOV BX,5 IMUL BX ;计算(X+Y)*5, AX*5DX:AX ADD AX,8 ADC DX,0 ;计算(X+Y)*5+8,(DX:AX)+8DX:AX SUB AX,X SBB DX,0 ;计算 (X+Y)*5+8-X,(DX:AX)-XDX:AX IDIV Z ;计算(X+Y)*5+8-X)Z 商AX,余数DX MOV WORD PTR RESULT,AX ;商RESULT MOV WORD PTR RESULT+2,DX ;余数RESULT+2 MOV AX,4C00H ;程序结束返回DOS INT 21H CODE ENDS ;代码段结束 END START,(4) 程序说明: 1) 变量X、Y 、Z为有符号字变量,在数据段中定义。加减法指令不分有符号或无符号,乘除法指令用有符号乘除法指令IMUL和IDIV。 2)由于把5送到BX中,在IMUL BX指令之前要把乘数AX符号扩展到DX中,才可以做 (DX:AX)*BXDX:AX。 3)RESULT是双字变量,当商AX送RESULT低字,DX余数送RESULT高字时,要说明RESULT的字属性。 4)该程序在调试过程中,应把X、Y、Z的值写在程序的数据段中,执行结果是在RESULT中,可以通过DEBUG或CodeView看到。,【例5-3】 通过键盘键入一个两位十进制数,将该数转换成压缩的BCD码,送BUF中。 (1)分析: 1)获取键盘键入的数据是利用下面两条指令来完成: MOV AH,01H ;1号功能,通过键盘读入1个ASCII码AL INT 21H ;中断21H 2)通过键盘键入的数字的ASCII码为:,将ASCII码转换成BCD码,用去掉30H的方法: SUB AL,30H (2)程序流程图如图5-5所示。,(3)根据流程图编写汇编程序: DATA SEGMENT ;定义数据段 BUF DB ? ;BUF为字节变量 DATA ENDS CODE SEGMENT CODE ;定义代码段 ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;数据段段地址送DS中 MOV AH,01H ;通过键盘读入十位ASCII码AL INT 21H SUB AL,30H ;将十位ASCII码转换成BCD码AL SHL AL,4 ;将十位BCD码左移4位AL MOV BUF,AL ;将ALBUF保存 MOV AH,01H ;通过键盘读入个位ASCII码AL INT 21H SUB AL,30H ;将个位ASCII码转换成BCD码AL OR BUF,AL ;将十位BCD码和个位BCD码合并BUF MOV AX,4C00H ;程序结束返回DOS INT 21H CODE ENDS ;代码段结束 END START,(4)程序说明: 1)用中断21H的1号功能,每次只能读入1个ASCII码送AL,在程序中分别两次从端口获取数据。 2) 将ASCII码转换成BCD码后,将十位BCD码和个位BCD码合并送BUF中。 3)该程序的执行结果在数据段的字节变量BUF中,可以通过DEBUG或CodeView看到。,5.2分支程序设计,5.2.1 转移指令 5.2.2 条件转移指令 5.2.3 根据条件设置字节指令 5.2.4 分支程序设计的应用举例,分支结构就是在顺序结构的基础上加判断框形成程序的分支结构。,在汇编指令中共有4组程序转移指令: 无条件转移指令(在第3章介绍) 条件转移指令 循环指令 中断指令(在第8章介绍),5.2.1转移指令,5.2.2 条件转移指令,条件转移指令分为3大类: 根据单个标志的条件转移指令 根据无符号数比较的结果产生的条件转移指令(无符号数条件转移指令) 根据带符号数比较结果产生的条件转移指令(带符号数条件转移指令) JCXZ指令是根据CX寄存器的内容而产生的条件转移指令 条件转移指令的格式: 所有条件转移只能是段内直接短转移,而且与JMP指令一样不影响任何标志位。,条件转移指令助记符 短标号,1比较指令CMP 比较指令的格式: 比较指令的功能: DSTSRC 结果反映在标志上而不送回到目的操作数DST。 对标志寄存器的影响:OF、SF、ZF、AF、PF、CF有影响。 需要注意的问题: 该指令的操作数只能是寄存器操作数和存储器操作数,两个操作数不能同时为存储器操作数。 表5-1表中说明2个操作数的比较结果。,CMP DST , SRC,【例5-4】设AX=5,BX=8,比较两数的大小。 执行CMP AX,BX后,标志寄存器中:CF=1,SF=1,OF=0,ZF=0。 当把AX和BX中的数看做是无符号数时,CF=1则AXBX。 当把AX和BX中的数看做是有符号数时,OF=0,SF=1则AXBX。 设AX=5,BX=-8 执行CMP AX,BX后,标志寄存器中:CF=1,SF=0 ,0F=0,ZF=0。 当AX和BX中的数是有符号数:OF=0,SF=0则AXBX。 当认为AX和BX中的数是无符号数时:AX=0005H,BX=0FFF8H,CF=1则AXBX。,2根据单个标志的条件转移指令 根据单个标志的条件转移指令是仅取决于标志寄存器中某一个标志位的状态而形成的条件转移指令。 标志寄存器的标志位包括:ZF、CF、SF、OF及PF。,假如:比较两数X和Y是否相等,相等执行程序段L1,不等执行程序段L2。 则: MOV AX,Y CMP AX,X ;Y-X结果不送目的操作数 JZ L1 ;相等时ZF=1转到L1 ;L2程序段,不等时ZF=0执行L2程序段 L1 : ;L1程序段 或: MOV AX,Y CMP AX,X ;Y-X结果不送目的操作数 JNZ L2 ;不等时ZF=0转到L2 ;L1程序段,相等时ZF=1执行L1程序段 L2: ;L2程序段 ,3无符号数条件转移指令 当需要由两个无符号数的大小来决定程序是否转移时,其判断条件是根据标志寄存器的CF和状态的组合而产生。 假设有两个无符号数A、B,在使用条件转移指令之前一般用CMP比较指令将两数相减,结果不送,只影响标志CF和ZF,当CF=0 同时 ZF=0时,则AB 。 对无符号数条件转移指令的比较一般用高于(Above)、低于(Below)和等于(Equal)来表示的, 无符号数的条件转移指令如表5-3所示。 表5-3 无符号数的条件转移指令,其中:A、B为无符号数,【例5-5】设AX和BX中存放的是无符号数,计算AX-BX结果送数据段RESULT字变量中。 (1)分析: 1)在数据段中定义字变量RESULT。 2)在程序中将用MOV指令将AX和BX赋值。 3)AXBX时作AX-BX,当AX BX时作BX-AX 4)AX和BX中存放的是无符号数采用无符号数条件转移指令JAE或JNB。 (2)程序流程图如图5-7所示。,图5-7例5-5流程图,(3)根据流程图编写汇编程序: DATA SEGMENT ;定义数据段 RESULT DW ? DATA ENDS CODE SEGMEND ;定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX ;数据段段地址送DS中 MOV AX, 1 MOV BX, 6 CMP AX,BX ;比较 JAE LOP ;AXBX时转移 XCHG AX,BX ;如果AXBX,交换AX、BX LOP: SUB AX,BX MOV RESULT,AX MOV AX,4C00H ;程序结束返回DOS INT 21H CODE ENDS ;代码段结束 END START,(4)程序说明: 1)比较两数的大小,大数减小数,因此,当AXBX时用交换指令将AX和BX的内容交换使大数放在AX中,结果也在AX中,最后将AX的内容送RESULT中。 2)该程序的执行结果在数据段的RESULT字变量中。,4带符号数条件转移指令 根据两个有符号数的大小来决定程序是否转移时,则必须选用有符号数条件转移指令。其判断条件是根据CF、 OF和状态的组合而产生的。 假设有2个无符号数A、B,在使用条件转移指令之前一般用CMP比较指令将两数相减,结果不送,只影响标志SF、OF和ZF。 当SF=OF 同时 ZF=0时,则AB 。 带符号数条件转移指令的比较一般用大于(Greater)、小于(Less)和等于(Equal)表示,以表示与无符号数条件转移指令的区别。,表5-4 带符号数的条件转移指令,其中:A、B为两个有符号数,【例5-6】编写程序,计算下列公式: 1 X0 Y= 0 X=0 -1 X0,3个分支,用2个条件指令。 4) X存放的是带符号数,因此,采用带符号数条件转移指令JGE或JNL。当判断X是否等于0时用 JZ或JE转移指令。 (2)程序算法流程图如图5-8所示。,图5-8,(3)根据流程图编写汇编程序: DATA SEGMENT ;定义数据段 X DW ? Y DW ? DATA ENDS CODE SEGMEND ;定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX ;数据段段地址送DS中 MOV X,-2 ;为X赋初值 CMP X,0 ;比较X0? JGE BIN ;X0时转移BIN MOV Y,-1 ;如果X0,则Y=-1 JMP NEXT BIN: JZ EQUL ;X=0,则转EQUL MOV Y,1 ;X0,Y=1 JMP NEXT EQUL: MOV Y,0 ;X=

注意事项

本文(80*86汇编语言程序设计 第2版 教学课件 ppt 作者 马力妮 第5章 顺序、分支和循环程序设计)为本站会员(E****)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

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




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.