代码转换程序《微机原理及接口》课程设计报告课题名称代码转换程序学院自动控制与机械工程学院专业班级姓名学号时间2021/12/31-2021/1/13目录微机原理课程设计任务书……………………………………代码转换程序课程设计报告…………………………………一.概述…………………………………………………………二.设计任务及预期目标和要求………………………………1.设计任务…………………………………………………….2.设计目的和要求…………………………………………….三.设计思想分析……………………………………………...四.程序设计……………………………………………………1.程序设计流程图…………………………………………….2.源程序代码………………………………………………….五.运行结果……………………………………………………六.课程设计总结报告………………………………………...1.课程设计中遇到的主要问题和解决方法………………….2.创新和得以之处…………………………………………….3.课程设计中的感想和心得体会…………………………….微机原理课程设计任务书一.课题题目:代码转换程序二.课题要求:在DOS环境中编程完成以下任务:完成一个字母或数制之间的转换程序,主程序分别具有5种可选择的子功能,按菜单提示,选择相应的字符分别进入相应的子功能,并按屏幕提示完成相应得输入,并显示结果.按“q”健退出。可选择的子功能分别为:●实现小写字母向大写字母的转换●实现大写字母向小写字母的转换●实现二进制数向十六进制数的转换●实现十六进制数向二进制数的转换●实现十六进制数向十进制数的转换1.参考设计基本思路编程实现上述功能;2.设计说明书;包括设计思想,程序流程图和源程序三.设计基本思路:见课程设计指导书四.时间进度表五.考核方式六.补充说明1.设计题目必须调试成功,(生成的可执行文件必须运行并且能够实现题目实现的功能),考核时独立完成考核内容,若未完成没有成绩。2.设计说明书必须独立完成,如果出现70%相同视为雷同,取消成绩。七.主要参考资料1.《微机原理与接口技术》李兰友编清华大学出版社20212.《微机原理与应用》潘名莲编电子科技大学19953.《新编深入DOS编程》求伯君主编学苑出版社1994代码转换程序课程设计报告一.概述汇编语言是用指令助记符、符号地址和标号等书写程序的语言。用汇编语言编写的程序,称为汇编语言源程序。计算机不能直接识别和执行汇编语言,汇编语言源程序必须进行加工翻译转换为机器语言程序。将源程序翻译成机器语言程序的过程叫汇编。完成这种工作的语言程序称为汇编语言。二.设计任务及目标1.设计任务在DOS环境中编程完成以下任务:完成一个字母或数制之间的转换程序,主程序分别具有5种可选择的子功能,按菜单提示,选择相应的字符分别进入相应的子功能,并按屏幕提示完成相应得输入,并显示结果.按“q”健退出。可选择的子功能分别为:●实现小写字母向大写字母的转换●实现大写字母向小写字母的转换●实现二进制数向十六进制数的转换●实现十六进制数向二进制数的转换●实现十六进制数向十进制数的转换1.参考设计基本思路编程实现上述功能;2.设计说明书;包括设计思想,程序流程图和源程序2.设计目的和要求目的:学习汇编语言综合应用程序设计方法,提高汇编语言实际应用能力,充分了解计算机硬件和软件,完成理论到实践的推进过程。要求:1.根据微机软、硬件条件,没人选定一个具有一定综合性的程序设计题目。(1)、对题目进行模块分析(2)、系统设计实用,功能全面(3)、编程简练、清晰,可读性强,学习良好的程序设计风格。按质、按量,并按时间完成课程设计的任务。2.按照所安排的集中上机时间内完成程序调试任务。(1)、熟悉汇编语言的程序设计,BIOS中断调用,DOS系统功能调用等相关知识。(2)、熟悉汇编的上机环境,掌握汇编和各种程序调试方法,提高调试程序的效率。3、撰写设计论文(说明书),要求层次清楚,语言流畅。4,设计完成时英按时提交设计论文及设计程序。每组一个文件夹,文件夹以自己的名字和学号命名。5、提供可运行的课程设计程序,参加上机面试答辩。三.设计思想分析1.设计分析调用BIOS的10H中断的02号功能设置光标;调用DOS系统功能调用的09号功能显示字符串:一个有提示信息的开始界面。调用DOS系统功能调用的1号功能,能接受从键盘输入的字符到AL寄存器。1,首先做一个操作窗口,提示用户:2,输入1进行大写字母到小写字母的转换:3,输入2进行小写字母到大写字母的转换:4,输入3进行16进制数到2进制数的转换:5,输入4进行2进制数到16进制数的转换:6,用户输入相应的数字,进入不同的操作界面:7,然后输入相应的内容进行相应的转换,按回车输出结果,继续按回车返回主菜单操作界面。8,按‘q’键退出。1.转换分析(1)实现大小写字母之间转换输入的字符串中,不是字母的字符不改变;大写字母改成小写字母时,若是大写字母则不改变;同样,小写字母改成大写字母时,若是小写字母则不变。(2)二进制和十六进制之间的转换:输入一个二进制数(或十六进制数),用十六进制数(或二进制数)输出。数值转换是计算机科学技术中最为基础的运算,在日常生活中,人们习惯性的使用十进制数进行计算。而在计算机内部,所有的信息(数、字符、汉字、计算机的指令、状态)都是用二进制数来表示的。在计算机中,二进制数的运算、处理比十进制数的更容易实现。有时为了缩短书写,在计算机中还采用十六进制数。所以,我们需要把数从二进制数形式转换成其他进制的形式,甚至在不同的进位制之间进行转换。3.算法分析代码转换主要由两部分组成:大小写转换和数制转换。大小写字母转换就是在其原来的ASCII码的基础上或加或减20H就可得到。数制转换是二进制、十六进制、十进制之间转换。通过调用不同的函数避免了数值之间的转换。对于输入的字符如果是0—10之间的就减去30H,得到其代表的数的含义,A—F之间就减去37H,a—f之间就减去57H,得到其代表的数的含义,然后乘以权值相加存于寄存器即可。因为寄存器中存的本来就是二进制数,所以直接移位输出就可得到二进制数。十六进制数是每四位二进制数转换成一位十六进制数即可。通过调用DOS系统的输入输出功能,使程序具有一定的可视化程度,使用8086丰富的指令系统对输入数据进行处理,最终得到运算结果,在屏幕输出。因为本设计需满足两个功能,并需输入多字符,故将使用汇编语言的顺序结构、分支结构和循环结构。主程序初始化后,在提示信息下输入功能选择键,程序会根据输入的键跳入相应的子程序中执行代码转换。这是一个分支结构。子程序执行完毕,可以根据需要选择结束程序或继续下一次转换。2.源程序代码DATASSEGMENTBUFFERDB20DUP(0)BUFFER1DB20DUP(0)MSG1DBPLEASEINPUTYOURCHOICE:$MSG2DB1:Uppercasetolowercase$MSG3DB2:LowercasetoUppercase$MSG4DB3:BinarytoHex$MSG5DB4:HextoBinary$MSG6DBPLEASEINPUTSOMEALPHABET:$MSG7DBPLEASEINPUTSOMEBINARYNUMBER:$MSG8DBPLEASEINPUTSOMEHEXNUMBER:$DATASENDSSTACKSSEGMENTSTACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATA,SS:STACKSSTART:MOVAX,DATASMOVDS,AXP:CALLMENU;子程序调用CMPAL,'1'JZA;若AL=1,则转到ACMPAL,'2'JZB;若AL=2,则转到BCMPAL,'3'JNZLOJMPCALO:CMPAL,'4'JNZEXIT1JMPDEXIT1:JMPEXITA:CALLCLEAR;子程序调用MOVAH,02;设置光标位置MOVDH,3MOVDL,2INT10H;中断指令MOVSI,OFFSETMSG6;取MSG6的地址指针送入SIMOVDX,SIMOVAH,09;显示一个字符串INT21HLEASI,BUFFER;取BUFFER的有效地址给SIS:MOVAH,01;输入一个字符INT21HMOV[SI],ALINCSICMPAL,0DH;回车JNZS;若不输入回车,则继续执行SCALLCRLFMOVAH,02;设置光标位置MOVDH,5MOVDL,28INT10HLEASI,BUFFERQ:MOVAL,[SI]CMPAL,'a'JNBE;若AL的内容低于‘A’则转到EADDAL,20H;AL加上20H,大写字母转换为小写字母E:MOVDL,ALMOVAH,02;显示一个字符INT21HINCSIMOVAL,[SI]CMPAL,0DHJNZQ;若不输入回车的话,则继续执行QMOVAH,01INT21HCMPAL,0DHJZP;若输入回车,则返回PJMPEXITB:CALLCLEAR;调用子程序MOVAH,02MOVDH,3MOVDL,2INT10HMOVSI,OFFSETMSG6MOVDX,SIMOVAH,09;显示一个字符串INT21HLEASI,BUFFERM:MOVAH,01INT21HMOV[SI],ALINCSICMPAL,0DHJNZM;若不输入回车,则继续执行MCALLCRLFMOVAH,02;设置光标位置MOVDH,5MOVDL,28INT10HLEASI,BUFFERI:MOVAL,[SI]CMPAL,5AHJNGEX;若AL的内容低于‘Z’,则转到XSUBAL,20H;小写字母转换为大写字母X:MOVDL,ALMOVAH,02INT21HINCSIMOVAL,[SI]CMPAL,0DHJNZIMOVAH,01;输入一个字符INT21HCMPAL,0DHJNZEXIT0;若不输入回车,则转到EXIT0出JMPPEXIT0:JMPEXITCA:CALLCLEARMOVAH,02;设置光标位置MOVDH,3MOVDL,2INT10HMOVSI,OFFSETMSG7MOVDX,SIMOVAH,09INT21HLEASI,BUFFERNAA:MOVAH,01INT21HMOV[SI],ALINCSICMPAL,0DHJNZNAACALLCRLFLEADI,BUFFERMOVAH,02MOVDH,5MOVDL,28INT10HY:MOVAL,[DI]SUBAL,30H;将ASCII码转换为二进制MOVBL,8DMULBLADDAL,30HMOVDL,0ADDDL,ALINCDIMOVAL,[DI]SUBAL,30HMOVBL,4DMULBLADDDL,ALINCDIMOVAL,[DI]SUBAL,30HMOVBL,2DMULBLADDDL,ALINCDIMOVAL,[DI]SUBAL,30HMOVBL,1DMULBLADDDL,ALCMPDL,'9'JNGTADDDL,'A'-':'T:MOVAH,02INT21HINCDIMOVAL,[DI]CMPAL,0DHJNZYMOVAH,01INT21HCMPAL,0DHJNZEXITJMPPD:CALLCLEARMOVAH,02MOVDH,3MOVDL,2INT10HMOVSI,OFFSETMSG8MOVDX,SIMOVAH,09INT21HLEASI,BUFFERFF:MOVAH,01INT21HMOV[SI],ALINCSICMPAL,0DHJNZFFCALLCRLFLEASI,BUFFERMOVDI,OFFSETBUFFER1RE:MOVAL,[SI]CMPAL,'9'JNGZSUBAL,'A'-':'Z:SUBAL,30HMOVCX,4ADDDI,4YU:CBWMOVBL,2DDIVBLMOV[DI],AHPUSHAXADDAH,30H;二进制转化为ASCII码POPAXDECDILOOPYUADDDI,4INCSIMOVAL,[SI]CMPAL,0DHJNZREIN