ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:181.92KB ,
资源ID:406862      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/406862.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验报告子程序设计实验.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验报告子程序设计实验.docx

1、实验报告子程序设计实验实验5 子程序实验一实验目的1掌握主程序与子程序之间的调用关系及调用方法;2掌握子程序调用过程中近程调用与远程调用的区别;3掌握通过堆栈转送参数的方法。4. 掌握多模块程序设计方法二实验容1将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。DATAS SEGMENT BUF DB 00000111B,00100001B,00100010B,00000011B,00000101B,10000010B,10010011B,00100100B,11100010

2、B,01010010B CAN DB $-BUF ;定义常量CANDATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASMAIN PROC FAR ;主程序块START: MOV AX,DATAS MOV DS,AX MOV CL,10 LEA SI,BUFLOOP1: ;调用子程序语句 call HEXAC call DISP DEC CAN JNZ LOOP1EXIT: MOV AH,4CH INT 21HMAIN ENDPHEXAC PROC NEAR ;二进制转换成十六进制子程序 MOV BL,SI INC SI RETHEXAC ENDPDI

3、SP PROC NEAR ;显示子程序 MOV CL,4 MOV CH,2MOVE: ;移位语句 ROL BL,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,9 JBE PRINT ADD DL,07HPRINT: MOV AH,02H ;显示语句 INT 21H DEC CH JNZ MOVE MOV DL, MOV AH,02H INT 21H RET DISP ENDPCODES ENDS END START2编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符b的个数.子程序的参数是字符串的首地址TABLE,字符串长

4、度N及字符”b”.子程序返回字符b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。DATA SEGMENT STR1 DB 0ah,0dh,PLEASE INPUT YOUR STRING:$ STR2 DB 0ah,0dh,THE NUMBER OF b is:$ TABLE DB 50, ? ,50 DUP(?),$DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATASTART: MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,9 INT 21H LEA DX,

5、TABLE MOV AH,0AH INT 21H LEA SI , TABLE MOV CL, SI+1 MOV CH, 0 INC SI INC SI MOV AL,b MOV AH,0 PUSH SI PUSH CX PUSH AX CALL FAR PTR CHECK POP AX MOV CL,AL LEA DX,STR2 MOV AH,9 INT 21H MOV DL,CL AND DL, 0FH CMP DL,9 JBE CAN ADD DL,7CAN: ADD DL,30H MOV AH,2 INT 21H EXIT: MOV AH,4CH INT 21HCODE ENDS SC

6、ODE SEGMENT ASSUME CS:SCODECHECK PROC FAR PUSH BP MOV BP,SP MOV SI,BP+10 MOV CX, BP+8 MOV AX, BP+6 XOR AH, AHAGAIN: CMP AL,SI JNE CAN1 INC AHCAN1: INC SI LOOP AGAIN MOV AL, AH MOV BP+10,AX POP BP RET 4CHECK ENDPSCODE ENDS END START3. 请编写一个程序来实现简单的程序菜单显示。(采用多模块程序设计方法)显示一个菜单要求用户从下表中选择:(1) HEXAC GAME (

7、对应程序1)(2) CHAR STATISTICS PROGRAM(对应程序)(3) PRESS “ESC” TO QUIT用户作出选择13时,显示输出要执行操作的名字,如“Your selection is 1,the program will execute HEXAC NUMBER GAME!”然后转向相应的程序去执行,执行结束前进行退出的判断,显示一个提示信息“will you continue program really?(Y:N)”要求用户从键盘键入字符,若是“Y”键,则继续程序的执行,若是“N”键,则返回到菜单。若用户选择3,要求程序显示提示信息“Please press ES

8、C key to exit!”,并能按要求正确退出。DATAS SEGMENT OPT DW YI DW ER menu DB 0DH,0AH,THE MENU: ;显示菜单 DB 0DH,0AH,(1)HEXAC GAME ;对应程序1 DB 0DH,0AH,(2)CHAR STATISTICS PROGRAM;对应程序 DB 0DH,0AH,(3)PRESS ESC TO QUIT$ BUF DB 00000111B,00100001B,00100010B,00000011B,00000101B,10000010B,10010011B,00100100B,11100010B,0101001

9、0B CAN DB $-BUF ;定义常量CAN str1 DB 0DH,0AH,Your selection is 1,the program will execute HEXAC GAME!$ str2 DB 0dh,0ah,Your selection is 2,the program will execute CHAR STATISTICS PROGRAM!$ str3 DB 0DH,0AH,will you continue program really?(Y:N)$ str4 DB 0DH,0AH,Please press ESC key to exit!$ TABLE DB 50

10、, ? ,50 DUP(?),$ char1 db 0ah,0dh,PLEASE INPUT YOUR STRING:$ char2 db 0ah,0dh,THE NUMBER OF b is:$ DATAS ENDSCODES SEGMENTMAIN PROC FAR ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX XOR DI,DI sub bx,bx xor si,si LEA DX,menu ;显示主菜单 MOV AH,9 INT 21H mov dl,0dh ;显示回车 mov ah,2 int 21h MOV DL,0AH

11、 ;显示换行 MOV AH,2 INT 21H MOV AH,1 ;输入选项 INT 21H CMP AL,1 JE YI CMP AL,2 JE ER CMP AL,3 JE QUITYI: MOV DI,0 lea dx,str1 mov ah,9 int 21h MOV CL,10 LEA SI,BUF CALL HEXACLOOP1: ;调用子程序语句 call HEXAC call DISP DEC CAN JNZ LOOP1 JMP CONTINUEER: MOV DI,02H lea dx,str2 mov ah,9 int 21h LEA DX,char1 MOV AH,9 I

12、NT 21H LEA DX,TABLE MOV AH,0AH ;输入字符串 INT 21H LEA SI , TABLE MOV CL, SI+1 MOV CH, 0 ;CX中为字符串长度 INC SI INC SI ;SI指向串首址TABLE MOV AL,b MOV AH,0 ;AX中为待查字符 PUSH SI PUSH CX PUSH AX ; 参数送堆栈 CALL CHECK POP AX ;统计个数在AL中 MOV CL,AL LEA DX,char2 ;显示结果 MOV AH,9 INT 21H MOV DL,CL AND DL, 0FH CMP DL,9 JBE CAN3 ADD

13、 DL,7CAN3: ADD DL,30H MOV AH,2 INT 21H ;显示统计个数 JMP CONTINUEQUIT: LEA DX,str4 ;退出的子程序 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,1BH ;按ESC退出 JE EXIT CONTINUE:LEA DX,str3 ;用户是否继续执行当前程序 MOV AH,9 INT 21H MOV AH,1 INT 21H CMP AL,Y ;按y继续,按n退出,不需区分大小写 JE YES CMP AL,y JE YES CMP AL,N JE START CMP AL,n JE STAR

14、TYES: JMP optDI ;继续运行当前子程序EXIT: MOV AH,4CH;退出 INT 21H MAIN ENDPCODES ENDS HEXACCODES SEGMENT ASSUME CS:HEXACCODESHEXAC PROC FAR ;二进制转换成十六进制子程序 MOV BL,SI INC SI RETHEXAC ENDPHEXACCODES ENDSDISPCODES SEGMENT ASSUME CS:DISPCODESDISP PROC FAR ;显示子程序 MOV CL,4 MOV CH,2MOVE: ;移位语句 ROL BL,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,9 JBE PRINT ADD DL,07HPRINT: MOV AH,02H ;显示语句 INT 21H DEC CH JNZ M

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1