- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章8086∕8088汇编语言程序设计祥解.ppt
* 3.5.5 子程序的嵌套 一个子程序调用另外一个子程序的情况,称为子程序的嵌套。 子程序可以多次嵌套,它的嵌套次数只受堆栈容量大小的约束,不受其它因素影响。 子程序之所以能够实现嵌套,是由于调用及返回过程是通过堆栈操作自动进行的。它们按照先进后出的原则,依次存取返回点,因而不会因子程序嵌套而造成使用上的混乱。 3.5.6 子程序设计实例【例3.16】利用子程序求1!、3!、5!、7!的值,结果放入VALUE开始的字单元中,并写出该子程序的入口条件和出口条件,要求子程序在代码段中从偏移地址1000H开始存放。入口条件:求阶乘的数放在CX寄存器中;出口条件:阶乘值在AX寄存器中。 DATA SEGMENTVALUE DW 4 DUP(?)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ;MAIN PROGRAMSTART: MOV AX,DATA MOV DS,AX LEA SI,VALUEMOV DX,1 AGAIN:MOV CX,DX CALL FACT MOV [SI],AX CMP DX,7 JE EXIT ADD DX,2 ADD SI,2 JMP AGAIN EXIT: MOV AH,4CH INT 21H ;SUBROUTING ORG 1000HFACT PROC PUSH DX MOV AX,1CONT:MUL CX LOOP CONT POP DX RETFACT ENDP CODE ENDS END START 【例3.17】设计一个子程序:将一位十六进制数转换为对应的ACSII码。 设通过DL寄存器传递参数,过程名为DTASC DTASC PROC FIN :RETDTASC ENDP ADD DL,30H CMP DL,39H JC FIN ADD DL,7 3.6 宏汇编 3.6.1 宏定义 宏定义格式: 宏指令名 MACRO[形式参数表] …… ; 宏指令体 ENDM 【例3.20】定义宏指令,将AX、BX、CX、DX寄存器的内容压入堆栈。 设宏指令名为SAVEX SAVEX MACRO ENDM PUSH AX PUSH BX PUSH CX PUSH DX 【例3.21】嵌套定义宏指令,将AX、BX、CX、DX寄存器的内容压入堆栈,然后清零。 SAVEX XOR AX, AX XOR AX, AX XOR AX, AX XOR AX, AX CLEARX MACRO ENDM 3.6.2 宏调用和宏扩展 1.宏调用 经宏定义后,就可以在源程序中调用宏,从而使程序将来能够执行宏所定义的功能。宏调用的方式是在源程序中需要复制宏体的地方写宏指令的名字。 宏调用格式: [标号:]宏指令名 [实际参数表] 2.宏扩展 当源程序被汇编时,如果遇到宏调用,汇编程序将宏指令体中的指令汇编成机器指令代码,并将机器代码复制到使用宏调用的地方,取代宏指令名,这一过程称为“宏扩展”。它是由宏汇编程序在汇编时完成的。如果程序中进行了多次宏调用,则宏指令体中的语句会被复制多次。 【例3.22】调用3.21中定义的宏指令,调用语句如下: CLEARX 宏扩展后的结果如下: + PUSH AX + PUSH BX + PUSH CX + PUSH DX + XOR AX, AX + XOR AX, AX + XOR AX, AX + XOR AX, AX 3.6.3 宏定义和宏调用中参数的使用 【例3.23】本例中形式参数出现在操作数的位置,通
原创力文档


文档评论(0)