南昌大学实验报告
学生姓名: 学 号: 专业班级:
√ 设计 □ 创新 实验日期: 11.24 实验成绩: 实验类型:□ 验证 □ 综合 □
实验3 分支程序实验
一.实验目的
1. 掌握单分支、双分支、多分支程序的设计方法;
2. 掌握利用DEBUG或CODEVIEW修改参数、检查结果的方法; 1. 熟悉汇编语言源程序的编辑、汇编、连接及调试过程。
二.实验内容
1.猜数程序,预设一数字字符M,从键盘输入一个数字字符N,判断:若N BIG”;若N >M 则显示“TOO SMALL”;否则显示“YOUR ARE RIGHT” 2. 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示“IT IS A DIGITAL”; 若为A-Z或a-z字符,均显示“IT IS A LOWCASE LETTER”;若是回车字符 示“NOMATCH!,PROGRAM TERMINATED!” 4. 上述程序1、2、3分别完成后请编写一个程序来实现简单的程序菜单显示。(采用 地址跳跃表法实现) 显示一个菜单要求用户从下表中选择: (1) GUESS NUMBER GAME (对应-->程序1) (2) CHAR SELECTION PROGRAM (对应-->程序2) (3) PASSWORD PROGRAM (对应-->程序3) (4) PRESS “ESC” TO QUIT 用户作出选择1~3时,显示输出要执行操作的名字,如“Your selection is 1,the program will execute GUESS NUMBER GAME!”然后转向相应的程序去执行,执行结束前进行退出的判断,显示一个提示信息“will you continue program really? (Y:N)”要求用户从键盘键入字符,若是“Y”键,则继续程序的执行,若是“N”键,则返回到菜单。若用户选择4,要求程序显示提示信息“Please press ESC key to exit!”,并能按要求正确退出。 三.实验要求 1.编写实验内容要求的四个程序; 2.熟悉源程序汇编、连接命令的使用方法。 3.认真完成上述习题,采用DEBUG或CODEVIEW进行调试,编辑实验方案,运行程序,并调试程序,写出正确结果以及遇到的问题和解决方法。 4.实验过程请认真记录,并对结果进行分析写出实验体会或意见。 四.实验环境 PC微机 DOS操作系统或 Windows 操作系统 MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境 五.实验步骤 1. 用EDIT或其它编辑软件,编写.ASM源程序, 2.对其进行汇编及连接,产生.EXE文件。 3. 在MS-DOS下运行这两个.EXE文件。 4.对.EXE文件进行调试运行。 (1)用DEBUG调试运行,学会通过命令R、U、D等命令观察数据变化,学会T、G命令来实现程序的单步或断点调试调试。 (2)用CODEVIEW调试运行,学会使用该集成环境中的各个窗口综合观察寄存器、内存单元等变化,学会使用功能键进行单步或断点调试。 六.实验报告要求 1.画出四个程序的流程图,若要独立编写程序,应列出相应的程序清单。程序中应有相应的注释信息。 2.在报告中说明本实验是如何利用DEBUG或CODEVIEW进行调试的。 答:未使用debug功能,直接在MS-DOS环境下运行调试修改。 3.编辑实验方案,运行程序,并调试程序,写出正确结果以及遇到的问题和解决方法。 程序01:GUESS NUMBER GAME data segment a db 'GUESS NUMBER GAME',0DH,0AH DB 'please input data:','$' b equ 50 message1 db 0DH,0AH, 'IT IS TOO SMALL$' message2 db 0DH,0AH, 'IT IS TOO BIG$' message3 db 0DH,0AH, 'CONGRATULATIONS!YOU ARE RIGHT!!$' data ends stack segment db 10 dup(?) stack ends code segment assume ds:data,cs:code,ss:stack start: mov ax,data mov ds,ax mov ah,9 lea dx,a int 21h newchar:mov ah,7 int 21h cmp al,13 je lab cmp al,27 je exit mov dl,al mov ah,2 int 21h sub al,30h cbw xchg ax,bx mov cx,10 mul cx xchg ax,bx add bx,ax jmp newchar lab: mov ax,bx mov bx,0 cmp ax,b jge display1 mov ah,9 lea dx,message1 int 21h mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h jmp newchar display1:cmp ax,b je display2 mov ah,9 lea dx,message2 int 21h jmp newchar display2:mov ah,9 lea dx,message3 int 21h exit: mov ah,4ch int 21h code ends end start 运行结果: 程序02:CHAR SELECTION PROGRAM data segment message1 db 0dh,0ah,'IT IS A DIGITAL','$' message2 db 0dh,0ah,'IT IS A LOWCASE LETTER','$' data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,ax input:mov ah,7 int 21h cmp al,13 je exit mov dl,al mov ah,2 int 21h cmp al,49 jb input cmp al,57 ja one mov ah,9 lea dx,message1 int 21h