




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.设计任务及要求1.1 微机原理与接口技术课程设计目的对典型的微机应用系统进行设计,要求根据具体的课题题目画出系统结构框图、系统接线图;能用所学习的汇编语言进行典型的程序设计并上机进行调试。并能根据要求写出设计课程设计报告,报告要求文字整洁、语言通顺、制图规范、程序完整正确。1.2 设计任务本课程设计是一个在键盘上练习打字并统计时间及正确率的实用程序。在缓冲区中预放了一些字母,运行时,可按照屏幕上显示的字母输入练习,按某个键开始练习,可显示出练习的时间及正确率,并一行练习完毕后系统自动生成另外一行随机字母。1.3 设计要求1. 设计要求:(1)设计一个在键盘上练习打字并能统计时间及正确率的程
2、序。(2) 熟悉和掌握有关键盘和时间的中断及字符显示计数。(3) 编制键盘中断和时间中断处理程序,并保存原中断向量。程序运行时,使用自编的中断向量处理程序。程序退出时,恢复中断向量。2. 设计功能:(1)按照显示的字母输入练习,每输入完一行按回车键后,可显示出练习输入的时间及正确率,打字练习过程中输入的字符与打字练习的内容不符时会产生警报,打字练习可以一直进行下去直至练习者停止(2)能用自编的中断向量处理程序处理中断。62. 方案比较及论证2.1 方案比较根据打字计时练习的设计要求可知,我们可以依据缓冲区中字符系列的产生这一要求的实现有两种设计方案:方案一是缓冲区中的字母是预先设定好的, 后面
3、所进行的打字练习是依照预先设定好的字符系列进行;方案二是缓冲区中的字母是随机生成的,每一次打字练习的字符系列都是随机产生的。其他要求的实现都是一样的。方案一:缓冲区中的字符系列是预先设定好的。这种设计方案要求在内存中预先开辟一段存储空间存放将要进行打字练习的字符系列,在后面进行打字练习的时候再将字符系列取出进行操作。这种设计方案占用的内存较多并且需要先将字符系列取出后再进行操作,程序写起来很长,指令太多,同时设计的方案对于使用者来说太过单一,想尝试不同字符系列的打字练习时还要另行修改程序, 适用性差。方案二:缓冲区中的字符系列是系统自动随机生成的。这种设计方案要求系统随机生成字符系列,不需要预
4、先分配内存单元,在开始新一轮的打字练习时就自动随机生成字符系列。这种设计方案运用到的指令少,占用的内存少,设计的程序适用性好,不需要修改程序就可以尝试不同的字符系列的打字练习。2.2 方案论述在设计打字练习时,根据打字练习的过程来设计打字计时练习的程序,首先在打字练习的界面上要有输出的提示信息提示对打字练习要进行的操作,其次是打字练习内容字母系列的生成,然后才开始进行打字练习,打字计时练习的过程在系统内部是一个不断循环的过程,在系统内部时钟每次嘀嗒计数循环一次,首先需要判断是否从键盘键入字符,这里面有一个循环检测的过程直至有字符键入系统,其次需要知道键入的字符是否是特殊字符,判断 打字练习进行
5、哪步操作。这是一个大的分支程序,需要有很多的跳转并且需要不断的调用子程序实现不同的功能。最后在一轮打字练习结束时需要有一个分支的选择,是再次进行打字练习的设置还是退出打字练习的程序。3. 软件设计说明3.1 软件思想由打字计时练习的设计要求可知设计主要分为以下几个步骤:打字练习过程中提示信息的输出,随机字母系列的生成,打字练习过程中键入字符的正确与否, 打字练习过程的时间及正确率的显示,字母系列是否键入完毕。运用汇编语言设计的程序分为主程序和子程序。主程序主要用于随机字母系列的生成,打字计时练习过程键入字符正确与否的判断,字母系列是否输入完毕, 打字计时练习的新一轮的开始。子程序分别实现不同的
6、功能,分别如下:子程序 SHUCHU_TISHI 中,实现的是打字练习过程中输出提示信息。子程序 BINDEC 实现的是显示时间,分别将各遍野单元的二进制数转换为十进制数,并以 COUNT5:COUNT4:COUNT3 的形式显示出来。子程序 DECDIV 实现的是数字以 ASCII 字符形式输出子程序 TIME 实现的是打字练习过程的计时及输出子程序 SOUND 实现的打字计时练习过程中键入字符与相应打字内容不等时的警报。方案一的设计思路:系统随机生成打字练习的内容将需要输出的提示信息,记录打字练习的正确率参数及计时单元等预先放在DATA 数据段中,程序开始时就输出提示信息然后系统随机生成打
7、字内容存放在内存中,然后开始打字练习,由自编的中断程序 PRESS 检测按键时产生的中断, 并把按键的扫描码转换为 ASCII 码,这个工作和 ROM09 类型的键盘中断例行程序所完成的工作大致相同,只是在解释各个键时作了简化,即只解释了可显示字符, 如英文字母、数字及一些符号;其他特殊键,如组合键、双态键、功能键等都未作解释,只作为字符码 0 来处理。在主程序部分保存原 09 类型的中断向量,设置自编例行程序的中断向量,设置中断屏蔽位,然后开中断。键入的字符时,还应判断字符是否为空格(20H)。如为空格,需要再次的调用 INT21H 中断,从键盘输入字符直至输入的字符不是空格,还要判断是否是
8、退出和回车,如果是跳到重新输入字符处,重新开始从键盘键入字符判断。如果不是,进入键入的字符是否是正确处,进行各自相应的操作直至键入某一功能键(如 Esc 键、Shift 键等) 退出程序,结束打字练习。在键盘打字计时采用 10 类型的键盘中断,来取得输入字符并将字符显示在屏幕上;在统计时间时利用 08 类型的定时器中断所嵌套的 ICH 软中断来计时。当一个字符输入完后(回车键作为结束符),屏幕上以 COUNT5:COUNT4:COUNT3 的格式显示出打字练习的时间。在统计时间和正确率时需要利用数制转换子程序, 将系统自行计数的二进制转换成十进制输出。自行编制键盘中断和时间中断处理程序,并保存
9、原中断向量。程序运行时, 使用自编的中断向量处理程序。程序退出时,恢复中断向量。自编中断处理程序也是本课题需要考虑的重要问题。虽然系统自带了许多中断例行程序可以由 INT 指令来执行,但在本课题中需要对原中断例行程序的功能进行扩充才可。3.2 程序流程图主程序如图所示:图一主程序流程图上图为主程序流程图,是依据设计思路中未调用子程序的几个步骤得来TIMEPROC时间子程序流程图如图2所示:PUSH AX PUSH DXMAIN:MOV AH, 2 INT 1AHCMP DH, SECONT JNE GETJMP NEXT GET:MOV SECONT,DH INC COUNT3 MOV AX,
10、 COUNT3 CMP AX, 60JNE NEXT4 MOV COUNT3, 0 INC COUNT4MOV AX, COUNT4 CMP AX, 60JNE NEXT4 MOV COUNT4, 0 INC COUNT5NEXT4:MOV DH, 20MOV DL, 23 MOVTO DH, DL MOV AX, COUNT5 CALL BINDEC MOV AH, 2MOV DL, ':' INT 21HMOV AX, COUNT4 CALL BINDEC MOV AH, 2MOV DL, ':' INT 21HMOV AX, COUNT3 CALL BIN
11、DECNEXT:POP DX POP AXRETTIMEENDP图二时间子程序流程图武汉理工大学微机原理与接口技术课程设计说明书SOUND PROCPUSH AX报警子程序流程图如图3所示:PUSH CXIN AL, 61HAND AL, 11111101B OUT 61H, ALMOV CX, 10000 AGAIN_S:XOR AL, 2 OUT 61H, AL CALL DELAYLOOP AGAIN_S POP CXPOP AX RETSOUNDENDP DELAYPROCPUSH CXMOV CX, 0FFFH NEXT_D: NOPLOOP NEXT_DPOP CX图3报警子程序流
12、程图RETDELAYENDP在主程序中对键入字符 ACSII 是否介于 33 和 127 之间的判断,其流程图如图 4 所示:图 4:键入字符的判断流程图7武汉理工大学微机原理与接口技术课程设计说明书3.3 代码设计1. 功能模块说明(1) 定义数据段,设置主要参数:输出提示信息,记录正确率和计时的参数(2) 代码段调用中断 8259,键盘中断,时钟中断,设置打字计时文件程序顺序(3) 使用子程序分化各子功能SHUCHU_TISHI PROC;输出提示信息SOUND PROC;发声BINDECPROC NEAR;将二进制转化为十进制显示时间DECDIVPROC NEAR;转化成字符显示TIME
13、 PROC;统计时间2. 具体代码实现及关键代码分析;定义堆栈段;*SSEGSEGMENTSTACK'STACK'DW100DUP(?)SSEGENDS;*整个程序按两个中断源分为两部分。在数据段中,前半部分是键盘处理所需要的数据变量,包括输入字符,字符缓冲区,09H 中断向量的保存单元等。后半部分是定时器中断处理所需要的数据变量,其中有一个打字练习内容及其地址表SADDR,计时单元 COUNT3,COUNT4,COUNT5 以及记录真确率的变量 COUNT0,COUNT1中断向量的存贮单元等。在堆栈段定义一个“先进先出”的缓冲区(buffer):由于键盘是通过中断方式工作的,
14、由于键盘中断的出现是完全随机的,因此要示键盘I/O 程序要缓冲或保留它接收的任一键盘输入。故需定义一个缓冲区,也叫循环队列。13;定义数据段;* DSEGSEGMENT 'DATA'显示窗口内容MSG1 DB 'PRESS "ENTER" TO START!$' MSG2 DB 'PRESS "ESC" TO END!$' MSG3 DB 'THE PASSED TIME:$' MSG4 DB 'THE RATE OF CORRECT:$'MSG5 DB 'PRESS
15、 "ENTER" TO RESTART!$' MSG6 DB 'PRESS " ESC" TO OUT!$'SECONTDB0COUNT0DW0;为了记录正确的字符数COUNT1DW0;字符总个数COUNT2DW0;为了到行尾时自动翻行的控制COUNT3DW0;秒COUNT4DW0;分COUNT5DW0;时DSEGENDS;*数据段定义了在后面要用到的计时变量,记录打字练习的正确率及需要输出的提示信息;定义代码段;* CSEGSEGMENT 'CODE'ASSUME CS:CSEG, SS:SSEG, DS:DSE
16、G;*主程序 start:输出打字操作的提示信息,随机生成字符系列,打字练习过程, 打字时间的统计及正确率的计算。;输出提示信息程序SHUCHU_TISHI PROC:通过对 DH,DL 的赋值将光标定位在 DH 行 DL 列,调用宏定义 OUTPUT 设置输出字符串的属性并在 DH 行 DL 列输出;输出提示信息*SHUCHU_TISHI PROCADD DH,3 ADD DL,28OUTPUT MSG1,14, DH, DLADD DH, 2 ADD DL,2OUTPUT MSG2, 11, DH, DL RETSHUCHU_TISHI ENDP;*;正确率统计和报警程序由于本次课设还要求
17、设计的汇编语言程序具有统计正确率的功能,所以必须要有一段可以实现记录输入字符个数,并通过一个判断输入的字符是否与屏幕上由程序自动生成的字符串当中相对应的字符相同的程序,若相同的话,则使得统计输入正确的字符的寄存器增加一,然后将这两个程序联合使用来实现正确率的功能。由于这两个程序当中有需要调用其他子程序,涉及到的程序过多,这里只给出一小段核心程序,如下:MOVTO DH, DL; 显示光标的位置MOV AX, COUNT0CALL BINDEC; 显示输入字母的个数MOV AH, 2 MOV DL, '/' INT 21HMOV AX, BINDEC; 显示输入正确的字母个数CA
18、LL CHANGE POP DXJMP PRESS首先在这段程序当中,用到了宏指令MOVTO,前面也说到了该宏指令可以通过控制 DH、DL 的值来控制输出字符的位置。从而可以方便的控制想要显示的内容在屏幕上的位置。在这段程序当中还涉及到了 INT 21H 中断的应用,当 AH 当中为 02H 时,DL 当中的存储内容就是直接显示的内容,在这里我们用到“/” 即分数的形式来表达正确率,而不是直接计算出百分比。“/” 前面显示的内容是用户输入的内容与程序显示的字符一致的个数,作为分子,而“/”后面显示的内容是用户一共键入的字符个数,作为分母。由于在计算机当中,数据均以二进制的形式来储存,但二进制并
19、不是我们所习惯的数值表达方式,所以数据输出前需要经过一个进制转换程序的处理,经转换以后再输出到屏幕上供用户观看。在这里就又涉及到了进制转换程序。由于在本程序当中,进制转换程序并不是主要的程序单元,它只用作为辅助程序。需要提到的是当用户键入的字符错误,即不与程序自动产生的字符串中对应的字符相同时,需要调用到报警程序单元。用户键入错误字符有报警是本次课设的又一个主要要求,显然在调用报警程序之前,需要先判断键入的字符是否正确,在错误时才会调用报警程序,这就需要有一个可以判断键入字符的单元程序,该判断单元需要在用户每键入一个字符后便执行一次,因此它可以直接接在输入字符程序后面。;将二进制转化为十进制并
20、显示时间的程序 BINDEC PROC NEAR:通过给 CX 赋值并调用 DECDIVPROC 程序将系统内部计时的二进制数转换成十进制,并以ASCII 码形式输出;将数字以ASCII码形式输出程序DECDIVPROC:完成二十进制的转换并以ASCII码的形式输出,与前面的BINDECPROC程序一起实现二十进制的转换及输出功能;将2进制数转换成10进制数*BINDECPROC NEARMOV CX,10D;显示十位CALL DECDIVMOV CX,1;显示个位CALL DECDIV RETBINDECENDPDECDIVPROC NEAR;转化成字符显示MOV DX,0DIV CX MO
21、V BX,0ADD AL,30H;转换成ASCIIMOV AH,0EHINT 10H;显示一个字符MOV AX,DX RETDECDIVENDP;*;统计时间程序TIME PROC:由课程设计的要求中可以知道,本程序只要在加入一段可以计时的程序段即可基本满足课程设计的要求。在8086/8088的各种中断中, 有时钟服务指令INT 1AH可以实现读取时间的功能。它的入口参数是AH=02H, 也即当AH=02H时,出口参数CH为BCD码格式的小时,CL为BCD码格式的分钟,DH为BCD码格式的秒,由于程序需要实现的是从零开始的计时功能,所以只利用输出参数DH即可,另外标志位CF的值可以控制时钟是否
22、在走,当CF=0时时钟在走,否则时钟停止。在显示程序的时候要注意显示的问题,由于在显示时间的时候有两位数,若采用以为显示的INT 21H中的AH=02H,将会出现错误,所以在显示时间时,将二进制转变为十进制的时候要注意显示两位数,十位和各位,这点同时也用在正确率统计上。利用该中断指令的这一功能,我们得到如下的具有计时功能的程序段代码。将每次打字练习的经过的时间放在变量SECONT中,每次键入字母时将目前的时间与上次键入字母的时间相比,看在键入字母的的过程系统的时间是否变了, 如果变了就把新的时间存在SECONT中,并且计时的秒数自加一,然后依此计算分钟和小时,然后调用二十进制转换将时间以COU
23、NT5:COUNT4:COUNT3的形式输出;*时间* TIMEPROCPUSH AX PUSH DXMAIN:MOV AH, 2 INT 1AHCMP DH, SECONT JNE GETJMP NEXT GET:MOV SECONT,DH INC COUNT3MOV AX, COUNT3 CMP AX, 60JNE NEXT4MOV COUNT3, 0 INC COUNT4MOV AX, COUNT4 CMP AX, 60JNE NEXT4MOV COUNT4, 0 INC COUNT5NEXT4:MOV DH, 20MOV DL, 23MOVTO DH, DL MOV AX, COUNT
24、5 CALL BINDEC MOV AH, 2MOV DL, ':' INT 21HMOV AX, COUNT4 CALL BINDEC MOV AH, 2MOV DL, ':' INT 21HMOV AX, COUNT3 CALL BINDECNEXT:POP DX POP AX RETTIME ENDP;*4. 程序的调试与运行4.1 调试环境简介软件简介: MFPCI98 集成实验环境是针对汇编语言初学者的特点开发的一个简单易用的汇编语言学习软件(支持最新操作系统 Vista),它具有错误信息自动定位、关键字实时帮助并且在帮助中动画演示汇编指令的执行过程、
25、语法着色、无限次撤消与恢复、WORD 式的查找、替换、定位、支持中文、长文件名、软件可以安装在任意文件夹等功能。4.2 调试过程及结果分析1. 程序调试过程启动全屏幕编辑软件 MFPCI98,输入源程序。输入完毕后,按Ctrl+S 保存程序,规定扩展名为*.ASM。对源程序进行汇编。源程序进行汇编有三个步骤:第一个是汇编生成OBJ文件,即二进制目标文件,这是汇编的主要目的。第二个是连接。第三个是运行。武汉理工大学微机原理与接口技术课程设计说明书汇编过程中,如果源程序有语法错误,则汇编结束后,会指出源程序中的错误,这时可以通过修改源程序中的错误,最后,得到没有语法错误的OBJ 文件。当没有语法错
26、误而又无法得到正确结果时,可用调试来进行验证。它通过单步、设置断点等多种方式为我们提供非常有效的调试手段。2. 程序运行结果调试窗口如下:1) 设置主程序段显示输出信息,程序功能应该实现下图所示:2) 按下 ENTER 键后开始打字练习出现的界面:3) 从键盘上键入字母系列后的界面:154) 按下 ESC 键后,程序停止运行,运行 RESTART 程序,其输出界面如下:5) 按下 ENTER 后重新开始新一轮的打字练习,界面如下:武汉理工大学微机原理与接口技术课程设计说明书3. 调试中出现的问题:在设计程序过程中没有注意到要操作的目标数据(内存中的数据)的大小和使用的操作容器(寄存器)的大小不
27、是一致。在整个程序中没有考虑到光标的定位,致使字符的输出在屏幕上没有任何规律。在对堆栈进行操作时,没考虑到压入和弹出堆栈的顺序。在自编中断程序时当中断结束时,必须恢复原来的中断向量,否则后续程序不能正确使用系统提供的例行程序。设置和恢复中断向量时,要访问程序内部数据变量,DS 作为调用参数寄存器,要正确设置。 某些硬件中断例行程序在程序起始处将 DS 置成了 ROM 的数据段,所以在该中断的嵌套例行程序中,若要访问自编程序的数据变量,则必须将 DS 切换成用户数据段。285.课程设计收获及心得体会为期两周的课程设计终于完成了,回想起来有很多的感悟与收获。运用汇编语言来编写一个实用的程序对于我们
28、初学者来说是很有难度的。但是当真的要做的时候也只好尽自己最大的努力去做,做到自己最好的。我在这个过程中有很多自己的感受,我感觉汇编语言真的是很神奇,很有意思。我们从最刚开始的什么都不会到后来可以自己编程序,看着自己做出来的东西,心里感觉很快乐,设计和其他课程设计有共同的地方,那就是不仅加深和巩固了我们的课本知识,而且增强了我们自己动脑,自己动手的能力。但是我想他也有它的独特指出,那就是让我们进入一个神奇的世界,那就是编程。对于很多学过汇编或者其他的类似程序的同学来说,这不算新奇,但是对于我来说真的新奇,很有趣, 也使我有更多的兴趣学习微机原理和其他的汇编。在课程设计中过程中尤其是汇编的时候总会
29、出现这样或者那样的问题,这要求我们要学会分析问题并且学会解决问题,有时需要查书籍查资料看自己的错误在哪里,在这个过程中调试是极为重要的,通过一步一步的调试找出问题的症结所在。有时刚刚解决了这里的一个问题别的地方又有新的问题出现,这是我们不能泄气,我们要学会思考,是什么原因使得别的地方又有新的问题,是不匹配还是其他原因。同时我觉得团队精神也十分重要,有时同学的一句话就会点醒我们, 找到错误之处。总的来说我觉得微机原理与接口技术是一门很有趣的课程。他在讨论某一部分原理时又要涉及到其它部分的工作原理。这样一来,不仅不能在短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以
30、,在循序渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。参考文献1 赵润林、范国渠. 汇编语言程序设计教程与实训.北京大学出版社.20062 杨季文. 80X86 汇编语言程序设计教程.清华大学出版社.19983 钱晓捷. 汇编语言程序设计.电子工业出版社.20004 温冬蝉,沈美明.IBM PC 汇编语言程序设计.第 2 版.清华大学出版社.20025 艾德才等编著.微型接口技术实用教程.清华大学出版社.20026 姚燕南、薛均义主编.微型计算机原理与接口技术.高等教育出版社.2004附录一
31、程序代码如下:LF EQU 0AHCR EQU 0DH ;宏定义部分PRINT MACRO P1,P2 ; 输 出 “*”PUSH AX PUSH BX PUSH CXMOV AH, 09H MOV AL, P1 MOV BH, 0 MOV BL, P2 MOV CX, 1 INT 10HPOP CX POP BX POP AX ENDMMOVTO MACRO P1,P2 ;移动光标到指定位置PUSH AXPUSH DX MOV AH, 2 MOV DH, P1 MOV DL, P2 INT 10H POP DXPOP AX ENDMOUTPUTMACRO MSG,P1,P2,P3;输出字符串
32、LOCAL DIFFER, EXITOFPUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV DH, P2 MOV DL, P3 MOV BH, 0 MOV BL, P1 MOV DI, 0DIFFER:MOVAH,02HINT10HMOVCL,MSGDICMPCL,'$'JE EXITOFMOV AH, 9MOV AL, MSGDI MOV CX, 1INT 10H INC DI INC DLJMP DIFFEREXITOF:POP DI POP DX POP CX POP BX POP AX ENDMDSEGSEGMENT 'DAT
33、A'显示窗口内容MSG1 DB 'PRESS "ENTER" TO START!$' MSG2 DB 'PRESS "ESC" TO END!$' MSG3 DB 'THE PASSED TIME:$' MSG4 DB 'THE RATE OF CORRECT:$'MSG5 DB 'PRESS "ENTER" TO RESTART!$' MSG6 DB 'PRESS " ESC" TO OUT!$' SECONT
34、 DB 0COUNT0 DW 0;为了记录正确的字符数COUNT1 DW 0;字符总个数COUNT2 DW 0;为了到行尾时自动翻行的控制COUNT3 DW 0;秒COUNT4 DW 0;分COUNT5 DW 0;时DSEGENDSSSEGSEGMENT STACK'STACK' DW100DUP(?)SSEGENDSCSEGSEGMENT 'CODE'ASSUME CS:CSEG, SS:SSEG, DS:DSEG;* STARTPROCFARLZ:PUSHDSMOVAX, 0PUSHAXMOVAX, DSEGMOVDS, AXMOVES, AXCALL SH
35、UCHU_TISHI;输出提示信息MOV AH, 1;带回显的键符输入INT 21HMOV BL, AL;AL=输入的字符CMP AL,CR;判断输入的字符是否是ENTER键JE PRACTISECMP AL,1BH;判断是否要退出打字练习程序JE TZD_1JMP LZ PRACTISE:MOV DH,4 MOV DL,1LOOP1:MOVTO DH,DLPRINT '',0 INC DLCMP DL,46 JB LOOP1MOV DH, 2MOV DL, 1 MOVTO DH, DLMOV AH, 0 INT 1AHMOV AL, DL;随机生成字母CONT_1:CMP A
36、L, 7EH JA CONTCMP AL, 21H JB CONJMP CONTICONT:SUB AL, 7EH JMP CONT_1CON:ADD AL, 20H JMP CONT_1CONTI:MOV CX, 45MOVAH,9MOVBL,00001101BMOVDH,2MOVDL,0JMP SHUCHUTZD_1:;跳转点到“EXIT” JMP TZD_2SHUCHU:INC DLMOVTO DH, DL INT 10H ADD AL, 13CMP AL, 7EH JA CONTINUE LOOP SHUCHU JMP DAZIRUKOUCONTINUE:SUB AL, 7EH ADD
37、 AL, 20HLOOP SHUCHU;到此为输出上面一行要打字练习的内容;下面开始打字练习*DAZIRUKOU:MOV DH, 4MOV DL, 1 DAZI:;显示正确率* PUSH DXJMP DAZI1DAZI1:MOV DH, 20MOV DL, 1OUTPUT MSG3, 9, DH, DL MOV DH, 22MOV DL, 1OUTPUT MSG4, 9, DH, DL MOV DH, 22MOV DL, 26 MOVTO DH, DL MOV AX, COUNT0 CALL BINDEC MOV AH, 2MOV DL, '/'INT 21HMOV AX, C
38、OUNT1 CALL BINDEC POP DXJMP PRESS;*PRESS:CALL TIME;调用时间MOVTO DH, DLMOV AH, 01H INT 16HJNE KEY JMP PRESSKEY:MOV AH, 00 INT 16HCMP AL, 20h JE PAUSE JMP ISESCPAUSE:PUSH DXMOV AH, 06H MOV DL, 0FFH INT 21HPOP DXCMP AL, 20H JNE PAUSEISESC:CMP AL, 1BH JE TZD_2 CMP AL, 08H JE DELETE INC COUNT2 INC COUNT1 JM
39、P ISEQUALTZD_DAZI2: JMP DAZITZD_2:JMP SKIP DELETE:NOP DEL:;测试有无键盘按下;如果是空格就暂停;输入是空格就结束暂停;是上面的字符,则COUNT1加1PRINT ' ',0TZD_DAZI1:;跳转点,到“打字” JMP TZD_DAZI2ISEQUAL:MOV BL, AL CMP AL, 21H JB WRONG CMP AL, 7FH JA WRONG SUB DH, 3MOVTO DH, DL PRINT ' ',0 INC DLMOVTO DH, DLINC DH DEC DLMOVTO DH,
40、 DL MOV AH, 8 INT 10HCMP AL, BL JE EQUAL CALL SOUND MOV AL, BL MOV BL, 12 JMP UNEQUALWRONG: TZD_DAZI0:JMP TZD_DAZI1 EQUAL:INC COUNT0 MOV AL, BL MOV BL, 10UNEQUAL:ADD DH ,2 MOVTO DH, DLMOVAH,9MOVCX,1INT10HINCDLMOVAX,COUNT2CMPAL,45JBTZD_DAZI0 SUB AX, 45;读得光标处字符送到AL中;在此处添加警报声MOV COUNT2, AXREFLESH:;满一行后自动刷新(78个字符) MOV AH, 7INT 21H PRACTISE1:JMP PRACTISE SKIP:MOV DH, 5MOV DL, 18 JMP SKIP1PRACTISE0:JMP PRACTISE SKIP1:ADD DH, 10OUTPUT MSG5, 10, D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年全国导游证考试知识要点及预测题集
- 2025年财务会计岗位招聘面试预测题及策略分析
- 2025年猪肉储备库招聘面试题分析及应对策略
- 2025年软件开发技术面试模拟题集及解析
- 2025年物流行业运输调度员招聘考试题库及解析
- 2025年焊接工艺与热切割作业模拟题集及解析
- 38、水平一花样跳绳18
- 2025年护士中级职称考试专业知识题库
- 2025年燃气行业求职必-备中级储运工岗位模拟题与答案
- 2025年机械设计工程师面试宝典与模拟题答案详解篇
- 2025年医疗器械生产企业员工培训试题(附答案)
- 2025年中药调剂师试卷及答案
- PE管道铺设质量检测方案
- 破局向新 持续向上-2025年人力资源发展趋势报告-智联招聘北大国发院
- 自适应加密动态调整-洞察及研究
- 全力以赴战高考乘风破浪正当时(课件)-2025-2026学年高三上学期开学第一课主题班会
- 2025年北京市房屋租赁合同范本(个人版)
- 手术室护理个案分析
- DB4451T 4-2023 潮州工夫茶艺技术规程
- 运管助理面试题及答案
- 2025至2030年中国手机电池块市场分析及竞争策略研究报告
评论
0/150
提交评论