[工学]第四章--汇编语言程序设计.pptVIP

  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点: 1、给每个子程序赋一个名字,即一个入口地址代号; 2、确的入口条件和出口条件,要能正确地传递参数; 目录 3、保护现场和恢复现场。由于汇编语言所操作处理的对象主要是累加器和某些工作寄存器,而主程序在调用子程序时,主程序已经占用了一定的寄存器,子程序执行时又要使用寄存器,子程序执行完毕返回主程序后,又要保证主程序按原有状态继续正常执行,这就需要对这些寄存器的内容加以保护。也就是说,在子程序使用累加器和某些工作寄存器之前,要将其中的内容保存起来,即保护现场;当子程序执行完毕返回主程序之前,再将这些内容取出,送回累加器或原来的工作寄存器中,即恢复现场。 目录 保护现场和恢复现场的工作即可以在主程序中完成,也可以在子程序中完成。如果子程序设计时,没有考虑保护主程序的现场,则可在主程序调用子程序前先保护现场,从子程序返回后再恢复现场。通常在主程序中保护现场,就一定在主程序中恢复;在子程序中保护现场,就一定在子程序中恢复。 保护和恢复现场通常用堆栈来进行,即利用入栈指令PUSH将寄存器中的内容保存在堆栈中,恢复时再用出栈指令POP从堆栈中取出。堆栈操作中要注意先进后出的特点。 4、保持子程序具有一定的通用性。例如子程序的操作对象采用地址或寄存器形式而不用立即数形式,转移指令尽量采用相对转移指令。 目录 主程序调用子程序是通过以下二条子程序调用指令来实现的: 1、 LCALL add16: 长调用指令,指令的操作数给出16位的子程序首地址; 2、 ACALL add11: 绝对调用指令,指令的操作数提供子程序的低11位入口地址,此11位地址与程序计数器PC的高5位并在一起,构成16位的转移地址,即子程序入口地址。 断点是指调用指令的下一条指令地址。子程序调用指令的功能是将断点压入堆栈,即保护断点,然后将调用地址送入程序计数器PC,使程序转入子程序的入口地址。 子程序的返回是通过返回指令RET实现的,此指令的功能是将堆栈中存放的返回地址(断点)弹出堆栈,送回程序计数器PC中去,使程序继续从断点处执行。 目录 【例13】 用程序实现。设x、y、z的取值范围均为0~9,x存放在30H单元中,y存放在31H单元中,z存放在32H单元中,a存放在33H单元中。 解:由于本题3次用到求平方值,所以在程序中把求平方的程序段编为子程序。程序清单如下: 主程序 地址 ORG 2000H 2000H MOV SP,#3FH ;设堆栈指针 2003H MOV A,30H ;取x值 2005H LCALL SQR ;求 2008H MOV R1, A ; 值暂存R1 2009H MOV A,31H ;取y值 200BH LCALL SQR ;求 200EH ADD A, R1 ;求 + 200FH MOV R1, A ; + 值暂存R1 2010H MOV A,32H ;取z值 2012H LCALL SQR ;求 2015H ADD A, R1 ;求 + + END 目录 子程序 地址 ORG 2200H 2200H SQR: INC A 2201H MOVC A, @A+PC 2202H RET 2203H TAB: DB 0, 1, 4, 9 2207H DB 16, 25, 36, 49 220BH DB 64, 81 子程序中“INC A”指令的说明:当读取指令“MOVC A, @A+PC”后,PC=2202H,而平方值0, 1, 4, 9,……的存储单元地址分别为2203H、2204H、2205H、2206H、……。所以A要增加1。 本节结束返回 4.4 综合应用举例 4.4.1 算术运算类程序 【例1】 多字节无符号数减法子程序SUB1 解:入口:R0←被减数低字节地址 R1←减数低字节地址

文档评论(0)

ipbohn97 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档