实验6子程序设计

上传人:pu****.1 文档编号:483889292 上传时间:2023-01-27 格式:DOC 页数:10 大小:97.50KB
返回 下载 相关 举报
实验6子程序设计_第1页
第1页 / 共10页
实验6子程序设计_第2页
第2页 / 共10页
实验6子程序设计_第3页
第3页 / 共10页
实验6子程序设计_第4页
第4页 / 共10页
实验6子程序设计_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《实验6子程序设计》由会员分享,可在线阅读,更多相关《实验6子程序设计(10页珍藏版)》请在金锄头文库上搜索。

1、 实验六 子程序设计实验 一、实验目的 1掌握过程调用指令与过程返回指令的用法; 2掌握主程序与子程序之间的参数传送方法; 3掌握调用子程序时堆栈的变化情况及利用压栈、出栈保护现场的方法; 4掌握嵌套及递归子程序的设计方法。二、实验要求 1仔细阅读教材中有关子程序设计的章节; 2学会编写子程序说明文件; 3学会设置断点检查堆栈指针的变化及堆栈内容; 4学会用DEBUG中的P命令调试子程序; 5学会在子程序设计中保护所用到的寄存器。三、实验内容1用递归子程序设计方法,编写计算N !(0N8)的子程序。要求:N值由键盘输入,N !值以十六进制形式在屏幕上显示。2编制程序,计算3255之间的所有素数

2、之和,并将3255之间的所有素数存放在由DATA开始的连续内存单元中,所有素数之和存放在SUM单元中。要求:判断一个数是否为素数用子程序编写。四、程序清单及程序流程图1、;*阶乘*SSEG SEGMENTSKTOP DB 100 DUP(0)SSEG ENDSDSEG SEGMENTDATA DW 0DATA1 DB 0DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME SS:SSEGSTART: MOV AX,DSEG MOV DS,AX MOV AX,SSEG MOV SS,AX MOV SP,SIZE SKTOP MOV AH,01H

3、INT 21HSUB AL,30H MOV DATA1,AL XORAH,AH MOV BX, AX CALL JIEC MOVDATA,AX CALL QHTOA MOV CX,AXMOV DL,BH MOV AH,02H INT 21H MOV DL,BL MOV AH,02H INT 21H MOV DL,CH MOV AH,02H INT 21H MOV DL,CL MOV AH,02H INT 21H MOV AH,4CH INT 21HJIEC PROC AND BX,BX JZ JIEC1 PUSH BX DEC BX CALL JIEC POP BX MUL BX RETJIE

4、C1: MOV AX,1 RETJIEC ENDPHTOA PROC AND AL,0FH CMP AL,10 JC HTOA1 ADD AL,07HTOA1: ADD AL,30H RETHTOA ENDPBHTOA PROC PUSH CX MOV CH,AL MOV CL,04 SHR AL,CL CALL HTOA MOV AH,AL MOV AL,CH CALL HTOA POP CX RETBHTOA ENDPQHTOAPROCNEAR PUSHAX MOVAL,AH CALL BHTOA MOVBX,AX POPAX CALL BHTOA RETQHTOAENDPCSEG END

5、S END START流程图:结束输出各位调用QHTOA求十六进制显示调用JIEC求阶乘子程序键盘输入N值设置堆栈段指针设置数据段指针设置数据段地址设置堆栈段地址开始 主函数:结束JIEC(N)=1计算JIEC(N)=N*JIEC(N-1)顺序取出保存N保存N,领N=N-1,求JIEC(N-1)N=1?开始 JIEC子程序:YN结束AL+37H输出AL+30H输出AL10?开始QHTOA子程序:YN运行结果:1、2、2、;*素数*DSEG SEGMENTDATA DB 64 DUP(0)SUM DW 0DSEG ENDSSSEG SEGMENT STACKSTK DB 20 DUP(0)SSE

6、G ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG ASSUME SS:SSEGSTART: MOV AX,DSEG MOV DS,AX MOV AX,SSEG MOV SS,AX MOV SP,SIZE STK MOV CL,255 XOR BX,BX LEA SI,DATARST: MOV AL,CL CALL ISSU CMP AH,0 JE NNOT XOR AH,AH ADD BX,AX MOV SI,CL INC SINNOT: DEC CL CMP CL,2 JNE RST MOV SUM,BX MOV AH,4CH INT 21HISSU PRO

7、C NEAR PUSH BX PUSH CX XOR AH,AH MOV CX,AX MOV BL,AL DEC BLSSTR: MOV AX,CX DIV BL CMP AH,0 JE EEND DEC BL CMP BL,1 JNE SSTR MOV AH,1EEND: POP CX POP BX RETISSU ENDPCSEG ENDS END START流程图:255存入CLSI指向存储首地址设置堆栈段指针设置数据段指针设置数据段地址设置堆栈段地址开始主函数:CL=2?CL-1BL是素数?调用ISSU求素数函数YNNY存入SI,SI+1求和结束ISSU子程序流程图:BX入栈保存开始BL赋值CL-1AX除以BLYAH=0?NYBL=1?NBL-1是素数AH = 1不是素数AH = 0BX出栈返回运行结果:1、2、3、

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号