- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验六子程序设计实验
一、实验目的
1.掌握过程调用指令与过程返回指令的用法;
2.掌握主程序与子程序之间的参数传送方法;
3.掌握调用子程序时堆栈的变化情况及利用压栈、出栈保护现场的方法;
4.掌握嵌套及递归子程序的设计方法。
二、实验要求
1.仔细阅读教材中有关子程序设计的章节;
2.学会编写子程序说明文件;
3.学会设置断点检查堆栈指针的变化及堆栈内容;
4.学会用DEBUG中的P命令调试子程序;
5.学会在子程序设计中保护所用到的寄存器。
三、实验内容
1.采用一般子程序设计方法和递归子程序设计方法,编写计算Xn的子程序
要求:X值与n值由键盘输入,计算结果以十六进制形式在屏幕上显示。
2.编写程序,完成一位十六进制数的加、减、乘、除运算。
要求:从键盘输入参加运算的一位十六进制数,运算结果以十六进制形式在屏幕上显示,加、减、乘、除运算要用子程序编写。
四、解题思路
1.对于实验内容1,X值和n的值可以利用INT 21H的1号功能从键盘上输入,计算结果利用INT 21H的2号功能从键盘上输出。可以用递归子程序实现Xn(次幂)的计算;
2.对于实验内容2,键盘输入的数和运算符号,输入的运算符号和’+’,’-’,’*’,’/’比较,与那个符号相等就转去执行相应的子程序。子程序的结果可以都把出口条件设置为相同的寄存器,这样便于程序输出结果。
五、编程实现
5.1 内容1
子程序说明文件如下:
(1)子程序名:CIMI;
(2)子程序功能:计算X^n;
(3)入口条件:X的值放在DL中;
(4)出口条件:X^n值在AX中;
(5)受影响的寄存器:AX,BX和标志寄存器F。
程序清单如下:
DSEG SEGMENT
RLT DW 0
DSEG ENDS
SSEG SEGMENT STACK
SKTOP DB 100 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG
ASSUME DS:DSEG
ASSUME SS:SSEG
START: MOV AX,DSEG
MOV DS,AX
MOV AX,SSEG
MOV SS,AX
MOV SP,SIZE SKTOP
MOV AH,01H ;输入X
INT 21H
SUB AL,30H
MOV DL,AL ;保存X在DL中
PUSH DX
MOV DL,^ ;输出符号‘^’
MOV AH,02H
INT 21H
POP DX
MOV AH,01H ;输入n
INT 21H
SUB AL,30H
MOV BL,AL ;保存n在BL中
XOR BH,BH ;BH清零
PUSH DX
MOV DL,= ;输出‘=’号
MOV AH,02H
INT 21H
POP DX
MOV AL,DL ;默认的入口条件AL存X数据
CALL CIMI ;调用子函数
MOV RLT,AX ;保存结果在RLT单元
MOV BL,AL ;保存结果便于输出
MOV BH,AL
MOV CL,4
SHR BH,CL
MOV DL,BH ;输出结果高四位
CMP DL,9
JNA SHU1
ADD DL,7
SHU1: ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,BL ;输出结果低四位
AND DL,0FH
CMP DL,9
JNA SHU2
ADD
文档评论(0)