代码转换程序_第1页
代码转换程序_第2页
代码转换程序_第3页
代码转换程序_第4页
代码转换程序_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、代码转换程序微机原理及接口课程设计报告课题名称代码转换程序学院自动控制与机械工程学院专业班级姓名学号时间2021/12/31-2021/1/13目录微机原理课程设计任务书代码转换程序课程设计报告一.概述二.设计任务及预期目标和要求1.设计任务.2.设计目的和要求.三.设计思想分析.四.程序设计1.程序设计流程图.2.源程序代码.五.运行结果六.课程设计总结报告.1.课程设计中遇到的主要问题和解决方法.2.创新和得以之处.3.课程设计中的感想和心得体会.微机原理课程设计任务书一.课题题目:代码转换程序二.课题要求:在DOS环境中编程完成以下任务:完成一个字母或数制之间的转换程序,主程序分别具有5

2、种可选择的子功能,按菜单提示,选择相应的字符分别进入相应的子功能,并按屏幕提示完成相应得输入,并显示结果.按“q”健退出。可选择的子功能分别为:实现小写字母向大写字母的转换实现大写字母向小写字母的转换实现二进制数向十六进制数的转换实现十六进制数向二进制数的转换实现十六进制数向十进制数的转换1.参考设计基本思路编程实现上述功能;2.设计说明书;包括设计思想,程序流程图和源程序三设计基本思路:见课程设计指导书四时间进度表五考核方式六补充说明1.设计题目必须调试成功,(生成的可执行文件必须运行并且能够实现题目实现的功能),考核时独立完成考核内容,若未完成没有成绩。2.设计说明书必须独立完成,如果出现

3、70%相同视为雷同,取消成绩。七主要参考资料1.微机原理与接口技术李兰友编清华大学出版社20212.微机原理与应用潘名莲编电子科技大学19953.新编深入DOS编程求伯君主编学苑出版社1994代码转换程序课程设计报告一概述汇编语言是用指令助记符、符号地址和标号等书写程序的语言。用汇编语言编写的程序,称为汇编语言源程序。计算机不能直接识别和执行汇编语言,汇编语言源程序必须进行加工翻译转换为机器语言程序。将源程序翻译成机器语言程序的过程叫汇编。完成这种工作的语言程序称为汇编语言。二设计任务及目标1.设计任务在DOS环境中编程完成以下任务:完成一个字母或数制之间的转换程序,主程序分别具有5种可选择的

4、子功能,按菜单提示,选择相应的字符分别进入相应的子功能,并按屏幕提示完成相应得输入,并显示结果.按“q”健退出。可选择的子功能分别为:实现小写字母向大写字母的转换实现大写字母向小写字母的转换实现二进制数向十六进制数的转换实现十六进制数向二进制数的转换实现十六进制数向十进制数的转换1.参考设计基本思路编程实现上述功能;2.设计说明书;包括设计思想,程序流程图和源程序2.设计目的和要求目的:学习汇编语言综合应用程序设计方法,提高汇编语言实际应用能力,充分了解计算机硬件和软件,完成理论到实践的推进过程。要求:1.根据微机软、硬件条件,没人选定一个具有一定综合性的程序设计题目。(1)、对题目进行模块分

5、析(2)、系统设计实用,功能全面(3)、编程简练、清晰,可读性强,学习良好的程序设计风格。按质、按量,并按时间完成课程设计的任务。2.按照所安排的集中上机时间内完成程序调试任务。(1)、熟悉汇编语言的程序设计,BIOS中断调用,DOS系统功能调用等相关知识。(2)、熟悉汇编的上机环境,掌握汇编和各种程序调试方法,提高调试程序的效率。3、撰写设计论文(说明书),要求层次清楚,语言流畅。4,设计完成时英按时提交设计论文及设计程序。每组一个文件夹,文件夹以自己的名字和学号命名。5、提供可运行的课程设计程序,参加上机面试答辩。三设计思想分析1.设计分析调用BIOS的10H中断的02号功能设置光标;调用

6、DOS系统功能调用的09号功能显示字符串:一个有提示信息的开始界面。调用DOS系统功能调用的1号功能,能接受从键盘输入的字符到AL寄存器。1,首先做一个操作窗口,提示用户:2,输入1进行大写字母到小写字母的转换:3,输入2进行小写字母到大写字母的转换:4,输入3进行16进制数到2进制数的转换:5,输入4进行2进制数到16进制数的转换:6,用户输入相应的数字,进入不同的操作界面:7,然后输入相应的内容进行相应的转换,按回车输出结果,继续按回车返回主菜单操作界面。8,按q键退出。1.转换分析(1)实现大小写字母之间转换输入的字符串中,不是字母的字符不改变;大写字母改成小写字母时,若是大写字母则不改

7、变;同样,小写字母改成大写字母时,若是小写字母则不变。(2)二进制和十六进制之间的转换:输入一个二进制数(或十六进制数),用十六进制数(或二进制数)输出。数值转换是计算机科学技术中最为基础的运算,在日常生活中,人们习惯性的使用十进制数进行计算。而在计算机内部,所有的信息(数、字符、汉字、计算机的指令、状态)都是用二进制数来表示的。在计算机中,二进制数的运算、处理比十进制数的更容易实现。有时为了缩短书写,在计算机中还采用十六进制数。所以,我们需要把数从二进制数形式转换成其他进制的形式,甚至在不同的进位制之间进行转换。3.算法分析代码转换主要由两部分组成:大小写转换和数制转换。大小写字母转换就是在

8、其原来的ASCII码的基础上或加或减20H就可得到。数制转换是二进制、十六进制、十进制之间转换。通过调用不同的函数避免了数值之间的转换。对于输入的字符如果是010之间的就减去30H,得到其代表的数的含义,AF之间就减去37H,af之间就减去57H,得到其代表的数的含义,然后乘以权值相加存于寄存器即可。因为寄存器中存的本来就是二进制数,所以直接移位输出就可得到二进制数。十六进制数是每四位二进制数转换成一位十六进制数即可。通过调用DOS系统的输入输出功能,使程序具有一定的可视化程度,使用8086丰富的指令系统对输入数据进行处理,最终得到运算结果,在屏幕输出。因为本设计需满足两个功能,并需输入多字符

9、,故将使用汇编语言的顺序结构、分支结构和循环结构。主程序初始化后,在提示信息下输入功能选择键,程序会根据输入的键跳入相应的子程序中执行代码转换。这是一个分支结构。子程序执行完毕,可以根据需要选择结束程序或继续下一次转换。2.源程序代码DA TAS SEGMENTBUFFER DB 20 DUP(0)BUFFER1 DB 20 DUP(0)MSG1 DB PLEASE INPUT YOUR CHOICE: $MSG2 DB 1: Uppercase to lowercase $MSG3 DB 2: Lowercase to Uppercase $MSG4 DB 3: Binary to Hex

10、$MSG5 DB 4: Hex to Binary $MSG6 DB PLEASE INPUT SOME ALPHABET:$MSG7 DB PLEASE INPUT SOME BINARY NUMBER:$MSG8 DB PLEASE INPUT SOME HEX NUMBER:$DA TAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DA TA,SS:STACKSSTART: MOV AX,DA TASMOV DS,AXP: CALL MENU ;子程序调用CMP AL,1JZ A;若AL=1,则转到ACMP

11、AL,2JZ B ;若AL=2,则转到BCMP AL,3JNZ LOJMP CALO: CMP AL,4JNZ EXIT1JMP DEXIT1:JMP EXITA: CALL CLEAR ;子程序调用MOV AH,02 ;设置光标位置MOV DH,3MOV DL,2INT 10H ;中断指令MOV SI,OFFSET MSG6 ;取MSG6的地址指针送入SI MOV DX,SIMOV AH,09 ;显示一个字符串INT 21HLEA SI,BUFFER ;取BUFFER的有效地址给SI S: MOV AH,01 ;输入一个字符INT 21HMOV SI,ALINC SICMP AL,0DH ;

12、回车JNZ S ;若不输入回车,则继续执行S CALL CRLFMOV AH,02 ;设置光标位置MOV DH,5MOV DL,28INT 10HLEA SI,BUFFERQ: MOV AL,SICMP AL,aJNB E ;若AL的内容低于A则转到E ADD AL,20H ;AL加上20H,大写字母转换为小写字母E: MOV DL,ALMOV AH,02 ;显示一个字符INT 21HINC SIMOV AL,SICMP AL,0DHJNZ Q ;若不输入回车的话,则继续执行QMOV AH,01INT 21HCMP AL,0DHJZ P ;若输入回车,则返回PJMP EXITB: CALL C

13、LEAR ;调用子程序MOV AH,02MOV DH,3MOV DL,2INT 10HMOV SI,OFFSET MSG6MOV DX,SIMOV AH,09 ;显示一个字符串INT 21HLEA SI,BUFFERM: MOV AH,01INT 21HMOV SI,ALINC SICMP AL,0DHJNZ M ;若不输入回车,则继续执行MCALL CRLFMOV AH,02 ;设置光标位置MOV DH,5MOV DL,28INT 10HLEA SI,BUFFERI: MOV AL,SICMP AL,5AHJNGE X ;若AL的内容低于Z,则转到XSUB AL,20H ;小写字母转换为大写

14、字母X: MOV DL,ALMOV AH,02INT 21HINC SIMOV AL,SICMP AL,0DHJNZ IMOV AH,01 ;输入一个字符INT 21HCMP AL,0DHJNZ EXIT0 ;若不输入回车,则转到EXIT0出JMP PEXIT0:JMP EXITCA: CALL CLEARMOV AH,02 ;设置光标位置MOV DH,3MOV DL,2INT 10HMOV SI,OFFSET MSG7MOV DX,SIMOV AH,09INT 21HLEA SI,BUFFERNAA: MOV AH,01INT 21HMOV SI,ALINC SICMP AL,0DHJNZ

15、NAACALL CRLFLEA DI,BUFFERMOV AH,02MOV DH,5MOV DL,28INT 10HY: MOV AL,DISUB AL,30H ;将ASCII码转换为二进制MOV BL,8DMUL BLADD AL,30HMOV DL,0ADD DL,ALINC DIMOV AL,DISUB AL,30HMOV BL, 4DMUL BLADD DL,ALINC DIMOV AL,DISUB AL,30HMOV BL,2DMUL BLADD DL,ALINC DIMOV AL,DISUB AL,30HMOV BL,1DMUL BLADD DL,ALCMP DL,9JNG TAD

16、D DL,A-:T: MOV AH,02INT 21HINC DIMOV AL,DICMP AL,0DHJNZ YMOV AH,01INT 21HCMP AL,0DHJNZ EXITJMP PD: CALL CLEARMOV AH,02MOV DH,3MOV DL,2INT 10HMOV SI,OFFSET MSG8MOV DX,SIMOV AH,09INT 21HLEA SI,BUFFERFF:MOV AH,01INT 21HMOV SI,ALINC SICMP AL,0DHJNZ FFCALL CRLFLEA SI,BUFFERMOV DI,OFFSET BUFFER1RE: MOV AL

17、,SICMP AL,9JNG ZSUB AL,A-:Z: SUB AL,30HMOV CX,4ADD DI,4YU: CBWMOV BL,2DDIV BLMOV DI,AHPUSH AXADD AH,30H ; 二进制转化为ASCII码POP AXDEC DILOOP YUADD DI,4INC SIMOV AL,SICMP AL,0DHJNZ REINC DIMOV AL,$MOV DI,ALCALL CRLFMOV SI,OFFSET BUFFER1+1MOV AL,SIRT: ADD AL,30HMOV DL,ALMOV AH,02INT 21HINC SIMOV AL,SICMP AL

18、,$JNZ RTMOV AH,01INT 21HCMP AL,0DHJNZ EXITJMP PEXIT: MOV AH,4CHINT 21H ;返回DOS系统MENU PROC NEARCALL CLEAR ;调用子程序MOV AH,02 ;设置光标位置MOV DH,5 ;第5行MOV DL,25 ;第25列INT 10HLEA SI,MSG2MOV DX,SIMOV AH,09 ;显示MSG2的内容INT 21H ;输出MSG2字符串MOV AH,02 ;至光标位置MOV DH,7 ;第7行MOV DL,25 ;第25列INT 10HLEA SI,MSG3 ;取MSG3的有效地址MOV DX

19、,SIMOV AH,09INT 21H ;输出MSG3字符串MOV AH,02MOV DH,9 ;第9行MOV DL,25 ;第25列INT 10HLEA SI,MSG4 ;取MSG4的有效地址MOV DX,SIMOV AH,09INT 21H ;输出MSG4字符串MOV AH,02MOV DH,11 ;第11行MOV DL,25 ;第25列INT 10HLEA SI,MSG5MOV DX,SIMOV AH,09INT 21H ;输出MSG5字符串MOV AH,02 ;至光标位置MOV DH,15 ;第15列MOV DL,17 ;第17列INT 10HLEA SI,MSG1MOV DX,SIM

20、OV AH,09INT 21H ;输出MSG1字符串MOV AH,01 ;键盘输入INT 21HRET ;返回MENU ENDPCLEAR PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIMOV AH,07 ;屏幕初始化或下卷MOV AL,25 ;下卷行数MOV BH,70H ;卷入行属性MOV CH,0 ;左上角行号MOV CL,0 ;左上角列号MOV DH,24 ;右下角行号MOV DL,79 ;右下角列号INT 10HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETCLEAR ENDPCRLF PROC

21、NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIPUSH DIMOV DL,0DH ;输出回车MOV AH,02INT 21HMOV DL,0AH ;输出换行MOV AH,02INT 21HPOP DIPOP SIPOP DXPOP CXPOP BXPOP AXRETCRLF ENDPCODES ENDS ;代码段结束END START ;程序结束五运行方式和结果程序在运行时首先会显示主界面,然后根据用户的不同选择调用的模块,实现不同的功能。执行后跳转到主模块,若是其他字符,则显示出错信息,并返回主模块。(一)错误分析1.此处把小写的a打成大写的a,虽然编译时,程

22、序不会出错,但是运行程序时,就不能实现小写向大写的转换,使得程序运行有误。2.此处标注时,没打“;”造成编译错误,在标注前加“;”即可正常编译3.改正:MOV SI ,AL分析;MOV指令不能在两个内存单元之间传送数据。传送8位数据还是16位数据,取决于立即数的形式。4.温馨提示:此程序代码较多,在输入程序时应该把代码对其,方便检查;注意引号里大小写字母:注释时,分号“;”的使用用MOV指令时,判断“【】”符号的使用(二)正确运行运行程序进入如图所示界面1,输入1进入大写换小写操作界面运行结果如图3,输入2进入小写换大写操作界面安回车运行结果如图4,输入3进入2进制数转换成16进制数操作显示界面如图5.输入4进入16进制数转换2进制数操作界面如图六课程设计总结报告1.课程设计中所遇到的主要问题和解决方法课程设计中存在的不足,需要进一步改进的思想二进制换十六进制,输入的二进制代码只能是4的整数倍位,因为处理的时候是将4位二进制代码换算成一位16进制,

温馨提示

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

最新文档

评论

0/150

提交评论