




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 提供全套毕业设计,欢迎咨询 汇编语言课程设计报告汇编语言课程设计报告 程程 序序 题题 目:目:打字练习程序打字练习程序 学学 生生 姓姓 名:名:xxxx 班班 级:级:20102010 级计算机科学与技术专业级计算机科学与技术专业 4 4 班班 学学 号:号:xxxxxx 院院 系:系:计算机科学学院计算机科学学院 指指 导导 教教 师:师:xxxxxx ii 目录 1 1 设计目的设计目的.3 2 2 概要设计概要设计.3 2.12.1 系统总体分析系统总体分析3 2.22.2 主模块框图及说明主模块框图及说明.4 3 3 详细设计详细设计5 3.13.1 主模块及子模块说明主模块及子模块说明5 3.2 各模块详细设计各模块详细设计.5 3.2.13.2.1 主界面模块主界面模块5 3.2.23.2.2 随机字母产生模块随机字母产生模块7 3.2.33.2.3 字母落下模块字母落下模块9 3.2.43.2.4 暂停模块暂停模块10 4程序调试程序调试11 4.14.1 运行界面分析运行界面分析.11 4.24.2 调试过程及分析调试过程及分析.13 5 5 心得体会心得体会.13 5.15.1 设计体会设计体会13 5.25.2 系统改进系统改进13 参考文献参考文献14 附:程序源代码附:程序源代码14 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 3 1 1 设计目的设计目的 本程序运行后,出现主界面,按回车键出现由 26 个字母组成的乱序行, 这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失; 按回车键进入打字练习;按 esc 键返回主界面;按空格键暂停;按e退出。 通过课程设计,主要达到以下目的: 1. 增进对汇编语言的认识,加强用汇编语言编程的能力; 2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断 调用功能,并由此实现对硬件的控制等; 3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课 程的学习打下良好基础; 4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且 能够应用自己的程序中; 5. 掌握屏幕输出显示的设计方法。 2 2 概要设计概要设计 2.12.1 系统总体分析系统总体分析 根据题目要求可以看到有以下几部分来实现打字练习:1.由 26 字母乱序 组成一行显示行。2.字母自动落下。3.从键盘输入的字母与落下字母相同则 该字母消失,并且下一个字母自动接着落下。4.按下“ese”键则程序返回到 主界面。5.按空格键游戏暂停。6.在主界面按“e”则程序退出。打字练习的 主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。对于以 上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要 详细设计其所需要的功能。 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 4 2.22.2 主模块框图及说明主模块框图及说明 e 其他键 enter enter 是 否 是 是否 是 是 图图 2-12-1 程序设计流程图程序设计流程图 程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令 从键盘输入字符 结束 随即字母落下 当前字母消失 暂停 判断输入按 键 键入字符是否与 下落一致 是否是 空格 开始 输入空 格 是否是 esc 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 5 来融合的,主要流程是先到主界面,然后选择你想要进行的指令 enter 进入 打字界面开始打字,e 退出程序,空格在打字练习时执行暂停的功能,esc 是 从打字界面返回到主界面。核心模块的流程大体如下面的流程图图 2-1: 3 3 详细设计详细设计 3.13.1 主模块及子模块说明主模块及子模块说明 主界面是程序的初始入口,也是其他功能模块的接入点。主模块是打字 模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。 子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输 入字符判断和打字模块输入字符判断) 、暂停模块、退出模块(这当中包含两 个小的子模块:打字界面返回主界面模块和主界面退出程序模块) 3.2 各模块详细设计各模块详细设计 3.2.13.2.1 主界面模块主界面模块 当程序运行后,我们首先要进行选择,是要继续进行即进入打字练习程序 还是终止练习退出程序。所以,在这里我们需要设置一个程序,该程序要判断 键盘键入的字符,我们不妨规定 esc 键和 enter 键分别为终止程序的控制键和 进入打字练习程序的控制键,即当检验到键盘输入 esc 后,退出程序;当键盘 输入为 enter 时进入打字练习程序。 单元程序如下: data segment zk db “hello,welcome to here!$“ no db “my name isxx,my student number is:xx.$“ meg db “press enter key to continue.$“ 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 6 meg1 db “when a letter is dropping,please hit it!$“ meg2 db “press space key to pause!$“ meg3 db “press esc key to return main interface!$“ meg4 db “press letter e to exit!$“ ;以上设置主界面的显示方式。 clear_screen 00d,00d,24d,79d init_game 00d,00d,0ah,dl,80d,nextsign1 init_game 24d,00d,0ah,dl,80d,nextsign2 init_game 00d,00d,0ah,dh,25d,nextsign3 init_game 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,zk ;菜单信息的宏调用 menu 07h,15d,no menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4 put: mov ah,02h ;设置光标位置 mov bh,00h mov dh,22d mov dl,33d int 10h mov ah,01h ;从键盘输入任意字符 int 21h cmp al,0dh je speed3 cmp al,45h je exit 以上代码是清屏,并调用宏实现主界面的显示,并在主界面中设置了菜单 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 7 显示后的光标位置,以方便使用者的操作。 in_cycle: add cx,01h cmp cx,1000 jne in_cycle push dx mov ah,06h ;从键盘输入字符 mov dl,0ffh int 21h pop dx jz pass cmp al,1bh ;如果键入esc,则返回主菜单 je to_start1 cmp al,“ “ ;如果键入space,则游戏暂停 je pause cmp al,di ;输入字母正确!则字母消失 je disappear to_start1: ;返回主菜单 jmp start 上述程序段中用到了中断int21,利用中断的有关规定,先将01h存入到 ah当中,则al中即为由键盘键入的字符。在此,先通过cmp指令来判断输入的 字符是否是enter键(enter键的ascii码为十六进制的0dh,程序开头部分的 宏定义已经令cr为0dh) ,如果是的话,程序将跳转到程序 disappear,disappear是定义的又一个程序,该程序即为打字练习程序的核 心部分。如果不是enter的话,将执行下一条指令,即判断键盘键入的是否为 e键,此功能由cmp al,1bh来实现,其中1bh是e键的acsii码的十六进制的 表示。如果是e键的话,程序将跳转到tzd_1子程序,再通过tzd_1程序来判断 是否要退出打字练习程序。如果键盘键入的既不是enter也不是e键的话,程 序将继续等待键盘的输入,直到输入的按键为enter和e当中的一个为止。 3.2.23.2.2 随机字母产生模块随机字母产生模块 当用户选择继续运行程序且进入打字练习界面时,则程序需要首先为用 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 8 户输出一列随机的字符序列,这时程序就需要自动的调用产生随机字符序列 的程序。程序段如下: letters db “jwmilzoeucgpravskntxhdyqfb“ db “iytpkwnxlsvxrmofzhgaebudjq“ db “nwimzoexrphysfqtvdcgljukda“ letters_bak db “jwmilzoeucgpravskntxhdyqfb“ db “iytpkwnxlsvxrmofzhgaebudjq“ db “nwimzoexrphysfqtvdcgljukda“ letter_counter db 0 begin: clear_screen 01d,01d,23d,78d ;清屏宏调用 clear_screen 01d,01d,23d,78d init_game 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h mov dl,01h int 10h mov cx,00h lea si,letters 上述的程序段中,begin 实现了输出的字符的随机显示,当然这个随机是 我们要事先通过自己随机定义一段由 26 个字母随机组成的序列,然后由 begin 来调用,从而间接来实现随即字母的产生。begin 段利用了 int10,其 功能是设置屏幕显示方式,灵活的利用 int10 丰富的指令功能,可以巧妙的 设计出想要的程序来。int10 中断规定,dh 和 dl 共同控制着字符输出的位置, 其中 dh 为字符输出的行标,dl 为字符输出的列标,通过改变 dh 和 dl 的值, 可以改变字符在命令符输出屏幕上的位置;如果 ah=09h 时,则 al=字符,bl 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 9 则是控制着输出的字符属性或颜色;计数器 cx 中存放的则是重复输出字符的 个数。本程序中令 cx 中存放 78,也就是说 loop 循环程序将循环 78 次,程序 的输出为 78 个字符,当 loop 循环程序运行结束之后,程序将执行下一条指 令,调用 dazirukou 子程序。使得程序继续运行,让用户按照程序自动产生 的字符串来进行打字练习。 3.2.33.2.3 字母落下模块字母落下模块 程序自动进入打字功能,自动落下字符,等待键盘输入字符以此来判断 输入者想什么,如果键盘输入与预期的相符合则程序自动执行相关功能。如 果输入字符与落下字符相同,程序执行当前字母消失和产生下一落下字母的 功能,字母落下功能的实现是通过逐行替换的方法实现的,字母在当前行出 现会有一个延迟时间,当过了这个延迟时间时,程序执行当前位置清空操作, 并在下一行显示上一行的字母。代码如下: hit: mov ah,02h mov bh,00h mov dh,01h mov dl,present_position int 10h mov al,di ; 出现下一个新字母的数法 add al,7 cmp al,7ah ja convey_letter mov ah,0ah mov bh,00h mov cx,01h int 10h mov di,al add letter_counter,01h 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 10 jmp nextcycle convey_letter: sub al,7ah add al,61h mov ah,0ah mov bh,00h mov cx,01h int 10h mov di,al add letter_counter,01h jmp nextcycle clear_screen 01,01,23,78 mov ah,02h mov bh,00h mov dh,11d mov dl,20d int 10h inc dh inc dh mov ah,02h mov bh,00h int 10h disappear: ;击中字母后输出空格 pop cx pop cx mov ah,0ah mov al,“ “ mov bh,00h mov cx,01h int 10h jmp hit 3.2.43.2.4 暂停模块暂停模块 如果输入空格,则程序执行暂停功能,暂停功能的实现是通过以下方法 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 11 实现的,当从键盘输入空格时,程序收到暂停信号,执行跳转,跳转到一个 死循环模块,就是无限显示当前屏幕,不做其他任何操作,直到键盘再次输 入空格时,程序收到暂停结束指令,跳转回到主程序模块,继续执行主模块 的功能。代码如下: pass: pop cx inc cx cmp cx,speed je print jmp out_cycle pause: push dx ;暂停处理 mov ah,06h mov dl,0ffh int 21h pop dx cmp al,“ “ jne pause jmp pass 4程序调试程序调试 4.14.1 运行界面分析运行界面分析 程序运行后的主界面如图 4-1,主界面第一行是欢迎语,第二行是作者, 然后往下是操作说明,为使用者说明该程序的使用方法。 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 12 图图 4-14-1 程序主界面程序主界面 当用户按下 enter 键时,程序自动跳入到图 4-2 的界面,字母随机落 下,用户便可以开始打字练习了。练习只要按照说明来做就可以了。 图图 4-24-2 打字界面打字界面 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 13 4.24.2 调试过程及分析调试过程及分析 当程序运行时,我发现当按 esc 退出,如果之前按下空格键暂停时,则 退不出去,必须再次按下空格是程序开始运行才能退出。主要是因为按下空 格键时,程序收到暂停信号,执行跳转,跳转到一个死循环模块,就是无限 显示当前屏幕,不做其他任何操作,直到键盘再次输入空格时. 5 5 心得体会心得体会 5.15.1 设计体会设计体会 课程设计对我们多数初学汇编的学生来说,确实是一座高峰。翻越他是 需付出努力的。我也是在探索了好久才弄明白他的,在此做个小总结,也许 对自己今后的学习有些借鉴作用。在整个程序的编写中,调试占了很大部分 的时间,要想写好汇编程序,必须认真对待代码的每一个细节,还必须熟练 的掌握 debug 指令。通过这次实际动手能力的培养,我进一步熟悉了汇编的 结构和使用法,基本达到能独立阅读。我觉得学习汇编的一个较大好处就是 可以了解电脑中每一个字节数据的来龙去脉,我觉得学习汇编可以发挥一下 自己的空间想象力。 5.25.2 系统改进系统改进 这次课程设计,其主题内容都以满足课程实际的要求,各功能都能相应 的完成,即写一个程序,运行可执行程序后,出现主界面,按回车键出现由 26 个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如 果输入正确,字母消失;按回车键进入打字练习;按 esc 键返回主界面;按 空格键暂停;按e退出,但是感觉整个程序界面不够华丽,看着粗糙的界 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 14 面,不能引起别人的注意,下次能够吧界面做得更好看一些。 参考文献参考文献 1 李敬兆 8086/8088 和 arm 核汇编语言程序设计 中国科技大学出版社 2 沈美明,温冬婵 编著 ibmpc 汇编语言程序设计(第二版) 清华大学出版社 出版 3 罗云彬 windows 环境下 32 位汇编语言程序设计 电子工业出版社 4【美】kip r.irvine 著,温玉杰 等译 intel 汇编语言程序设计(第四版) 电子工 业出版社 5 吕晓庆 80386/80486 系统编程实践 淅江大学出版社 6 袁可风 汇编语言程序设计 江西高校出版社 7 戴水贵 windows 汇编语言程序设计教程 清华大学出版社 8 罗杰 intel86 系列汇编语言程序设计 江西科学技术出版社 附:程序源代码附:程序源代码 init_game macro op1,op2,op3,op4,op5,op6 mov cx,00h mov dh,op1 mov dl,op2 op6:mov ah,02h mov bh,00h int 10h push cx mov ah,0ah mov al,op3 mov bh,00h mov cx,01h int 10h pop cx inc cx inc op4 cmp cx,op5 jne op6 endm clear_screen macro op1,op2,op3,op4 ;清屏宏定义 mov ah,06h mov al,00h mov bh,07h mov ch,op1 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 15 mov cl,op2 mov dh,op3 mov dl,op4 int 10h mov ah,02h mov bh,00h mov dh,00h mov dl,00h int 10h endm menu macro op1,op2,op3 ;菜单显示宏定义 mov ah,02h mov bh,00h mov dh,op1 mov dl,op2 int 10h mov ah,09h lea dx,op3 int 21h endm data segment zk db “hello,welcome to here!$“ no db “my name is liu hui,my student number is:41012169.$“ meg db “press enter key to continue.$“ meg1 db “when a letter is dropping,please hit it!$“ meg2 db “press space key to pause!$“ meg3 db “press esc key to return main interface!$“ meg4 db “press letter e to exit!$“ speed dw 500d letters db “jwmilzoeucgpravskntxhdyqfb“ db “iytpkwnxlsvxrmofzhgaebudjq“ db “nwimzoexrphysfqtvdcgljukda“ letters_bak db “jwmilzoeucgpravskntxhdyqfb“ db “iytpkwnxlsvxrmofzhgaebudjq“ db “nwimzoexrphysfqtvdcgljukda“ letter_counter db 0 life_flag db 78 dup(0) position_flag db 78 dup(0) present_position db 1 data ends stack segment para stack stack db 64 dup(0) stack ends code segment 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 16 main proc far assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax mov letter_counter,00h mov present_position,1 lea si,position_flag mov ah,00h mov cx,00h init_postion_flag: mov si,ah inc si inc cx cmp cx,78d jne init_postion_flag lea di,letters lea si,letters_bak mov cx,00h init_letters: mov ah,si mov di,ah inc si inc di inc cx cmp cx,78d jne init_letters mov ah,00h lea si,life_flag mov cx,00h init_life_flag: mov si,ah inc si inc cx cmp cx,78d jne init_life_flag mov cx,00h mov ah,01h or ch,00010000b int 10h clear_screen 00d,00d,24d,79d init_game 00d,00d,0ah,dl,80d,nextsign1 init_game 24d,00d,0ah,dl,80d,nextsign2 init_game 00d,00d,0ah,dh,25d,nextsign3 init_game 00d,79d,0ah,dh,25d,nextsign4 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 17 menu 05d,15d,zk ;菜单信息的宏调用 menu 07h,15d,no menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4 put: mov ah,02h ;设置光标位置 mov bh,00h mov dh,22d mov dl,33d int 10h mov ah,01h ;从键盘输入任意字符 int 21h cmp al,0dh je speed3 cmp al,45h je exit exit: mov ah,4ch int 21h speed3: mov ax,speed+12 mov speed,ax jmp begin begin: clear_screen 01d,01d,23d,78d ;清屏宏调用 clear_screen 01d,01d,23d,78d init_game 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h mov dl,01h int 10h mov cx,00h lea si,letters nextletter: mov ah,02h ;显示字母 mov dl,si int 21h inc si inc cx cmp cx,78d je nextcycle jmp nextletter from_front: sub present_position,78d 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 18 jmp gobackto_si find_zero: cmp letter_counter,78d je recycle cmp present_position,78d je from_one mov ah,00h nextsi: add present_position,01h inc si cmp si,ah je gobackto_di cmp present_position,78d je from_one jmp nextsi from_one:mov present_position,01h jmp gobackto_si recycle:mov letter_counter,00h mov present_position,01d lea si,position_flag mov cx,00h mov ah,00h clearsi: mov si,ah inc cx cmp cx,78d je nextcycle inc si jmp clearsi nextcycle: lea di,letters lea si,position_flag add present_position,31d cmp present_position,78 ja from_front gobackto_si: add si,word ptr present_position dec si mov ah,si cmp ah,01h je find_zero gobackto_di: mov ah,01h mov si,ah add di,word ptr present_position dec di 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 19 mov dl,present_position mov ah,02h mov bh,00h mov dh,01h int 10h mov cx,00h nextrow: push cx mov cx,00h out_cycle: ; 延迟 push cx mov cx,00h in_cycle: add cx,01h cmp cx,1000 jne in_cycle push dx mov ah,06h ;从键盘输入字符 mov dl,0ffh int 21h pop dx jz pass cmp al,1bh ;如果键入 esc,则返回主菜单 je to_start1 cmp al,“ “ ;如果键入 space,则游戏暂停 je pause cmp al,di ;输入字母正确!则字母消失 je disappear pass: pop cx inc cx cmp cx,speed je print jmp out_cycle pause: push dx ;暂停处理 mov ah,06h mov dl,0ffh int 21h pop dx cmp al,“ “ jne pause jmp pass to_start1: ;返回主菜单 jmp start print: mov ah,0ah ;在当前光标位置写空格 陕西师范大学汇编语言课程设计实验报告陕西师范大学汇编语言课程设计实验报告 20 mov al,“ “ mov bh,00h mov cx,01h int 10h inc dh mov ah,02h ;改变光标位置 mov bh,00h int 10h mov ah,0ah ;在当前光标位置写字母 mov al,di mov bh,00h mov cx,01h int 10h pop cx inc cx cmp cx,21d je print_next_letter jmp n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年03月南通市市属事业单位统一工作人员84人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 用外购和进口钢材、铁合金再加工生产钢材、铁合金项目安全风险评价报告
- 河北省沧州市重点中学2025年高三下学期学业质量阳光指标调研语文试题试卷含解析
- 河北交通职业技术学院《大学英语读写(一)》2023-2024学年第一学期期末试卷
- 共青科技职业学院《影视声音后期制作》2023-2024学年第二学期期末试卷
- 绍兴文理学院《数值计算方法》2023-2024学年第二学期期末试卷
- 新疆科信职业技术学院《装置艺术设计》2023-2024学年第二学期期末试卷
- 重庆机电职业技术大学《数字绘画基础》2023-2024学年第二学期期末试卷
- 长春职业技术学院《土力学及工程地质》2023-2024学年第二学期期末试卷
- 漳州理工职业学院《外国戏剧史》2023-2024学年第一学期期末试卷
- 襄阳市樊城区城市更新投资发展有限公司招聘考试真题2024
- 综合与实践 白昼时长规律的探究教学设计 2024-2025学年人教版数学七年级下册
- 2025年重庆市开州区云枫教育集团中考一模化学试题(含答案)
- 第9课《桃花源记》教学设计-2024-2025学年统编版语文八年级下册
- 2025年绍兴职业技术学院单招职业适应性测试题库附答案
- 网络系统维护记录日志表
- 广东省广州市白云区2024-2025学年高三下学期2月统测英语试卷【含答案解析】
- 2023-2024学年广东省广州市天河区八校联考七年级(下)期中数学试卷(含答案)
- deepseek的使用技巧与实际应用培训课件
- 禁食病人护理措施
- 存款保险知识竞赛
评论
0/150
提交评论