- 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章基本编程技术 4
3.3 顺序程序设计
3.4 分支程序设计
3.5 循环程序设计
3.6 子程序设计;教学提示;把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块供程序使用,就形成子程序。
子程序可以实现源程序的模块化,可以简化源程序结构,可以提高编程效率。;3.6.1 子程序概念;子程序调用:进入子程序的操作;
子程序返回:子程序返回到主程序的操作;
主程序与子程序相互传递的信息称为参数 ;;3.6.2 子程序指令;一般格式:CALL sub ;sub为子程序的入口
根据子程序入口的寻址方式,子程序调用有四类。
①段内直接调用
子程序的偏移地址直接由CALL指令给出。
格式:CALL near_proc
CALL执行时,它首先将IP内容压栈,
1. SP←SP-2, 2. SS:[SP]←IP
然后把指令中给出的位移量加到IP上。
(3.IP ← near_proc)
注:汇编以后的调用地址是相对于CALL的下一条指令的位移量。
例:CALL 0120H ;子程序偏移地址由指令给出;位移量由汇编程序在汇编时进行计算,如下例:
CS:0102 CALL 0120H ;3字节
CS:0105 ……
则位移量为: 0120-0105H=001BH
于是CALL 0120H的机器码为E8 1B 00
CS:0102 E8
CS:0103 1B CALL 0120H
CS:0104 00
CS:0105 …… ;子程序的偏移地址在寄存器或存储器中。
格式:CALL mem16/reg16
CALL执行时,它首先将IP内容压栈,
1. SP←SP-2, 2. SS:[SP]←IP
然后把指定的寄存器/存储器的内容送入IP。
3. IP ← mem16/reg16
例:
CALL AX ;调用地址由AX给出
CALL WORD PTR[SI] ;调用地址由存储器给出;CALL;子程序的段地址和偏移地址直接由CALL指令给出。
格式:CALL far_proc ;far_proc为远过程的地址
指令的操作为:
SP←(SP)-2
SS:(SP)←(CS) ;CS压栈
CS←段地址
SP←(SP)-2
SS:(SP)←(IP) ;IP压栈
IP←偏移地址
例:CALL 2000H:1000H;子程序的段和偏移地址为存储器的连续4个单元中的内容。
格式:CALL mem32
指令的操作为:
SP←(SP)-2
((SP)+1,(SP))←(CS) ;CS压栈
CS←(mem32+2)
SP←(SP)-2
((SP)+1,(SP))←(IP) ;IP压栈
IP←(mem32)
例:CALL DWORD PTR[DI]
调用地址在[DI],[DI]+1,[DI]+2,[DI]+3四个存储单元中。低字内容为偏移地址,高字内容为段地址。;子程序返回指??;subname proc ;具有缺省属性的subname过程
push ax ;保护寄存器:顺序压入堆栈
push bx ;ax/bx/cx仅是示例
push cx
... ;过程体
pop cx ;恢复寄存器:逆序弹出堆栈
pop bx
pop ax
ret ;过程返回
subname endp ;过程结束;ALDISP PROC ;实现al内容的显示
PUSH AX ;过程中使用了AX、CX和DX
PUSH CX
PUSH DX
PUSH AX ;暂存ax
MOV DL,AL ;转换al的高4位
MOV CL,4
SHR DL,CL
OR DL,30h ;al高4位变成3
CMP DL,39h
JBE ALDISP1
ADD DL,7 ;是0Ah~0Fh,其ASCII码还要加上7
ALDISP1 :MOV AH,2 ;显示
INT 21H; POP DX ;恢复原AX值到DX
AND DL,0FH ;转换AL的低4位
OR DL,30H
CMP DL,39H
JBE ALDISP2
ADD DL,7
ALDISP2: MOV AH,2 ;显示
INT 21H
POP DX
POP CX
POP AX
RET ;过程返回
ALDISP ENDP; ... ;主程序,
loop outlp ;外循环尾
mov bx,offset array ;调用程序段开始
mov cx,count
displp: mov al,[bx]
call ALDISP ;调用显示过程
mov
您可能关注的文档
最近下载
- 某局学习教育总结.docx VIP
- 医保重复收费整改报告.docx VIP
- 有买卖点的期货指标博易大师指标公式源码信管家指标博易大师期货软件指标.doc VIP
- 附件下载:盈嘉合生(成都)生物技术有限公司合成生物学技术平台项目环评报告表.pdf VIP
- 分级诊疗制度解读课件PPT.ppt
- 20170913磁悬浮、离心机、螺杆机、多联机之间的对比.doc VIP
- 个人租房安全免责协议书范本(通用7篇).docx VIP
- 城市公园绿化养护施工进度及保障措施.docx VIP
- 八上语文必考古诗词睡前默写 19天.pdf VIP
- 2018下半年事业单位联考《综合应用能力》A类真题及答案.pdf VIP
原创力文档


文档评论(0)