第5章-汇编语言程序设计.ppt

  1. 1、本文档共126页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 子程序返回指令 常用返回指令: RET 指令执行:将堆栈中的内容出栈?(CS、)IP; 可用POP和JMP指令模拟近返回 出栈数据数目由RET自行决定; 远调用——出栈CS、IP;近调用——出栈IP 其他返回指令 RET Imm ;子程序返回后,再将SP+Imm 适用于使用堆栈传递参数的子程序,可将入口参数移出堆栈; POP BX JMP BX * * 1200H 子程序调用演示 …… CALL MyProc …… 主程序 MyProc PROC …… RET …… MyProc ENDP 子程序 IP 1203H 3000H …… …… …… 本条CALL指令占3个字节空间 SS SP 12 03 3000H 1203H * * 关于子程序的调用和返回 子程序的正确执行是依靠CALL、RET指令中的入出栈操作; 子程序调用时入栈返回地址;子程序返回时出栈返回地址; 子程序中必须保证RET指令的正常执行; 例如:子程序ROUTINE 子程序中入栈两个字数据; 出栈一个字数据; 当执行RET返回时,出栈的时AX的值,无法正常返回; 在某些病毒程序中,就是利用修改返回地址实现攻击的! PUSH AX PUSH BX …… POP BX RET * * 实验二的题目2 从键盘接收两个不大于5 的十进制数值,并以十进制数据形式显示其和。 主程序 …… CALL INNUM MOV AL , NUM MOV A , AL CALL INNUM MOV AL , NUM ADD AL , A …… INNUM PROC MOV AH , 01H INT 21H SUB AL , 30H MOV NUM , AL MOV AH , 02H MOV DL , 10 INT 21H MOV AH , 02H MOV DL , 13 INT 21H RET INNUM ENDP 输入值范围控制 CMP AL , 30H JB EXIT CMP AL , 35H JA EXIT 入口参数:无 出口参数:NUM * * 5.5.3 子程序设计方法 1、信息的保护与恢复 2、参数传递 变量传递参数 寄存器传递参数 堆栈传递参数 * * 1、信息的保护与恢复 子程序的执行应不影响主程序中的数据; 子程序调用和返回时,要对通用寄存器进行现场保护与恢复; 调用子程序时,保护所用的寄存器; 子程序返回时,恢复所用的寄存器; 注意:出口参数除外; * * 实验2(内容2) 从键盘输入两个小于5的十进制数据,相加并显示该结果。 DATA SEGMENT A DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA INNUM PROC MOV AH , 01H INT 21H SUB AL , 30H MOV A , AL MOV DL , 0AH MOV AH , 02H INT 21H MOV DL , 0DH MOV AH , 02H INT 21H RET INNUM ENDP START: MOV AX , DATA MOV DS , AX CALL INNUM MOV DL , A CALL INNUM ADD DL , A ADD DL , 30H MOV AH , 02H INT 21H MOV AX , 4C00H INT 21H CODE ENDS END START 程序中的问题在哪儿?!

文档评论(0)

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

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

1亿VIP精品文档

相关文档