微机原理:第34章 汇编语言程序设计(3).pptVIP

微机原理:第34章 汇编语言程序设计(3).ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微机原理 汇编语言程序设计(*) 子程序设计 子程序的基本结构包括以下几个部分: (1)子程序说明 (2)保护现场和恢复现场 (3)子程序体 (4)子程序返回 微机原理 汇编语言程序设计(*) 过程的定义 格式: Procedure name PROC Attribute (子程序主体) Procedure name ENDP 说明: 过程名(Procedure name)为标识符,它又是子程序入口的符号地址,它的写法要求同标号; 属性(Attribute)是指类型属性,有两种选择NEAR或FAR,省缺时为NEAR。若调用程序和过程在同一代码段中,过程属性使用NEAR;若调用程序和过程不在同一代码段中,则使用FAR。 子程序设计 微机原理 汇编语言程序设计(*) 例如:调用程序和子程序在同一代码段中: CODE SEGMENT MAIN PROC FAR … CALL SUBRI ;调用SUBRI … RET MAIN END … SUBRI PROC NEAR … RET SUBRI ENDP CODE ENDS … CODE SEGMENT MAIN PROC FAR … CALL SUBRI … RET SUBRI PROC NEAR … RET SUBRI ENDP MAIN END CODE ENDS 微机原理 汇编语言程序设计(*) 调用程序和子程序不在一个代码段内。 CODX SEGMENT … SUBR PROC FAR ;定义子程序为 FAR属性。 … RET SUBR ENDP CALL SUBR … CODX ENDS … CODY SEGMENT … CALL SUBR … CODY ENDS 微机原理 汇编语言程序设计(*) 子程序的特性 通用性 :为了子程序具有通用性,要解决的一个重要问题就是确定哪些变量作参数,以及如何传送这些参数。 可浮动性:所谓可浮动性就是要求子程序可以装在存储器的任何地址的可重定位性。为使子程序具有可浮动性,在子程序中不应使用绝对地址,而应全部使用相对地址。 使用方便性:一个程序员编写的子程序也要能为其它用户可用,为此,在编写子程序的同时,还要编写子程序调用方法说明,又称为子程序说明。 子程序设计 微机原理 汇编语言程序设计(*) 子程序设计 程序说明中应包含下列几方面内容。 ①子程序目的:包括子程序的名称,功能和性能指标(如;执行时间)等; ②子程序的入口、出口参数; ③所用寄存器和存储单元; ④所调用的其它子程序; ⑤调用示例(可有可无)。 子程序说明实例。 ;子程序:DTOB,将两位十进制数(BCD码)转换成二进制数 ;入口参数:AL寄存器中存放十进制数 ;出口参数:CL寄存器存放转换得到的二进制数 ;所用寄存器:BX ;执行时间:0.06ms 微机原理 汇编语言程序设计(*) 子程序设计 子程序的编写方法与主程序一样 但需要留意几个问题: 利用过程定义,获得子程序名和调用属性 RET指令返回主程序,CALL指令调用子程序 压入和弹出操作要成对使用,保持堆栈平衡 开始保护寄存器,返回前相应恢复 安排在代码段的主程序之外 子程序允许嵌套和递归 最好有完整的注释 难点是参数传递 微机原理 汇编语言程序设计(*) 例:十进制到十六进制的转换 将键盘输入的一个十进制数转换成十六进制数,并在屏幕上显示出来。每个数据占一行,输入时以非数字键结束。 整个程序包括1个主程序和3个子程序。3个字程序说明如下: (1) KEYTDOB:将键盘输入一位十进制数放入AL中 入口参数:从键盘输入输入一位十进制数放AL中。 出口参数:二进制数放在BX中。 (2) BTOHSCR:将二进制数转换为十六进制数并显示于屏幕。 入口参数:BX中的二进制数 出口参数:十六进制数放在DL中,并显示 (3) CRLF:产生回车换行,不需要入口参数,也无出口参数,以使每个数据占一行。 微机原理 汇编语言程序设计(*) 例:十进制到十六进制的转换-2 CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR CALL KEYDTOB CALL CRLF CALL BTOHSCR CALL CRLF MOV AH,4CH INT 21H MAIN ENDP KEYDTOB PROC NEAR MOV BX,0 KEYIN: MOV AH,1 INT 21H SUB AL,30H JL EXIT CMP AL,9 J

文档评论(0)

好文精选 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档