汇编语言打字练习程序课程设计报告

课程设计说明书题目: 打字练习院系:专业班级:学号:学生姓名:指导教师:2010 年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年 12月 17 日安徽理工大学课程设计(论文)成绩评定表摘要这项课程设计是用汇编语言完成打字练习,本文主要分为五部分,设计目的,概要设计,详细设计,程序调试以及心得体会。

从构思,编写,调试到完整的实现,每一部分都做了深入的分析和说明。

通过平时所学知识的综合利用,完成以及完善了这个小程序。

本文的核心部分是对于详细设计的讲解与分析,而这当中的侧重点又在于设计思想的再现。

判断,循环,子程序,宏都是此次课程设计的重要组成不分。

关键词:功能模块,核心代码,随机字符,模块调用,功能分析目录1设计目的 (1)2概要设计 (2)2.1系统总体分析 (2)2.2主模块框图及说明 (2)3 详细设计 (4)3.1主模块及子模块说明 (4)3.2各模块详细设计 (4)3.2.1主界面模块 (4)3.2.2随机字母产生模块 (6)3.2.3字母落下模块 (7)3.2.4暂停模块 (8)3.2.5返回主界面模块 (9)4.程序调试 (10)4.1运行界面分析 (10)4.2调试过程及分析 (11)5心得体会 (12)5.1设计体会 (12)5.2系统改进 (12)参考文献 (13)1设计目的这次课设的任务是写一个程序,运行可执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。

通过课程设计,主要达到以下目的:1. 增进对汇编语言的认识,加强用汇编语言编程的能力;2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等;3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础;4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中;5. 掌握屏幕输出显示的设计方法。

2概要设计2.1 系统总体分析根据题目要求可以看到有以下几部分来实现打字练习:1.由26字母乱序组成一行显示行。

2.字母自动落下。

3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。

4.按下“Ese”键则程序返回到主界面。

5.按空格键游戏暂停。

6.在主界面按“E”则程序退出。

打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。

对于以上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。

2.2主模块框图及说明程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令ENTER进入打字界面开始打字,E退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。

核心模块的流程大体如下面的流程图图2-1:图2-1程序设计流程图3 详细设计3.1 主模块及子模块说明主界面是程序的初始入口,也是其他功能模块的接入点。

主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。

子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:打字界面返回主界面模块和主界面退出程序模块)3.2 各模块详细设计3.2.1主界面模块当程序运行后,我们首先要进行选择,是要继续进行即进入打字练习程序还是终止练习退出程序。

所以,在这里我们需要设置一个程序,该程序要判断键盘键入的字符,我们不妨规定ESC键和ENTER键分别为终止程序的控制键和进入打字练习程序的控制键,即当检验到键盘输入ESC后,退出程序;当键盘输入为ENTER时进入打字练习程序。

单元程序如下:menu db '*********************************',0dh,0ahdb 'Welcome to word type exercise',0dh,0ahdb 'press Enter key to continue.......',0dh,0ahdb 'when a letter is dropping,please hit it!',0dh,0ahdb 'press space key to pause!',0dh,0ahdb 'press ESC key to return main interface!',0dh,0ahdb 'press letter E to exit!',0dh,0ahdb '*********************************$'以上设置主界面的显示方式。

clear_screen 00d,00d,24d,79dInit_write 00d,00d,0ah,dl,80d,nextsign1Init_write 24d,00d,0ah,dl,80d,nextsign2Init_write 00d,00d,0ah,dh,25d,nextsign3Init_write 00d,79d,0ah,dh,25d,nextsign4menu 05d,15d,ZK ;菜单信息的宏调用menu 07h,15d,nomenu 09d,15d,megmenu 11d,15d,meg1menu 13d,15d,meg2menu 15d,15d,meg3menu 17d,15d,meg4put: mov ah,02h ;设置光标位置mov bh,00hmov dh,22dmov dl,33dint 10hmov ah,01h ;从键盘输入任意字符int 21hcmp al,0dhje speed3cmp al,45hje exit以上代码是清屏,并调用宏实现主界面的显示,并在主界面中设置了菜单显示后的光标位置,以方便使用者的操作。

in_cycle:add cx,01hcmp cx,1000jne in_cyclepush dxmov ah,06h ;从键盘输入字符mov dl,0ffhint 21hpop dxjz passcmp al,1bh ;如果键入ESC,则返回主菜单je to_start1cmp al," " ;如果键入SPACE,则游戏暂停je pausecmp al,[di] ;输入字母正确!则字母消失je disappearto_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.2随机字母产生模块当用户选择继续运行程序且进入打字练习界面时,则程序需要首先为用户输出一列随机的字符序列,这时程序就需要自动的调用产生随机字符序列的程序。

程序段如下:letters db "jwmilzoeucgpravskntxhdyqfb"db "iytpkwnxlsvxrmofzhgaebudjq"db "nwimzoexrphysfqtvdcgljukda"letters_bak db "jwmilzoeucgpravskntxhdyqfb"db "iytpkwnxlsvxrmofzhgaebudjq"db "nwimzoexrphysfqtvdcgljukda"letter_counter db 0begin: clear_screen 01d,01d,23d,78d ;清屏宏调用clear_screen 01d,01d,23d,78dInit_write 23d,01d,01h,dl,78d,nextsign5mov ah,02hmov bh,00hmov dh,01hmov dl,01hint 10hmov cx,00hlea si,letters上述的程序段中,begin实现了输出的字符的随机显示,当然这个随机是我们要事先通过自己随机定义一段由26个字母随机组成的序列,然后由begin来调用,从而间接来实现随即字母的产生。

Begin段利用了INT10,其功能是设置屏幕显示方式,灵活的利用INT10丰富的指令功能,可以巧妙的设计出想要的程序来。

INT10中断规定,DH和DL共同控制着字符输出的位置,其中DH为字符输出的行标,DL为字符输出的列标,通过改变DH和DL的值,可以改变字符在命令符输出屏幕上的位置;如果AH=09H时,则AL=字符,BL则是控制着输出的字符属性或颜色;计数器CX中存放的则是重复输出字符的个数。

本程序中令CX中存放78,也就是说loop循环程序将循环78次,程序的输出为78个字符,当loop循环程序运行结束之后,程序将执行下一条指令,调用DAZIRUKOU子程序。

使得程序继续运行,让用户按照程序自动产生的字符串来进行打字练习。

3.2.3字母落下模块程序自动进入打字功能,自动落下字符,等待键盘输入字符以此来判断输入者想什么,如果键盘输入与预期的相符合则程序自动执行相关功能。

如果输入字符与落下字符相同,程序执行当前字母消失和产生下一落下字母的功能,字母落下功能的实现是通过逐行替换的方法实现的,字母在当前行出现会有一个延迟时间,当过了这个延迟时间时,程序执行当前位置清空操作,并在下一行显示上一行的字母。

代码如下:hit: mov ah,02hmov bh,00hmov dh,01hmov dl,present_positionint 10hmov al,[di] ; 出现下一个新字母的数法add al,7cmp al,7ahja convey_lettermov ah,0ahmov bh,00hmov cx,01hint 10hmov [di],aladd letter_counter,01hjmp nextcycleconvey_letter:sub al,7ahadd al,61hmov ah,0ahmov bh,00hmov cx,01hint 10hmov [di],aladd letter_counter,01hjmp nextcycleclear_screen 01,01,23,78mov ah,02hmov bh,00hmov dh,11dmov dl,20dint 10hinc dhinc dhmov ah,02hmov bh,00hint 10hdisappear: ;击中字母后输出空格pop cxpop cxmov ah,0ahmov al," "mov bh,00hmov cx,01hint 10hjmp hit3.2.4暂停模块如果输入空格,则程序执行暂停功能,暂停功能的实现是通过以下方法实现的,当从键盘输入空格时,程序收到暂停信号,执行跳转,跳转到一个死循环模块,就是无限显示当前屏幕,不做其他任何操作,直到键盘再次输入空格时,程序收到暂停结束指令,跳转回到主程序模块,继续执行主模块的功能。

合集下载

汇编程序课程设计报告

汇编程序课程设计报告

汇编语言课程设计报告( 2014 -- 2015 年度第 1 学期)课题名称:打字计时练习程序专业 计算机科学与技术(网络工程)学生姓名 金玲班级 B 计算机131学号 1310704114指导教师 许秋艳完成日期2015年1月16日目录1 设计目的 (1)2 概要设计 (1)2.1系统总体分析 (1)2.2主模块框图及说明 (1)3 详细设计 (1)3.1主模块及子模块说明 (1)3.2各模块详细设计 ............................................................................... 错误!未定义书签。

3.2.1 主界面模块.................................................................................... 错误!未定义书签。

3.2.2 随机字母产生模块........................................................................ 错误!未定义书签。

3.2.3 字母落下模块................................................................................ 错误!未定义书签。

3.2.4 暂停模块........................................................................................ 错误!未定义书签。

3.2.5 返回主界面模块............................................................................ 错误!未定义书签。

4 程序调试 (2)4.1运行界面分析 (2)4.2调试过程及分析 (3)5 心得体会 (3)5.1设计体会 (3)5.2系统改进 ........................................................................................... 错误!未定义书签。

VB课程设计报告-打字练习

VB课程设计报告-打字练习

VISUAL BASIC课程设计报告题目:打字练习姓名:***学号:班级:1题目介绍在计算机及其它数码产品日益普及的今天,人们使用键盘应像使用笔写字一样熟练。

进行打字练习是熟悉键盘并提高打字速度的豪放法。

本题目要求编制一个打字练习游戏,是用户在游戏过程中练习指法。

2设计过程中用到的知识点(1)控件数组(2)键盘事件处理(3)文本文件的读写(4)多模块程序设计(5)随机值的生成3课题要求和承担的任务(1)游戏开始时出现“打字设置”窗口,在“您的姓名”文本框中输入用户名。

若未输入名字,就点击“开始练习”与“查看成绩”按钮,则提示用户输入姓名。

若未输入时间,就点击“开始练习”与“查看成绩”按钮,则提示用户输入时间。

在“打字设置”窗口可以设置打字速度和难度,速度决定字母下落的快慢,共分高,中,低速三档。

难度等级也分为三档:小写字母,大写字母,所有混合(字母,数字和符号)(2)选择速度和难度之后,单击“开始练习”按钮后,主页面以全屏方式显示。

根据难度的设置,屏幕上随即产生并落下各种字符。

若用户在字符落到屏幕底部之前敲击了相应的键盘键,则该字符被“击中”后消失,击中时在字符位置上显示一个爆炸的效果。

程序根据速度和难度的不同自动进行计分,分数实时地显示在主界面的顶部。

计分标准为:1,慢速+小写字母:打中一个1分2,慢速+大写字母:打中一个2分3,慢速+混合字符:打中一个3分4,中速+小写字母:打中一个4分5,中速+大写字母:打中一个5分6,中速+混合字符:打中一个6分7,高速+小写字母:打中一个7分8,高速+大写字母:打中一个8分9,高速+混合字符:打中一个9分(3)打字前可以选择打字的时间,时间一到弹出消息框显示用户本次练习得分,并提示是否继续练习,如果选“否”,返回“打字设置”窗口。

用户的成绩被保存在“SCORE.TXT”文件中,供以后查询。

(4)当下落字符中有相同字符时,一次只能打掉一个(5)在打字过程中,可以按ESC键中止游戏,返回打字设置窗口。

打字练习课程设计分析

打字练习课程设计分析

打字练习课程设计单位电气与电子工程分院(系)专业电气与电子工程学号学生姓名指导教师完成日期年月日一个好的打字员也必须经过指法练习的磨练才能成才,同样,一个好的指法练习系统对一个打字员也是必不可少的工具。

以下是用C语言编写的指法练习系统软件的设计报告。

一.系统功能本程序完成简单的指法练习全程,实现测试打字过程中返回正确错误个数的功能,并显示用户测试成绩。

部分功能通过类似window界面实现,完全符合课程设计的要求。

二.系统总框图及函数定义及说明系统总框图:三.设计分析程序主要以函数为模块,一个函数实现一个功能或一个设置项,为了阅读的方便,函数里又包含了自定义函数,最后主函数调用自定义的函数,整个过程清晰,各个函数独立性强。

算法方面主要是产生随机字符这块要研究一下,其他的大概也没什么好研究的,基本都是输入输出操作。

随机字符的产生我利用了数组的下标和random()函数,数组先给赋值了,三个数组就三种情况,达到了设计的要求。

还有就是倒计时的实现,因为C语言不能同时执行两条语句,故在打字的过程中和倒计时不能同时实现,为了解决这个问题,我用了kbhit()如果键盘没输入就退出这次输入循环,让倒计时继续执行,当有键盘的输入这次的输入循环也就结束,也是让倒计时继续执行,问题解决。

四.程序存在的问题由于本人水平有限,本程序存在一些问题,主要有以下几个方面:1.在打字过程中,当打错了字时不能删掉重新输入,只能继续打下去,因为这个过程用的是循环输入,当每入一字就结束了这个字的输入不能修改。

2.部分界面的输入没考虑用户各种输入的情况,当用户非正常输入时,系统可能会中止。

3.没有考虑当用户选择背景字体颜色都一样时的情况(这种情况导致界面没有东西显示,主要就是背景和字体用了一样的颜色),只是用提示语句提醒用户。

五.心得体会经过两周的课程设计,对C语言有了更深刻的了解,学到了很多以前没了解过的函数和算法。

一直以来就认为C语言就是学编程的基础但用不上场,现在觉得它的确也能用上场了,可以编写软件。

汇编语言打字练习程序实验报告

汇编语言打字练习程序实验报告

课程设计说明书题目: 打字练习院系:专业班级:学号:学生姓名:指导教师:2010年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年12月17 日安徽理工大学课程设计(论文)成绩评定表摘要在IBM-PC系统中,驻留的ROM中有8KB的BIOS。

它实现对系统中种种常用设备的输入输出操作的管理。

其中的16H中断调用即为键盘输入输出中断调用,实现从键盘输入字符到AL寄存器、读键盘缓冲区字符到AL寄存器、读取特殊功能键的状态等功能。

本程序通过汇编语言实现,运行时有不同的字母从界面的上方落下,用户通过识别字母敲击键盘上的按键,字母就消失了,接着落下下一个字母。

在实现这个功能的过程中,如何使用宏调用、如何将菜单显示在界面上、如何将字母放到寄存器在界面上方显示、如何控制字母下落的速度以及如何退出程序,都将在本文中体现。

关键词:中断调用,汇编语言,宏调用,寄存器,显示,退出目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (3)3.1 主模块及子模块说明 (3)3.2 各模块详细设计 (4)4.程序调试 (11)4.1 运行界面分析 (11)4.2算法的分析 (13)4.3 调试过程及分析 (13)5心得体会 (14)5.1 设计体会 (14)5.2 系统改进 (14)参考文献 (15)1设计目的汇编语言是一门面向机器的语言,它是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

由于汇编语言如此的接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。

使用汇编语言完成课程设计,能进一步学习汇编语言这门技术,提高编程思想和编程技术。

本程序时使用汇编语言,设计一个练习打字的程序。

运行程序时,显示菜单界面。

按下Enter键后界面上方出现由26个字母组成的乱序行。

这时有字母随即下落。

这时候在键盘上敲击该字母,如果字母正确,则这个字母消失,下一个字母开始下落;如果字母不正确,则该字母落下后继续产生下一个字母。

打字练习课程设计

打字练习课程设计

1.引言汇编语言程序设计是电子信息类专业的重要基础课程,是计算机应用开发人员必须接受的最重要的专业基础训练之一,是计算机软,硬件研究的基础,是一个优秀计算机工作者必须掌握的基础知识和基本技能。

汇编语言也是计算机能够提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

因而,对程序的空间个时间的要求很高的场合,汇编语言的应用时必不可少的。

2.设计任务与要求1、随机显示一段字符(可含有字母和数字)2、根据屏幕显示进行打字练习,出错时声响报警3、打字完成后统计正确率和打字时间4、程序采用汇编语言在PC机上完成5、完成符合学校要求的设计说明书3.设计方案(1)本次课程设计通过对8253 的设置,使之产生一定频率的波形,将该波形输出到中断口IRQ。

每次进入中断都刷新LED点阵上的字母显示,从而控制打字练习的速度。

通过改变8253的计数初值可以改变速度。

(2)8253 通道1 工作于方式3,输入1MHZ 的时钟,设置分频系数为1000,输出1KHZ 的方波,此输出作为通道0 的输入时钟。

通道0 工作于方式3,分频系数为用户输入的速度等级×1000。

[注:速度等级:1---快速 2---中速 3----慢速](3)将8255 的A 口接到LED 点阵的COL1-8,C 口接到LED 点阵的ROW1-8,每当进入中断,就把在数据段存好的字母的段码送到A 口和C 口,显示相应的字母。

(4) 每个字母都需要分段循环显示,利用人眼的视觉暂留便可看见点阵上显示整个字母。

(5)为避免中断服务程序过长,在写中断服务程序时,只需要把中断标志置1即可,其余操作可在主程序中进行。

(6)在字母显示期间,要不断读取按键输入,直到按键正确或进入下一次中断(即表示该字母的出现时间已经结束),准备出现下一个字母。

(7)在字母显示期间,若读入的按键是错误的,则在屏幕上显示“错误”,并继续显示该字母,等待按键或中断;若未能在字母消失前按下正确的键,则在屏幕上显示“超时”,并显示下一个字母;若在字母消失前按下正确的键,则在屏幕上显示“正确”,往A 口和C 口输出00H,使字母消失,分数加1,并准备显示下一个字母。

c打字游戏课程设计报告

c打字游戏课程设计报告

c打字游戏课程设计报告一、课程目标知识目标:1. 学生能够掌握C语言基础语法,包括变量声明、数据类型、运算符等。

2. 学生能够理解并运用循环结构、条件语句编写简单的打字游戏程序。

3. 学生了解基本的计算机编码知识,如ASCII码。

技能目标:1. 学生能够运用C语言编写简单的打字游戏程序,提高编程实践能力。

2. 学生能够通过编写代码解决问题,培养逻辑思维和问题解决能力。

3. 学生能够熟练使用计算机键盘,提高打字速度和准确性。

情感态度价值观目标:1. 学生培养对编程的兴趣,激发学习C语言的热情。

2. 学生在团队协作中,培养沟通、协作能力,增强团队意识。

3. 学生通过编程实践,体会计算机科学的魅力,树立正确的科技观。

课程性质:本课程为实践性较强的编程课程,结合打字游戏的形式,让学生在轻松愉快的氛围中学习C语言编程。

学生特点:五年级学生,具备一定的计算机操作能力,对游戏有浓厚兴趣,具备初步的逻辑思维能力。

教学要求:教师应注重引导学生主动探究、实践,关注学生的个体差异,鼓励学生发挥创意,提高编程能力和团队协作能力。

通过本课程的学习,使学生达到上述具体的学习成果。

二、教学内容1. C语言基础语法:- 变量声明、数据类型(整型、字符型)- 常量和变量- 运算符(算术、关系、逻辑)- 语法结构(顺序、选择、循环)2. 编程实践:- 打字游戏程序设计思路- 设计简单循环结构,实现打字游戏基本框架- 引入随机函数,生成随机字母或单词- 使用条件语句,判断用户输入与随机字母的匹配3. 计算机编码知识:- ASCII码介绍- 键盘布局与打字技巧4. 教学内容的安排和进度:- 第一课时:C语言基础语法回顾,介绍打字游戏目标- 第二课时:设计打字游戏基本框架,学习循环结构- 第三课时:引入随机函数,学习条件语句- 第四课时:完善打字游戏功能,进行编程实践- 第五课时:总结与展示,讨论编程过程中的问题及解决方法教材关联:- 《C语言趣味编程》第三章:循环结构- 《C语言趣味编程》第四章:分支结构- 《计算机科学》第二单元:计算机编码知识教学内容注重科学性和系统性,结合教材相关章节,引导学生通过实践掌握C 语言编程知识,提高编程技能。

汇编语言打字练习程序课程设计报告

课程设计说明书题目: 打字练习院系:专业班级:学号:学生姓名:指导教师:2010 年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室ﻩ2010年12月17日安徽理工大学课程设计(论文)成绩评定表摘要汇编语言是计算机能够给用户使用的最高效快捷的语言,也是唯一能对计算机所有硬件进行操纵的语言。

鉴于汇编语言的用途广泛以及重要性,我花费的大量的时间完成此次课程时机,打字练习。

打字练习是计算机常用的小应用程序,可以给想练习打字的人提供一个好的练习空间。

本文的核心部分是对于详细设计的讲解与分析,而这当中的侧重点又在于设计思想的再现。

关键词:功能模块,核心代码,随机字符,模块调用,功能分析目录1设计目的ﻩ错误!未定义书签。

2概要设计 .......................................................................... 错误!未定义书签。

2.1系统总体分析 ...................................................................................................... 错误!未定义书签。

2.2主模块框图及说明ﻩ错误!未定义书签。

3 详细设计 ......................................................................... 错误!未定义书签。

3.1主模块及子模块说明 ........................................................................................ 错误!未定义书签。

3.2各模块详细设计ﻩ错误!未定义书签。

3.2.1主界面模块.................................................................................................. 错误!未定义书签。

微机原理课程设计练习打字程序

微机原理课程设计报告题目:练习打字程序学生姓名:傅湘黔学号: 2专业班级:计科专业10102班同组姓名: 刘再科指导教师:杨红杰设计时间: 2013年下学期第17周指导老师意见:评定成绩:签名:日期:年月日目录1课程设计内容与目的 (3)2相关理论知识 (3)2.1扬声器驱动 (3)2.2 相关指令 (3)3程序段设计 (5)3.1字符串的输入设计 (5)3.2错字变红色的设计 (5)3.3报警部分设计 (6)4硬件设计 (7)4.1并行接口8255A (7)4.2硬件连接图 (9)5程序流程图 (10)6程序调试效果 (11)7心得体会 (11)8参考文献 (11)附录 (12)1课程设计内容与目的课程设计内容:设计一个在键盘上练习打字的程序。

先在屏幕上显示一段文字,用户按照它在键盘上输入,如果按错键则以红色显示并报警,正确的输入,则正常显示。

课程设计目的:熟悉和掌握有关键盘ASCⅡ码,中断及字符显示技术。

课程设计要求:自行编制报警中断和显示错字红色中断处理程序,为保存原中断向量。

程序运行时,通过条件调用自编的中断向量处理程序。

程序退出时,恢复中断向量。

屏幕上显示出提示信息和练习的字符段,按照字符段从键盘上输入字符即可,每输入完一行后能自动刷新练习的字符段按Esc键可退出程序。

2相关理论知识2.1扬声器驱动PC机上的大多数I/O都是由主板上的8255(或8255A)可编程外围接口芯片(PPI)管理,用PPI输出寄存器中的PB0和PB1来控制扬声器的驱动,而8253的通道2的输出端与扬声器相连,PB0连接通道2的CKL2,PB1和通道2的OUT2通过一与非门连接扬声器,在PB0与PB1都为高电平时,由8253产生的脉冲就进入扬声器产生声音。

2.2 相关指令1)无条件转移指令无条件转移指令必须指定转移的目标地址(或称为转向地址),将程序无条件地转移到目标地址,去执行从该地址开始的指令。

如“JMP 目标地址”2)条件转移指令条件指令是根据执行该指令前标志位的状态而决定是否发生的控制转移指令。

汇编语言课程设计打字游戏

目录1. 课程设计目的及内容 (2)1.1 课程设计目的 (2)1.2 课程设计内容 (2)2. 开发环境 (2)2.1 软、硬件环境 (2)2.2 MASM开发环境 (3)3.功能分析 (3)3.1 基本功能设计 (3)3.2系统程序流程图 (4)4. 调试和运行程序 (5)4.1 程序调试 (5)4.2 程序运行 (6)5. 课程设计总结 (8)6. 参考文献 (8)附录 (9)源程序代码 (9)打字游戏1. 课程设计目的及内容1.1 课程设计目的汇编语言是一项实用性很强的技术,学完教学大纲规定的全部内容,完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程基本知识,进一步掌握汇编语言课程设计方法,提高分析问题,解决问题的综合应用能力。

学会查阅和汇编语言相关的规范,手册等技术资料。

能正确绘制和使用流程图。

掌握汇编语言程序设计和程序调试的基本技能,能进行基本的软件设计。

1.2 课程设计内容此课程设计中,实现的主要功能是在屏幕的顶端排列一排英文字母,底端对应排列一排小球或小方块,屏幕顶端的英文字母以一定的速度随机下落, 落到底端的小球或小方块处, 小球或小方块消失,但如果在英文字母落到底端前,正确按键(落下的英文字母的键位),则英文字母消失,英文字母消失或落到底端后,顶端原字母的空处出现另一新字母,按空格键则暂停,再按空格键字母继续下落,如过底端小球或小方块消失后,则不再出现。

2. 开发环境2.1 软、硬件环境软件环境:操作系统:Windows 8 64位(DirectX 11)、BIOS系统DOS系统硬件环境:处理器:英特尔第三代酷睿i3-3110M @ 2.40GHz 双核内存:4GB(三星DDR3 1333MHz)主硬盘:希捷ST500LM012 HN-M500MBB (500GB/5400转/分)显示器:三星SEC3649(14 英寸)2.2 MASM开发环境Masm是汇编编译器,是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发的优点,支持伪指令和宏汇编,最后编译生成obj文件,通过link工具连接成可执行文件exe。

汇编课程设计打字游戏

附录:程序主要代码
;程序中要用到的一些宏指令及其说明
getChar MACRO char;调用1号功能,接收一个字符,将字符放在char里
PUSHAX
MOVAH,1
INT 21H
MOVchar,AL
POPAX
ENDM
showChar MACRO char;调用2号功能显示字符
PUSHAX
PUSHDX
INT 10H
POPAX
ENDM
initWindow MACRO A,B,C1,C2,D1,D2;初始化窗口或窗口内容向上卷动,也可以用于清屏
PUSHAX
PUSHBX
PUSHCX
PUSHDX
MOVAH,6
MOVAL,A;上卷行数
MOVBH,B;卷入行属性(颜色)
MOVCH,C1;左上角行号
MOVCL,C2;左上角列号
DB'Start',0dh,0ah,'$'
DB'Setting',0dh,0ah,'$'
DB'Quit',0dh,0ah,'$'
KickDB?
XDB?
YDB?
ErrorMsgDB'Error!',0dh,0ah,'$'
EXITMsgDB' You really want to exit,enter Y to exit,and N to continue! (Y/N)',0dh,0ah,'$'
在具体实现的过程中遇到了很多困难。由于自己的电脑是64位的不兼容,所以平时对编好的程序在windows环境下用记事本打开程序对其进行说明注释,由于使用了中文,所以回到dos环境时出现了乱码。本次课程设计让我们充分了解了汇编在实际软件开发中的作用和地位。在这次课程设计过程中我们把课堂上的知识充分运用了还是不能完成实际软件开发。这说明程序开发是不能够停留在书本上的,想要把程序作好,必须要不断通过各种途径掌握更多更好的知识,并且最重要的是要将获得的知识运用到实际编程中,要学以致用。本次课程设计是自由分组、自由选题。我们可以根据我们的兴趣和优势来选择题目。通过这次编写打字游戏程序的课程设计,最基本的收获是我了解了汇编语言编写程序的步骤:先确定程序要实现的功能,接着定义需要的寄存器、存储器,画出流程图。然后逐个模块实现其功能。此次的课程设计,提高了我阅读和分析程序的能力,以及模仿能力。编程能力实事求是地说还有待提高,觉得自己逻辑性太差,但相对于原来学的高级语言,对汇编很感兴趣,最终虽然不会从事汇编的编程工作,但知识就是力量,学习汇编拓展了自己的知识面。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档