1、汇编语言大作业辽宁师范大学计算机与信息技术学院综合性实验报告课程名称: 汇编语言 实验题目: 菜单程序设计 学生姓名: 孙蕾 专业: 计算机科学与技术 学号: 20101118050005 实验日期: 2012.5.10 实验成绩: 一、 实验目的 设计菜单程序,实现各种功能,设计分支程序,重键盘输入字符。二、 实验内容(1)参考示例5-8设计菜单程序,包含示例5-2、示例5-3及退出三个菜单项。将示例5-2改为从键盘输入X;示例5-3增加显示功能,显示出统计个数。(P120、P101、P106)(2)选作:参考P213第9章示例9-3,在屏幕上清屏、开窗口,将菜单程序带颜色地显示在窗口中。提
2、示:可利用P223宏库9-4.mac中的功能。 三、 实验过程(含结果抓图)1.输入程序代码data segment x dw ? y dw ? cc db 0ah,0dh,Y=$ mess0 db 0ah,0dh,0dh,*MENU* db 0ah,0dh, *1. calculate Y=5X-18: * db 0ah,0dh, *2. count the numbers of a string: * db 0ah,0dh, *3. exit * db 0ah,0dh, * please select. * db 0ah,0dh, * db 0ah,0dh, $ mess1 db 0ah,
3、0dh,0dh,please input a string :$ c db 0ah,0dh,0dh,please input a number :$ mess2 db 0ah,0dh,numb:$ mess3 db 0ah,0dh,capi:$ mess4 db 0ah,0dh,lett:$ mess5 db 0ah,0dh,0dh,thank you for using!$ numb db 10 dup(?) capi db 10 dup(?) lett db 10 dup(?)data endscode segment assume cs:code,ds:datastart: mov ax
4、,data mov ds,axlet0:mov dx,offset mess0 mov ah,9 int 21h mov ah,1 int 21h cmp al,1 jz prog1 cmp al,2 jz prog2 jmp prog3prog1: mov ax,data mov ds,ax mov dx,offset c mov ah,9 int 21h inx: mov ah,1 int 21h cmp al,30h jl inx cmp al,3Ah jnl inx sub al,30h mov ah,0 mov x,ax mov al,5 imul x sub ax,18 jns l
5、eta neg ax leta:mov y,ax mov cx,0 mov bx,10 letb:mov dx,0 inc cx idiv bx push dx cmp ax,0 jnz letb mov dx,offset cc mov ah,9 int 21h letc: pop ax add ax,0030h mov dl,al mov ah,2 int 21h dec cx cmp cx,0 jnz letc jmp let0prog2:mov ax,data mov ds,ax mov dx,offset mess1 mov ah,9 int 21h let1:mov ah,1 in
6、t 21h cmp al,0dh jz exit1 test al,40h jz let2 test al,20h jz let3 mov lettbx,al inc bx jmp let1 let3:cmp al,5ah ja exit1 mov capisi,al inc si jmp let1 let2:cmp al,0 jb exit1 cmp al,9 ja exit1 mov numbdi,al inc di jmp let1exit1:mov ax,data mov ds,ax mov dx,offset mess2 mov ah,9 int 21h add di,30h mov
7、 dx,di mov ah,2 int 21h mov dx,offset mess3 mov ah,9 int 21h add si,30h mov dx,si mov ah,2 int 21h mov dx,offset mess4 mov ah,9 int 21h add bx,30h mov dx,bx mov ah,2 int 21h jmp let0prog3:mov dx,offset mess5 mov ah,9 int 21h mov ah,4ch int 21hcode endsend start2.进行代码调试四、 实验结果分析(运行过程中出现的问题、如何解决的;实验过程
8、中的经验及教训)1. 记不住关键的程序命令,每次再想执行的之后得看书之后输入。2. 菜单分支名称重复,很容易记错,跳转出错。五、 实验拓展 1. 代码:include 9-3.macdata segment x dw ? y dw ? cc db 0ah,0dh,Y=5x-18=$ mess0 db 0ah,0dh,0dh, *MENU* db 0ah,0dh, *1. calculate Y=5X-18: * db 0ah,0dh, *2. count the numbers of a string: * db 0ah,0dh, *3. exit * db 0ah,0dh, * please
9、 select. * db 0ah,0dh, * db 0ah,0dh, $ mess1 db 0ah,0dh,0dh,please input a string :$ c db 0ah,0dh,0dh,please input a number :$ mess2 db 0ah,0dh,numb:$ mess3 db 0ah,0dh,capi:$ mess4 db 0ah,0dh,lett:$ mess5 db 0ah,0dh,0dh,thank you for using!$ numb db 10 dup(?) capi db 10 dup(?) lett db 10 dup(?) mess
10、 db 29,32 dup(?) cont db ?data endscode segment assume cs:code,ds:data start: mov ax,data mov ds,ax clearsc clearsw reptt:mov ah,2 mov dh,8 mov dl,30 mov bh,0 int 10h mov ah,9 mov dx,offset mess0 int 21hlet0: mov ah,1 int 21h cmp al,1 jz prog1 cmp al,2 jz prog2 jmp prog3prog1: mov ax,data mov ds,ax
11、mov dx,offset c mov ah,9 int 21h inx: mov ah,1 int 21h cmp al,30h jl inx cmp al,3Ah jnl inx sub al,30h mov ah,0 mov x,ax mov al,5 imul x sub ax,18 jns leta neg ax leta:mov y,ax mov cx,0 mov bx,10 letb:mov dx,0 inc cx idiv bx push dx cmp ax,0 jnz letb mov dx,offset cc mov ah,9 int 21h letc: pop ax ad
12、d ax,0030h mov dl,al mov ah,2 int 21h dec cx cmp cx,0 jnz letc jmp let0prog2:mov ax,data mov ds,ax mov dx,offset mess1 mov ah,9 int 21h let1:mov ah,1 int 21h cmp al,0dh jz exit1 test al,40h jz let2 test al,20h jz let3 mov lettbx,al inc bx jmp let1 let3:cmp al,5ah ja exit1 mov capisi,al inc si jmp le
13、t1 let2:cmp al,0 jb exit1 cmp al,9 ja exit1 mov numbdi,al inc di jmp let1exit1:mov ax,data mov ds,ax mov dx,offset mess2 mov ah,9 int 21h add di,30h mov dx,di mov ah,2 int 21h mov dx,offset mess3 mov ah,9 int 21h add si,30h mov dx,si mov ah,2 int 21h mov dx,offset mess4 mov ah,9 int 21h add bx,30h m
14、ov dx,bx mov ah,2 int 21h jmp let0prog3:mov dx,offset mess5 mov ah,9 int 21h mov ah,4ch int 21hcode endsend start9-3.mac:clearsc macro mov ah,06h mov al,0 mov bh,0f0h mov ch,0 mov cl,0 mov dh,23 mov dl,79 int 10h mov dx,0 mov ah,2 int 10h endmclearsw macro mov ah,06h mov al,0 mov bh,27h mov ch,8 mov cl,30 mov dh,22 mov dl,66 int 10h endm 2.运行结果
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2