微机原理课程设计键盘录入转换程序设计_第1页
微机原理课程设计键盘录入转换程序设计_第2页
微机原理课程设计键盘录入转换程序设计_第3页
微机原理课程设计键盘录入转换程序设计_第4页
微机原理课程设计键盘录入转换程序设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉理工大学微型计算机原理课程设计说明书1设计概述 此次课程设计为键盘录入转换程序设计,满足以下要求:通过键盘连续录入可显示多个字符,遇“.”时终止;字符串以空格和“.”分隔,输入完成后,空格前的字符串以正向在屏幕上显示,“.”前的字符串以反向在屏幕上显示。程序设计主要包括调用dos系统的int 21h功能从键盘输入字符然后显示字符,通过调用相应的字程序判断输入的字符是否为空格和“.”,当输入“.”时终止字符的输入,配合调用另一子程序来实现空格前的字符串在屏幕向以正序显示,“.”前的字符串在屏幕上以反序显示,从而完成此次课程设计。由于本程序设计大量使用调用dos系统的int 21h功能,本报告

2、书将首先介绍dos系统的int 21h功能,然后进行详细的程序设计。2 程序设计相关知识介绍2.1 dos及其功能调用dos操作系统从两个层次上向用户提供与操作系统的接口,普通用户可以通过键盘命令在命令处理模块层次上和操作系统互交,高级用户可以通过软件中断的方式在dos的较低层次上合操作系统交互,包括dos中断调用和bios功能调用。dos操作系统将输入输出管理程序编制成一系列子程序,不仅系统可以使用,用户也可以像调用子程序一样方便的调用它们。这些子程序或常驻内存,或固化在系统的rom中。目前dos常用的9类中断(20h27h和2fh)分为两种:1 dos专用中断:int22h、int23h和

3、int24h,用户不能使用。2dos可调用中断:int20h、int27h(程序退出)、int21h(系统功能调用)、int25h、int26h(磁盘r/w中断)、int 2fh(假脱机打印文件)。dos系统功能调用的方式是通过执行软中断指令int21h来实现的。当寄存器ax中设置不同的值时,该指令将完成不同的功能。在21h类型所对应的中断程序中包含了一系列最常用的功能子程序,这些子程序分别分别实现外部设备管理功能、文件读写和管理功能、目录管理功能等,所以21h类型中断几乎包括了整个系统的功能,系统功能调用的名称也就由此而来。dos启动成功后,int21h的中断向量(中断处理程序首地址)被初始

4、化在中断向量表中向量地址为84h到87h的4个字节单元内。所有系统功能调用的各自功能的介绍见表1,有些系统调用功能简单,不需要设置入口参数,或者说没有出口参数。详细的功能、入口参数、出口参数要求可见专门的手册。通常,默认标准设备为:标准输入设备(控制台输入)是键盘;输出设备(控制台输出)是显示器;标准辅助设备是第一个rs232串口异步通讯接口,打印输出为第一个并行接口等。表1 字符i/o系统功能调用功能号功能入口参数出口参数01h带回显的键盘输入al=输入字符03h串行口输入字符al=输入字符06h直接控制台i/odl=ff(输入)dl=字符(输出)al=输入字符07h直接控制台输入(无回显)

5、al=输入字符08h无回显的键盘输入al=输入字符0ah字符串缓冲输入ds:dx=缓冲区首址0bh取键盘输入状态al=00无键入al=ff有键入0ch清键盘缓冲区后,输入al=功能号(01/06/07/08或0a)02h字符显示dl=输出字符04h串行口输出字符dl=输出字符05h字符打印dl=输出字符09h字符串显示ds:dx=缓冲区首址0dh初始化键盘1功能01h、07h和08h 功能描述:从标准输入设备(如:键盘)读入一个字符。该中断在处理过程中将一直处于等待状态直到有字符可读为止。该输入还可被重定向,如果这样做,则无法判断文件是否已到文件尾。入口参数:ah01h,过滤掉控制字符,并回显

6、。 ah07h,不过滤掉控制字符,不回显。 ah08h,过滤掉控制字符,不回显。出口参数:al输入字符的ascii码。例如:读键盘输入一个字符并且回显的程序。mov ah,1int 21h2功能02h功能描述:向标准输出设备(如:屏幕)输出一个字符。该输出还可被重定向,如果这样做,则将无法判断磁盘是否满。 入口参数:ah02h,dl待输出字符的ascii码。出口参数:无。其基本格式如下:mov ah,2mov dl,要显示的字符的asciiint 21h3功能03h功能描述:从辅助设备读入一个字符,该辅助设备的缺省值为com1。入口参数:ah03h。出口参数:al读入字符的ascii码。4功能

7、04h功能描述:向辅助设备输出一个字符,该辅助设备的缺省值为com1入口参数:ah04h,dl待输出字符的ascii码。出口参数:无。5功能06h功能描述:控制台(如:键盘、屏幕)输入/输出。如果输入/输出操作被重定向,那么,将无法判断文件是否已到文件尾,或磁盘已满。入口参数:ah06h,dl输入/输出功能选择。出口参数:若dl00h-feh,则此功能为输出,dl为待输出字符的ascii码;若dl0ffh,则此功能为输入,此时:若zf1,则无字符可读,否则,al读入字符的ascii码。6. 功能09h功能描述:输出一个字符串到标准输出设备上。如果输出操作被重定向,那么,将无法判断磁盘已满。入口

8、参数:ah09h,ds:dx待输出字符的地址,待显示的字符串以$作为其结束标志,否则会引起屏幕混乱。显示时在字符串结束前加上回车及换行的ascii码0dh和0ah,可使光标自动换行。出口参数:无。其基本格式如下:mov ah,9lea dx,int 21h7功能0ah功能描述:从标准输入设备上读入一个字节字符串,遇到“回车键”结束输入(输入的字符在标准的输出设备上有回显)。如果该输入操作被重定向,那么,将无法判断文件是否已到文件尾。入口参数:ah0ah,ds:dx存放输入字符的起始地址。第一个字节为缓冲区的最大容量,可认为是入口参数;第二个字节为实际输入的字符数(不包括回车键),可看作出口参数

9、;从第三个字节开始存放实际输入的字符串;字符串以回车键结束,回车符是接受的最后一个字符;若输入的字符数超过缓冲区的最大容量,则多出的部分被丢弃,系统并发出响铃,直到输入“回车”键才结束输入。 出口参数:无。例如:用dos系统调用0ah从键盘输入一个字符串str1 db 10,? 10 dup(?)lea dx,str1mov ah,oahint 21h8功能0bh功能描述:检查标准输入设备上是否有字符可读,该输入操作可被重定向。入口参数:ah0bh。出口参数:al00h无字符可读;ffh有字符可读。9功能0ch功能描述:清空当前的标准输入缓冲区,再读入字符。其输入操作可被重定向。入口参数:ah

10、0ch,al01h、06h、07h、08h或0ah。出口参数:若入口参数al为0ah,则ds:dx存放输入字符的起始地址,否则,出口参数al输入字符的ascii码。2.2 ascii码由于计算机硬件只能识别二进制数,字母和字符也必须使用二进制编码来表示。目前用来表示字母和字符的二进制编码方式有很多种,最常用的是ascii码。ascii码又称美国信息交换标准码(american standard code for information interchange) ,多用于输入输出设备(如电传打字机),是7位二进制编码。它总共可表示128个符号,包括26个英文大写字母, 26个英文小写字母,09共

11、十个数字,32个通用控制字符和34个专用字符。在计算机中用一个字节存放字符编码,故在ascii的最高位补0。因此ascii可表示8位二进制或两位16进制数。本设计所需要的“.”的ascii码为2eh,空格的ascii码为20h,回车及换行的ascii码0dh和0ah。3程序设计3.1主程序设计由于需要通过键盘连续录入可显示的字符,需要调用dos系统的int 21h一系列子功能从键盘输入字符然后显示出来,最开始进行初始化,首先调用09h号子功能从键盘输入“please input the string:”提示输入一连串字符,以回车和换行作为结束自动切入另一行从而从键盘输入字符;通过调用judge

12、子程序对输入的字符进行判断,判断其是否为空格键和”.”键,当遇到空格时继续输入字符,遇到“.”时终止字符输入。同时根据judge子程序的返回值作为判断调用change子程序,当输入字符没有空格时字符全部以反序输出显示在屏幕上,当输入字符有空格时对于空格前的字符以正序输出显示在屏幕上,对于“.”前的字符以反序输出显示在屏幕上。主程序的程序流程图如下。偏移地址指针si清零int 21h的09号子功能显示str1字符串dh清零段寄存器、堆栈和界面初始化开 始int 21h的01h号子功能接收键入字符调用judge子程序int 21h的01h号子功能接收键入字符cf=1?dh=1?$传送到string

13、+si+1调用change子程序si加1ynint 21h的02h号子功能显示回车和换行int 21h的09号子功能显示str2和string字符串di加1ny结 束 图1 主程序设计流程图3.2 judge子程序设计对输入的字符首先判断其是否为空格键,若为空格键则将dh和cf置1,并且将数输入的字符送到string中,若不为空格键则继续判断其是否为“.”键,则将cf置0,将其值返回后终止输入字符。其程序流程图如下。将si传送给dial=20h?将1传送给dhal=2eh?nyjudge子程序stcal传送到string yncf=1图2 judge子程序流程图返 回3.3 change子程序

14、设计由于字符串处理在堆栈中进行,首先将断点数据压入堆栈,以便调用子程序后可以正确的返回主程序中,对输入的数据的长度进行处理,计算设置si 和di 的初值,设置循环,将循环次数赋予cl从而控制循环,然后将string+si传送到al中,用xchg将al和string+di数据交换,循环结束后从而使得正序输入的数据以反向输出显示在屏幕上,最后将断点数据出堆栈返回到主程序。子程序流程图如下。change子程序断点数据压入堆栈设置si和di初值将string+si传送到al将string+di与 al数据交换将al传送到 string+sisi减1,di加1断点数据出堆栈cf=0?返 回ny 图3 c

15、hange子程序流程图3.4 程序编写根据分析和程序流程图,编写以下程序。%定义数据段%data segment str1 dbplease input the string:,0ah,0dh,$ str2 db the result is:,0ah,0dh,$ string db 100 dup(?) menu1 db welcome sunlifei de design $data endsshuchu macro op1,op2,op3,op4,op5,op6 %循环输出,用于初始化界面周边的笑脸符%mov cx,0mov dh,op1 %起始行mov dl,op2 %起始列%op6:

16、mov ah,02hmov bh,01hint 10hpush cxmov ah,0ahmov al,op3 %要显示的字符mov cx,01hmov bh,00hint 10hpop cxinc cxinc op4 %这里指的要循环输出的是行还是列%cmp cx,op5 %循环次数%jne op6endmmenu macro op1,op2,op3 %用于屏幕上文字的输出%mov cx,0%1,2为起始输出的行、列,3为字符串的地址%mov ah,02hmov bh,00hmov dh,op1mov dl,op2int 10hlea dx,op3mov ah,9int 21h endmcls

17、 macro op1,op2,op3,op4 %用于清屏,分别是起止的行和列 mov ah,6mov bh,17hmov al,0mov ch,op1mov cl,op2mov dh,op3mov dl,op4int 10hmov ah,2 mov bh,0mov dh,0mov dl,0int 10hendm%定义堆栈段%stack segment db 100 dup(?)stack ends%定义代码段%code segment assume cs:code,ds:data,ss:stack%主程序设计%start:mov ax,data %将数据段地址传送给ds% mov ds,ax

18、mov ax,stack %将堆栈段地址传送给ss% mov ss,ax mov si,0 %源字符串首地址置0% mov ah,9 %调用dos的09h功能号功能,将输入的字符串显示% lea dx,str1 %将str1的有效地址传送给dx% int 21h %调用dos的21h中断% xor dh,dh %异或将dh清零%loop1:mov ah,01h %调用dos的01h功能号功能,带回显的键盘输入% int 21h call judge %调用judge子程序% jc done %进位标志cf=1时跳转% inc si %si加1% jmp loop1 %无条件跳转%down: c

19、mp dh,1 %将dh与1比较% je next %dh=1时跳转% dec di %di减1%next: movstring+si+1,$ %传送指令% call change %调用change子程序% mov ah,02h %调用dos的02h功能号功能,将输入的字符串显示mov dl,0dh %将字符串结束前的回车显示回来% int 21h %调用dos的21h中断% mov dl,0ah %将字符串结束前换行显示出来% int 21h %调用dos的21h中断% mov ah,09h %调用dos的09h功能号功能,将输入的字符串显示% lea dx,str2 %将str2的有效地

20、址传送给dx% int 21h %调用dos的21h中断% mov ah,09h %调用dos的09h功能号功能,将输入的字符串显示% lea dx,string %将string的有效地址传送给dx% int 21h %调用dos的21h中断% mov ah,01h %调用dos的01h功能号功能,带回显的键盘输入% int 21h mov ah,4ch %结束程序% int 21h%空格和“.”判断子程序%judge proc cmp al,20h %将输入的数据与空格键比较% jnz next1 %输入数据不为空格键时跳转到next1% mov di,si %输入数据为空格键时传送数据%

21、 mov dh,01h %传送指令%next1: cmp al,2eh %将输入的数据与“.”比较% jnz next2 %输入数据不为“.”时跳转next2% stc jmp next3 %跳转到next3%next2: clc %标志位cf清零%nect3: movstring+si,al %传送指令% ret %返回指令%judge endp%字符串反向屏幕显示子程序%change proc push ax %堆栈操作保护现场% push bx push cx push si push di mov ax,si %传送指令% sub ax,di %将两者相加结果送ax% dec ax %

22、ax加1% mov bl,02h %传送指令% div bl %ax除以2% mov cl,al %传送指令% xor ch,ch %将ch清零% sub si,cx %两数相减将结果送si% add di,cx %将两者相加结果送ax% loop2: mov al,string+si %传送指令% xchg string+di,al %将两者数据交换% mov string+si,al %传送指令% dec di %di减1% inc si %si加1% loop loop2 %循环loop2过程% pop di %恢复现场% pop si pop cx pop bx pop ax retc

23、hange endp %子程序结束%code ends %代码结束%end start4 程序调试4.1汇编语言源程序的汇编、连接和装入运行汇编语言源程序编写好以后,并不能直接运行,必须在汇编环境下对源程序进行汇编和连接,生成可执行的文件后才能运行程序。一般需经过4个步骤。编辑:首先通过编辑器输入、建立汇编源程序(文件名.asm),并以ascii码的形式存入内存缓冲区。汇编:将汇编源程序(文件名.asm)经汇编程序翻译后生成扩展名为.obj的目标文件、扩展名为.lst的列表文件和扩展名为.crf的交叉索引文件。通常目标文件时必须建立的,他包含了程序中所有机器代码。列表文件包含了源程序、目标代码

24、、注释等全部信息,列表文件可供打印。可共分调试检查用。交叉索引文件时用来了解源程序中的符号定义及引用情况的。后面两个文件不是必需的,可通过汇编时的命名加以选择,打入“回车键”就是不需要。连接:将.obj文件(一个或多个)与系统提供的.lib库文件连接,形成.exe可执行文件和.map内存分配文件。连接后的壳执行文件(.exe)是可以运行的文件。调试:对.exe文件进行调试。4.2调试过程与调试结果及分析通过以上步骤在mf2ki软件中进行调试,首先输入源程序,点击汇编后,检查是否存在错误,修改好所有出现的错误后,当输入“abcdefgh$ xyz .n”后,其结果如下,由于输入字符存在“$”,d

25、os系统的int 21h下的09h字功能以“$”为结束符,自动结束字符串的显示,故当输入”.”后并未终止输入字符。图4 有“$”存在时的调试结果当输入字符“abcdefg xyz xyzabcdefgh.”时,其结果如下。当输入字符有“.”时终止字符输入 ,由于存在空格键故输入字符中空格键前的字符串以正序显示,最后一个空格键后的字符串以反序显示在屏幕上。图5 有空格键时的调试结果当输入字符“abcdefgxyzxyzabcdefgh.”时,其结果如下。当输入字符有“.”时终止字符输入 ,由于不存在空格键故输入字符串以反序显示在屏幕上。图6 有空格键时的调试结果通过以上调试及分析所编写的程序正确

26、能满足程序要求。5 设计小结此次程序设计主要包括调用dos系统的int 21h功能从键盘输入字符然后显示字符,通过调用相应的字程序判断输入的字符是否为空格和“.”,当输入“.”时终止字符的输入,配合调用另一子程序来实现空格前的字符串在屏幕向以正序显示,“.”前的字符串在屏幕上以反序显示,通过编写相应的主程序和judge、change两个子程序,经反复调试、运行及修改得出满足要求的程序,从而完成此次课程设计。6 心得体会微型计算机原理作为电子信息类本科生教学的主要基础课之一,课程紧密结合电子信息类的专业特点,围绕微型计算机原理和应用主题,系统介绍微型计算机的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论