《汇编语言程序设计课程设计》指导书
2 课程设计内容、步骤及要点
typetest.asm是一个功能相对简单的打字练习程序,要求学生在理解源程序的基础上,增添更多的功能模块,使程序更具实用性。
2.1 课程设计内容
本课程设计包含两大部分内容:设计报告和设计软件。其中设计软件在题目验收时
由指导教师检查,设计报告作为书面材料提交。
2.2 基本任务
1.认真阅读“typetest.asm”源程序, 理解程序每一条指令在程序中的作用。绘制程
序流程图(简略总图,各模块详细流程图),给程序中的关键语句(后跟分号)作注释;
2.设置输入界面,用户输入密码后才能进入主菜单; 3.修改主菜单,在主菜单上显示当天日期;
4.修改主菜单,增加可供用户选择难度级别的选项; 5.为用户打分,正确输入字母使用时间越少,得分越高;
6.修改程序,在屏幕右上角显示用户得分、已输入字母数、正确数;
7.将程序中的“置光标位置”程序段落用宏调用完成,添加“置光标位置”宏定义。
2.3 扩展任务
1.设置限定时间,到达该时间,用户尚未得到要求的分数时,游戏停止; 2.到达限定时间,用户得分达到预设的值时, 自动提高难度等级,屏幕变色; 3.修改程序,底行的笑脸字母消失后,不再在该列下落字母(提示:设置数组记录
笑脸字母的存在与否)。笑脸字母全部消失后,游戏停止,显示告别画面,显示用户成绩。
2.4 其他任务
自行设计新的功能。
3
《汇编语言程序设计课程设计》指导书
参考文献
[1] 杨文显,宓双,胡建人.新编汇编语言程序设计.北京:清华大学出版社,2010年
3月
[2] 朱玉龙,任文览等.汇编语言程序设计.清华大学出版社,2003 [3] [美]Kip R.Irvine.汇编语言程序设计.电子工业出版社,2004
[4] 计算机工程教研室.汇编语言程序设计指导书.上海应用技术学院,2014年6月
4
《汇编语言程序设计课程设计》指导书
附录
《打字练习程序》汇编语言源程序清单
; Assembly program for test your type skills ; Writed by in 06/24/2003
; Modified by Mi shuang in 06/06/2005
; ------------------------------------------------ Init_boarder macro row, col, char, dhdl, count; Local ll
mov cx, count mov dh, row mov dl, col
ll: mov ah, 02h mov bh, 00h int 10h push cx
mov ah, 0ah mov al, char mov bh, 00h mov cx, 01h int 10h pop cx inc dhdl loop ll endm
; --------------------------------------------------- clear_screen macro top, left, bottom, right; 清屏宏定义 mov mov mov mov mov mov mov int mov mov mov mov int
ah, 06h al, 00h bh, 07h ch, top cl, left dh, bottom dl, right 10h
ah, 02h bh, 00h dh, 00h dl, 00h 10h
5
《汇编语言程序设计课程设计》指导书
endm
; ---------------------------------------------------- menu macro row, col, text; 菜单显示宏定义
mov ah, 02h mov bh, 00h mov dh, row mov dl, col int 10h
mov ah, 09h lea dx, text int 21h endm
; ====================================================== Data segment ZK db \date db \
mes0 db \
mes1 db \mes2 db \
mes3 db \mes4 db \Speed dw 3000H
Letters db \ db \ db \Present_position db 1
db 0;
Data ends
; ========================================================= code segment
main proc far
assume cs: code, ds: data start: mov ax, data
mov ds, ax
mov es, ax
mov cx, 1000h mov ah, 01h
int 10h ;
clear_screen 00d, 00d, 24d, 79d ;
Init_boarder 00d, 00d, 0ah, dl, 80d
Init_boarder 24d, 00d, 0ah, dl, 80d
6
《汇编语言程序设计课程设计》指导书
Init_boarder Init_boarder
00d, 00d, 0ah, dh, 25d 00d, 79d, 0ah, dh, 25d ;
; 显示菜单
menu 05d, 15d, ZK menu menu menu menu menu menu
mov mov mov mov int
keyin:
mov int cmp je cmp je jmp
ah, 07h 21h
al, 0dh begin al, ‘E’ exit keyin
ah, 02h bh, 00h dh, 22d dl, 33d 10h
07h, 15d, date 09d, 15d, mes0 11d, 18d, mes1 13d, 18d, mes2 15d, 18d, mes3 17d, 15d, mes4
; 设置光标位置
; 从键盘输入命令字符
exit:
mov int
begin:
mov mov mov mov int
;
; ; ; ;
ax, 4c00h 21h
clear_screen Init_boarder
ah, 02h bh, 00h dh, 01h dl, 01h 10h
01d, 01d, 23d, 78d ; 清屏
23d, 01d, 01h, dl, 78d ;
;
7