第4章汇编语言及其程序设计分析.ppt

  1. 1、本文档共125页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章汇编语言及其程序设计分析

1班 * 2班 * * * 2、参数传递 主程序在调用子程序时,经常需要向子程序传递一些参数或控制信息,子程序执行完成后,也常常需要把运行的结果返回给调用程序,这种调用程序和子程序之间的信息传递,称为“参数传递”。 参数传递的主要方法有:寄存器传递、内存变量传递和堆栈传递。 传递的内容如果是数据本身,称为“值传递”;如果是数据所在单元的地址,称为“地址传递”。 * * 3、现场保护和恢复 所谓“现场保护”是指子程序运行时,对可能破坏的主程序用到的寄存器、堆栈、标志位、内存数据值进行的保护。 所谓“现场恢复”指由子程序结束运行返回主程序时,对被保护的寄存器、堆栈、标志位、内存数据值的恢复。 现场保护和现场恢复方法: a、用堆栈实现:用进栈实现保护,用出栈实现恢复,但一定要注意先进后出,后进先出,并且成对出现。 b、用内存缓冲区实现:主要使用MOV指令将要保护对象送入内存缓冲区,而后再回送实现还原。 * * 4、子程序嵌套 一个程序可以调用某个子程序,该子程序可以调用其他子程序,这就形成了子程序嵌套。 子程序嵌套调用的层次不受限制,其嵌套层数称为“嵌套深度”。 由于子程序中使用堆栈来保护断点,堆栈操作的“后进先出”特性能自动保证各个层次子程序断点的正确入栈和返回。 在嵌套子程序设计中,应注意寄存器的保护和恢复,避免各层子程序之间寄存器发生冲突。特别是在子程序中使用PUSH、POP指令时,要格外小心,以免造成子程序无法正确返回。 * * 例:利用寄存器传递参数,编程显示两位十六进制数的子程序。 1、明确任务,确定算法。 设两位十六进制数存放在AL寄存器,对两位十六进制数进行逐位显示,由于每位的显示过程是相同的,所以采用子程序结构。,显示两位十六进制数的子程序调用显示一位十六进制数的子程序 2、绘流程图 3、根据流程图编写汇编语言程序 子程序设计举例 * * DISPP PROC NEAR PUSH DX PUSH CX ;保护现场 MOV DL, AL MOV CL, 4 ROL DL, CL ;循环左移4位 AND DL, 0FH ;高4位清零 CALL DISP1 MOV DL, AL AND DL, 0FH ;高4位清零 CALL DISP1 子程序设计举例 POP CX POP DX RET DISPP ENDP * * DISP1 PROC OR DL, 30H ;十六进制数的ASCII CMP DL, 3AH JB DDD ;小于,转移DDD ADD DL, 07H ;否则,转换为相应ASCII DDD: ;利用DOS功能调用显示字符 MOV AH, 2 INT 21H RET DISP1 ENDP 子程序设计举例 * * 本例利用寄存器DL传递参数。 作为出口参数的寄存器是不能保护的,否则就失去了传递参数的作用; 作为入口参数的寄存器可以保护也可以不保护。 由于寄存器的数量有限,这种方法只适用于少量数据的传递。 当有大量数据要传递时,需要用到指定单元或堆栈的方法传递参数。 * * 例:利用内存单元传递参数,已知数组由100个字数据组成,编程求出这个数组元素之和。 1、明确任务,确定算法。 数据已经存放在ARY开始的存储区中,其各元素之和存入在以SUM开始的存储区中。用子程序结构进行编程,并采用固定缓冲区传送方法来实现子程序参数传送。 2、绘流程图 3、根据流程图编写汇编语言程序 子程序设计举例 利用内存单元传递参数的方法,可以用于传递大量的参数,但其存取速度较慢。 * * DATA SEGMENT ARY DW 100 DUP(?) SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA ;设置DS段值 MOV DS, AX CALL RADD MOV AH, 4CH INT 21H 子程序设计举例 * * RADD PROC NEAR

文档评论(0)

wbjsn + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档