- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验4子程序与多模块程序设计
一、实验目的
1、掌握子程序的定义、调用及返回方法;
2、熟悉主程序与子程序间几种参数传递方法;
3、深刻理解子程序的调用与返回对堆栈的影响;
4、熟悉多模块程序设计方法,了解多模块间参数传递方法。
二、使用的工具软件及环境
TASM 5.0软件包三、实验内容(详见实验报告4)
1、上机调试程序,指出程序中尚存在的错误,并分析该程序要实现的功能。
2、上机运行程序,该程序实现求某数据区中无符号数据最大值,观察程序执行时堆栈的变化,并画出 以下5个堆栈状态图。(1) CALL MAX指令执行之前;(2) CALL MAX指令执行之后;(3)保 护现场之前;(4)恢复现场之后;(5)执行指令POP SMAX之后。
3、阅读并运行程序,回答问题。
4、编写程序:在主程序中从键盘输入一个以飞”结尾的字符串,存储在变量BUF中,子程序把字符串中 的大写字母改为小写字母,小写字母改为大写字母,最后在主程序中显示该字符串。要求:子程序和 主程序在不同的源程序文件中。
四、实验指导1、子程序设计要点
子程序的定义
子程序的调用和返回
保护现场和恢复现场
主程序与子程序之间的信息传递
(1)子程序的定义伪指令子程序名 PROC [NEAR / FAR]
子程序名ENDP
①伪指令PROC和ENDP必须成对出现。
子程序定义写在代码段内,子程序体中至少包含一条返回指令RET。
NEAR (默认)说明该子程序只能被同一个代码段里的程序调用,称为近程子程序。近程子程序 调用和返回时只需要改变IP寄存器的值,CS寄存器的值保持不变。
④FAR说明子程序能够被不同代码段的程序调用,也能被同一代码段的程序调用,称为远程子程序。远 程子程序调用和返回时,需要同时改变CS和IP寄存器的值。
⑤ 可将主程序定义为FAR型过程,看作是DOS调用的一个过程。
(2)子程序的调用与返回指令
段内直接调用
CALL 子程序名
段内间接调用
CALL REG16/MEM16
段间直接调用
CALL FAR PTR子程序名
段间间接调用
CALL MEM32
返回指令
RET
带立即数的返回指令
RET D16
(3)现场的保护与恢复当子程序和主程序使用相同的寄存器,为了防止子程序破坏主程序中寄存器内容,须在子程序开始 时保存寄存器内容,子程序结束前恢复寄存器内容。
方法:利用堆栈对寄存器内容进行保护与恢复。即执行PUSH指令保护寄存器内容,执行POP 指令恢复寄存器内容。
特别注意的是:现场保护时寄存器出现的顺序与现场恢复时寄存器出现的顺序相反,且保护的寄存 器个数与恢复的寄存器个数要相同。
(4)主程序与子程序间参数传递方法
约定寄存器法
约定存储单元法
堆栈法
地址表法例1:编写一个子程序,以ax为入口参数,把AX中的各个二进制位颠倒次序后还放回AX中。例如, 入口参数处理后 AX 应为 lOOlOllllOOOHOlBo
INVERT PROC PUSH CX PUSH BX MOV CX, 16 NEXT: ROLAX, 1
RCRBX, 1
LOOP NEXT MOV AX, BX POP BX POP CX RET INVERTENDP例2:从键盘输入一个字符串(长度<80),若该字符串不包括非数字字符,则显示“YES 否显示“NO”。 设计一个过程,判断字符串是否为数字串。 DATA SEGMENT STRING DB 80, ?, 81 DUP(?) YESDB ODH, OAHJYES. S
NODB ODH, OAH, NO即DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOVAX, DATA
MOVDS, AXMOVAH, OAH
LEADX, STRINGINT21H
MOVCL, STRING+1MOVCH, 0
MOV
SI, 2
CALL
EXAM
CMP
AH,0
JE
NOMESS
LEA
DX, YES
JMP
DISP
NOMESS:
LEA
DX, NO
DISP:
MOV
AH, 09H
INT
21H
MOV
AX, 4C00H
INT
21H
EXAM
PROC
MOV
AH, 1
NEXT:
MOV
AL, STRING [SI]
CMP
AL, O
JB
EXIT
CMP
AL,9
JA
EXIT
INC
SI
LOOP
NEXT
JMP
EXIT1
EXIT:
MOV
AH,0
EXIT1:
RET
EXAM
ENDP
CODE
ENDS
END
START
例3:编写程序,判断某年是否是闰年。年份从键盘输入,输出是否是闰年的信息。
INCLUDE YLIB.HDATA SEGMENT;定义数据段
MESSO DB ODH,
您可能关注的文档
- 爱的力量作文500字六年级.docx
- 爱与时间同行初三作文800字.docx
- 治线磷(CAS:297-97-2)理化性质及危险特性表.docx
- 氟化锆(CAS:7783-64-4)理化性质及危险特性表.docx
- 氟化氢(CAS:7664-39-3)理化性质及危险特性表.docx
- 植树造林施工方案.docx
- 未来的什么作文【优秀7篇】.docx
- 智慧教室设计方案.docx
- 春天来了作文一年级八篇.docx
- 新冠什么标准学校停课.docx
- 【物理试卷】长沙市2025年新高考适应性考试 .pdf
- 【深度解析高考真题】2025年全国高考英语试卷听力+原文+答案(新课标.pdf
- 【校级联考】上海市某校2025-2026学年-有答案-七年级(五四学制)12月月 .pdf
- 现金流量表与资金等.ppt
- 【红对勾】2025高考生物一轮总复习 第5章 第2节 染色体变异 高考真题.pdf
- 【考研经验】北京林业大学风景园林2025年考研复试经验分享 .pdf
- 【红对勾】2025高考生物一轮总复习 第5章 第2节 染色体变异 高考真题.pdf
- 【精编】2025年高考全国考前适应卷语文(附解析)答案 .pdf
- 【红对勾】2025高考生物一轮总复习 第5章 第2节 染色体变异 高考真题.pdf
- 【精品初三化学试卷】2025-2026学年天津市南开区九年级(上)期末化学.pdf
文档评论(0)