- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理教程03-2
3.6 子程序设计 把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块供程序使用,就形成子程序 子程序可以实现源程序的模块化,可简化源程序结构,可以提高编程效率 主程序(调用程序)需要利用CALL指令调用子程序(被调用程序) 子程序需要利用RET指令返回主程序 3.6.1 过程定义和子程序编写 汇编语言中,子程序要用一对过程伪指令PROC和ENDP声明,格式如下: 过程名 PROC [NEAR|FAR] …… ;过程体 过程名 ENDP 可选的参数指定过程的调用属性。没有指定过程属性,则采用默认属性 NEAR属性(段内近调用)的过程只能被相同代码段的其他程序调用 FAR属性(段间远调用)的过程可以被相同或不同代码段的程序调用 子程序编写注意事项 ⑴子程序要利用过程定义伪指令声明 ⑵子程序最后利用RET指令返回主程序,主程序执行CALL指令调用子程序 ⑶子程序中对堆栈的压入和弹出操作要成对使用,保持堆栈的平衡 ⑷子程序开始应该保护使用到的寄存器内容,子程序返回前相应进行恢复 ⑸子程序应安排在代码段的主程序之外,最好放在主程序执行终止后的位置(返回DOS后、汇编结束END伪指令前),也可以放在主程序开始执行之前的位置 例3.15 用显示器功能调用输出一个字符的子程序 ;主程序 mov al,‘?’ ;主程序提供显示字符 call dpchar ;调用子程序 ;子程序:显示AL中的字符 dpchar proc ;过程定义,过程名为dpchar push ax ;顺序入栈,保护寄存器 push bx mov bx,0 mov ah,0eh ;显示器0EH号输出一个字符功能 int 10h pop bx ;逆序出栈,恢复寄存器 pop ax ret ;子程序返回 dpchar endp ;过程结束 例3.15源程序 ;wj0315.asm .model small .stack .code start: mov ax,@data mov ds,ax mov al,‘?’ ;主程序提供显示字符 call dpchar ;调用子程序 mov ax,4c00h int 21h 例3.15源程序(续) dpchar proc ;过程定义,过程名为dpchar push ax ;顺序入栈,保护寄存器 push bx mov bx,0 mov ah,0eh ;显示器0EH号输出一个字符功能 int 10h pop bx ;逆序出栈,恢复寄存器 pop ax ret ;子程序返回 dpchar endp ;过程结束 end start 子程序编写注意事项(续) ⑹子程序允许嵌套和递归 ⑺子程序可以与主程序共用一个数据段,也可以使用不同的数据段(注意修改DS),还可以在子程序最后设置数据区(利用CS寻址) ⑻子程序的编写可以很灵活,例如具有多个出口(多个RET指令)和入口,但一定要保证堆栈操作的正确性 ⑼处理好子程序与主程序间的参数传递问题 ⑽提供必要的子程序说明信息 例3.16 显示以“0”结尾字符串的嵌套子程序 ;数据段 msg db Well, I made it !,0 ;代码段(主程序) mov si,offset msg ;主程序提供显示字符串 call dpstri ;调用子程序 例3.16 子程序 ;子程序dpstri:显示DS:SI指向的字符串(以0结尾) dpstri proc push ax dps1: mov al,[si] ;取显示字符 inc si cmp al,0 ;是结尾,则显示结束 jz dps2 call dpchar ;调用字符显示子程序 jmp dps1 dps2: pop ax ret dpstri endp ;子程序dpchar:显示AL中的字符(同例题3.15) 含数据区的子程序 ;子程序HTOASC:十六进制数转换为ASCII码 HTOASC proc push bx mov bx,offset ASCII and al,0fh xlat CS:ASCII ;换码:AL←CS:[BX+AL] pop bx ret ;数据区 ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h db 41h,42h,43h,44h,45h,46h HTOASC endp 多出口子程序 ;子程序HTOASC:十六进制数转换为ASCII码 HTOASC proc and al,0fh cmp al,9 jbe htoasc1 add al,37h ;是A ~ F,加37H ret ;子程序返回 htoasc1: add,30h ;是0 ~ 9,加
您可能关注的文档
- 微控制器实验报告.docx
- 微控课后习题精简.doc
- 微机习题(含答案).doc
- 微机保护硬件发展趋势.ppt
- 微机原理 第三章4.ppt
- 微机原理11_并口8255Aok.ppt
- 微机原理4_微处理器结构ok.ppt
- 微机原理、汇编与接口技术_第四章.ppt
- (2016北师大版)六年级上册数学《圆的复习》课件.ppt
- 微机原理与应用第4章2节2016SGQ.ppt
- 2016-2017学年高中生物第二单元生态工程与生物安全第1章第2节我国的生态工程教案中图版选修3.doc
- 2022-2023学年小升初英语易错点专练06完形填空15篇(广州教科版专版含答案)2.docx
- 期中专项四年级英语下册(含答案)3.docx
- 期末卷(二)(含答案解析)-2022-2023学年高二历史期中期末复习备考必刷题(选择性必修一国家制度与社会治理).docx
- 第4课欧姆定律的应用第一讲欧姆定律实验探究(原卷版).docx
- Unit1限制性定语从句语法讲义人教版高一英语学生版213.docx
- 2023年宁波市初中毕业升学文化考试科学模拟卷(八).docx
- 5.3细胞呼吸的原理和应用课件高一上学期生物人教版必修12.pptx
- 高中政治更好发挥政府作用教学设计.docx
- 体悟民间故事中的幸福--五上《中国民间故事》导读课.docx
文档评论(0)