代码转换程序设计.doc
《代码转换程序设计.doc》由会员分享,可在线阅读,更多相关《代码转换程序设计.doc(24页珍藏版)》请在沃文网上搜索。
1、目 录摘 要11 设计任务及分析21.1 设计任务要求21.2 设计系统分析21.3方案比较及认证22 方案设计32.1 方案原理32.2指令功能32.3 主程序流程图53 源程序73.1主程序设计73.2子程序大小写字母转换及流程图123.3子程序ASCII码转换CBA及流程图144 程序运行及调试164.1大小写转换174.2 ASCII码转换174.3 输入非字符184.4调试中出现的错误184.5结果分析205 心得体会21参考文献22本科生课程设计成绩评定表摘 要汇编语言是直接面向处理器(Processor)的程序设计语言。处理器是在指令的控制下工作的,处理器可以识别的每一条指令称为
2、机器指令。每一种处理器都有自己可以识别的一整套指令,称为指令集。处理器执行指令时,根据不同的指令采取不同的动作,完成不同的功能,既可以改变自己内部的工作状态,也能控制其它外围电路的工作状态。汇编语言的主要特点是可以使用助记符来表示机器指令的操作码和操作数,可以用标号和符号来代替地址、常量和变量。这次课程设计的任务是用汇编语言进行一个数制转换,从键盘输入一串字符(非字符则不接受),通过屏幕提示菜单选择转换成ASCII码,或者进行大小写转换(原来是大写转换成小写,小写则转换为大写)并显示。先输入要转换的数据,再对数据进行检验判断其合法性,对不合法的数据进行警报并重新输入数据,对合法的数据按照要求进
3、行大小写转换或者转换成ASCII,码,最后显示转换后的字符串。关键词:DOS功能调用 大小写转换 ASCII码1 设计任务及分析1.1 设计任务要求(1)用汇编语言编写一个字母和数制之间的转换程序,设计出友好的交互界面;(2)实现小写字母和大写字母之间的相互转换;附加功能:将字符转换成其相应的ASCII码;(3)撰写课程设计说明书。内容包括:摘要、目录、正文、参考文献、附录(程序清单)。正文部分包括:设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。1.2 设计系统分析DOS是一个磁盘操作系统,也称为IBM-DO
4、S或者MS-DOS。DOS不仅为用户提供了许多使用命令,而且还有用户可以直接调用的上百个子程序。对这些子程序的调用,称为系统功能调用。这些子程序主要完成一系列的管理功能。在使用时,用户不需要了解各种I/O接口硬件的详细情况,就能完成对I/O接口的控制和管理。为了使用方便,将所有子程序从1号开始顺序编号,这些编号称为DOS功能调用号。所以在进行设计之前,先要弄清楚DOS 功能调用。1.3 方案比较及认证方案一:通过运用汇编语言提供的基本指令,加上运用适当的循环方式,按照要求设计指令来达到满足要求的目的。这种方式比较容易理解和编程,是考虑到程序可能有许多重复的地方,运用这种直接的方法就可能造成代码
5、很多的结果。方案二:通过运用DOS函数调用,运用汇编语言提供的各种现成的函数来满足要求,也可以自己定义函数来达到某种要求,在重复使用时不用造重新编写,只需一个调用,大大简化了程序,这种方法更加简洁方便,所以选用这种方法。2 方案设计2.1 方案原理本次课程设计的要求是:从键盘输入一串字符,通过屏幕提示菜单选则进行大小写转换或者转换成相应的ASCII码并显示。设计的基本思路:首先要先完成字符串的输入并存在buf1中,然后输入一个字符通过检验字符来选择跳转到相应的子程序中去进行ASCII码转换或者进行大小写转换,将转换后的字符串存放到buf2中;转换完成后跳转到输出部分即可完成程序功能;为了程序能
6、重复运行,在代码段末尾加一条强制跳转语句跳到开头部分。2.2 指令功能(1)键盘输入并显示(1号功能调用)格式:INT 21H功能:按下任何键,将其对应字符的ASCII码送入AL中,并在屏幕上显示该字符。如果按下的是CtrlBreak组合键,则终止程序执行。1号功能调用无须入口参数,出口参数在AL中(2)键盘输入但不显示格式:MOV AH, 08HINT 21H功能:同1号功能调用,但字符不在屏幕上显示。(3)屏幕显示一个字符(2号功能调用)格式:MOV DL, 字符 MOV AH, 02HINT 21H功能:将置入DL寄存器中的字符在屏幕上显示输出。(4)打印输出(5号功能调用)格式:MOV
7、 DL, 字符 MOV AH, 05H INT 21H功能:将置入DL寄存器中的字符送打印机接口,打印输出。(5)屏幕显示 格式:LEA DX, 字符串的偏移地址 MOV AH, 09H INT 21H 功能:在屏幕上显示字符串。 在使用9号功能调用时,应当注意以下问题。 1)待显示的字符串必须先放在内存一数据区(DS段)中,且以$符号作为结束标志。 2)应当将字符串首地址的段基址和偏移地址分别存入DS和DX寄存器中。(6)字符串输入功能调用(0AH号功能调用) 格式:LEA DX, 已定义缓冲区的偏移地址 MOV AH, 0AH INT 21H 功能:从键盘接收字符,并存放到内存缓冲区。 在
8、使用0AH号功能调用时,应当注意以下问题。 1)执行前先定义一个输入缓冲区,缓冲区内第一个字节定义为允许最多输入的字符个数,字符个数应包括回车符0DH在内,不能为“0”值。第二个字节保留,在执 行程序完毕后存入输入的实际字符个数。从第三个字节开始存入从键盘上接收字符的ASCII码。若实际输入的字符个数少于定义的 2)应当将缓冲区首地址的段基址和偏移地址分别存入DS和DX寄存器中。(7)返回DOS操作系统(4CH号功能调用) 格式:MOV AH, 4CH INT 21H 功能:终止当前程序的运行,并把控制权交给调用的程序,即返回DOS系统,屏幕出现DOS提示符,如“C: ”,等待DOS命令。(8
9、)直接输入、输出单字符(6号功能调用) 格式:MOV DL, 输入/输出标志 MOV AH, 06H INT 21H 功能:执行键盘输入操作或屏幕显示输出操作,但不检查CtrlBreak组合键是否按下。执行这两种操作的选择由DL寄存器中的内容决定。 1)当(DL)0FFH时,执行键盘输入操作。若标志ZF0,AL中放入字符的ASCII码;若标志ZF1,表示无键按下。这种调用用来检测键盘是否有键按下,但不等待键盘输入。 2)当(DL)0FFH时,表示将DL中内容送屏幕显示输出。(9)检查键盘的工作状态(0BH号功能调用) 格式:MOV AH, 0BH INT 21H 功能:检查是否有键盘输入,若有
10、键按下,则使AL0FFH,若无键按下,则AL00H。对于利用键盘操作退出循环或使程序结束之类的操作来说,这种调用是很方便实用的。2.3 主程序流程图远程转移是段间的转移,目的地址与JMP指令所在地址不在同一段内。执行该指令时要修改CS和IP的内容。间接转移指令的目的地址可以由存储器或寄存器给出。段内间接转移 JMP WORD PTR OPRD ;IP=EA (由OPRD的寻址方式确定)。JMP WORD PTRBX IP=(DS)*16+(BX)JMP WORD PTR BX IP=(BX)段间间接转移 JMP DOWRD PTR OPRD;IP=EA,CS=EA+2该指令指定的双字节指针的第
11、一个字单元内容送IP,第二个字单元内容送CS。JMP DWORD PTR BX+SI根据题目的要求和选择的指令,首先设计出主程序,其流程图如图2-1:开始输出字符串输入提示符将字符输入缓冲区,再传入buf1LEA DI,buf+2 LEA SI,buf1 CX置0将di赋给DL DI加1movsi,dl si,cx加1传送完成? N Y 建立目标、源地址指针 Y输出信息进行转换选择输入字符 判断是否为A/a Y判断是否为B/b N调用子程序ABC N调用子程序CBA进行ASCII转换 Y 输出 输出图2-1 主程序的流程图 3 源程序3.1 主程序设计根据课题的要求,首先设计友好的人机交互页面
12、,编辑提示语,然后编辑自己所需的函数,通过DOS调用现成的以及自己编辑的函数,来满足题目要求。主程序如下: ;* 输入一串字符(非字符则不接受) * ;* 原字符存放在buf1中 ,转换后的字符存放在buf2中 * ;* 按照屏幕菜单选择进行ASCII码转换 * ;* 或者进行大小写转换 * ;*-*DATA SEGMENT ;数据段input db 0ah,0dh,if you want to quit ,please press Q/q! db 0ah,0dh,press other key to zhuanhuan,0ah,0dh,$ ; 输入提示inputmess db 0ah,0dh
13、,please input buf1:,0ah,0dh,$ buf db 100 db $ db 100 dup(0) ;字符缓冲区 ZHUANHUAN db 0ah,0dh,if you want to change case press A/a! db 0ah,0dh,if you want to transform to ascii press B/b!,0ah,0dh,$ ;转换提示outputmess db 0ah,0dh,after transform Character String BUF2 : db 0ah,0dh,BUF1:$ ;输出提示BUF1 DB 100 dup(0)
14、chgline db 0ah,0dh,BUF2:BUF2 DB 100 DUP($)BUF3 db 0ah,$DATA ENDS STACK1 SEGMENT STACK DB 20 DUP($)STACK1 ENDSCODE ;代码段SEGMENT ASSUME DS:DATA,SS:STACK1,CS:CODESTART:MOV AX,DATA MOV DS,AXAP: LEA DX,input ;输入提示 MOV AH,9 INT 21h MOV AH,08h INT 21h CMP AL,Q JE exit CMP AL,q JE exitPA: LEA DX,inputmess MO
15、V AH,9INT 21h LEA DX,buf MOV AH,10 ;输入字符 INT 21h LEA di,buf+2 ;将字符存入缓冲区buf中 LEA si,buf1 MOV CX,0next: MOV DL,di INC di CMP DL,0dh ;判断是否传送完毕 JNE aa JMP end0aa: MOV si,DL ;将缓冲区buf中的内容存入buf1中 INC si INC CX JMP next exit: MOV AH,4CH INT 21Hend0: MOV byte ptr si,$ INC CX MOV BP,CX MOV SI,OFFSET BUF1 ;建立源
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 代码 转换 程序设计
