- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                高级汇编语言和模块化程序设计
                    第6章 高级汇编语言和模块化程序设计 6.1 子程序  6.2 宏  6.3 多模块程序设计  6.4 结构和记录 6.1 子程序 1  堆栈 2  子程序的概念 3  子程序格式和有关指令 	子程序的格式 	调用与返回指令 4  子程序设计方法 5 子程序的嵌套与递归调用 6  子程序应用举例 1  堆栈 进栈/出栈指令 寄存器入栈 寄存器出栈 进栈/出栈指令 入栈指令 语句格式: PUSH  R16|M16|SEG 功能:堆栈指针减2,将寄存器、段寄存器或存储器中的一个字数据压入堆栈。 出栈指令 语句格式: POP R16|M16|SEG 功能: 将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。  寄存器入栈 格式:  PUSHA     功能:所有16位寄存器(AX、BX、CX、DX、SI、DI、SP、BP)依次入栈,SP做相应的移动。指令执行后, ([SP])-16→ SP  格式:  PUSHAD     功能:所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP)依次入栈,SP做相应的移动。指令执行后, ([SP])-32→ SP   寄存器出栈 格式:  POPA     功能:栈顶内容依次出栈存于各16位寄存器(AX、BX、CX、DX、SI、DI、SP、BP)中,同时,SP做相应的移动。指令执行后, ([SP])+16→ SP  格式:  POPAD     功能:栈顶内容依次出栈存于各32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP)中,同时, SP做相应的移动。指令执行后, ([SP])+32→ SP   PUSHA和POPA的执行图示 2  子程序的概念 	在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 	调用子程序的程序称为主调程序或主程序。  子程序的特点 	1、功能独立 	2、通用性 	3、可浮动性:子程序可放在存储区任意地址 	4、可递归性:子程序调用其自身 	5、可重入性:子程序可被中断,在中断处理中又被中断服务程序调用,且都能提供正确结果。  子程序的优点 	1、简化程序设计过程,节省设计时间 	2、缩短程序长度,节省汇编时间和程序执行空间 	3、增加程序可读性,便于修改与调试 	4、方便程序模块化、结构化和自顶向下程序设计方法 调用与返回指令 过程的正确执行由子程序的正确调用和返回保证。  主程序中, 通过CALL指令完成子程序调用,将CALL指令的下一条地址入栈保存,并修改IP为子程序的入口地址, 即转子程序处执行。  子程序中, 通过RET指令完成子程序的返回, IP为栈顶出栈的内容, 即转到主程序中调用语句的下一条语句处执行。    1)段内调用与返回  2)段间调用与返回 调用与返回指令 1)段内调用与返回			 * 调用格式						 CALL  [NEAR  PTR]  子程序名 功能: PUSH (IP),  (IP)?子程序入口的偏移地址		  CALL  WORD  PTR  通用寄存器或存储器 功能: PUSH(IP) ,  (IP)?(IP)+D16  注意: 定义子程序的要求子程序是NEAR型, 且与调用程序定义在同一代码段内  * 返回			功能 RET		(IP)?POP( ) 		  RET    EXP	(IP)?POP( ), (SP)?(SP或ESP)+D16  调用与返回指令 2)段间调用与返回 * 调用格式 CALL  [FAR  PTR]  子程序名 功能: PUSH(CS), PUSH (IP),  (IP)?子程序入口的偏移地址		  CALL  DWORD  PTR  存储器 功能:PUSH(CS), PUSH(IP), (IP)?(EA) 				              (CS) ? (EA+2或4)		  * 返回			 RET	 功能:(IP)?POP(), (CS)?POP() 	  RET    表达式	 功能:(IP)?POP(), (CS)?POP()          (SP或ESP)?(SP或ESP) +D16 子程序的调用与返回 题子程序可以具有多个出口 HTOASC	proc ;将AL低4位表达的一位16进制数转换为ASCII码 	and al,0fh 	cmp al,9 	jbe htoasc1 	add al,37h	;是0AH~0FH,加37H 	ret	;子程序返回 htoasc1:	add al,30h	;是0~9,加30H 	ret	;子程序返回 HTOASC	endp 子程序的格式 
                您可能关注的文档
最近下载
- 2023年东胜区妇幼保健院护士招聘笔试高频试题摘选含答案详解.docx VIP
- 2025年河北水务有限公司公开招聘运行管理人员85人笔试备考题库及答案解析.docx VIP
- 成人经膀胱腹内压测量的最佳证据总结PPT.pptx VIP
- 体质 体质学说的应用.ppt VIP
- 2023年东胜区人民医院护士招聘笔试高频试题摘选含答案详解.docx VIP
- 2025年河北水务有限公司公开招聘运行管理人员85人笔试参考题库附答案解析.docx VIP
- 机动车查验工作规范(试行).pdf VIP
- 个人简历模板表格简历模板免费下载.docx VIP
- 电大高级财务会计历年来试题及答案.doc VIP
- 拼多多持平投产比计算公式(1).xlsx VIP
 原创力文档
原创力文档 
                        

文档评论(0)