课程设计说明书院系:计算机专业班级:计1002学号:3100301206学生姓名:郑志强指导教师:蔡文培2010年12月31日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室学号学生姓名专业(班级)设计题目题目一:判断闰年题目二:简单计算器题目三:代码转换程序√题目四:字符图形程序题目五:学生成绩管理题目六:打字练习(注:请在自己选做的题目后打√)设计技术参数1.熟悉汇编指令、宏汇编语言的编程方法2.BIOS中断调用、系统功能中断调用方法3.磁盘文件、及文件内容操作设计要求题目的选择是根据汇编语言的特点主要针对系统内部的一些中断调用、系统功能调用、系统数据处理、文件数据处理而设计的,是对所学课程知识较为系统的应用。由于汇编语言编程相对其他语言编程比较复杂,因此,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。不要局限于题目所规定的要求,可以灵活裁减,设计出功能更完善的程序。另外,也可以自己设计题目,同时,提出详细的功能描述,经指导老师审查同意后也可作为课程设计的题目。工作量1.完成所选题目的软件设计;2.课程设计说明书1000字(不包括程序源代码)左右。工作计划第1次熟悉软件环境。第2次绘制程序流程图。第3次用编写程序。第4次用调试运行程序。第5次编写课程设计说明书参考资料1.李敬兆8086/8088和arm核汇编语言程序设计中国科技大学出版社2.沈美明,温冬婵编著IBM—PC汇编语言程序设计(第二版)清华大学出版社出版3.沈美明,温冬婵,张赤红编著IBM—PC汇编语言程序设计实验教程清华大学出版社出版指导教师签字教研室主任签字2010年12月17日安徽理工大学课程设计(论文)成绩评定表指导教师评语:成绩:指导教师:年月日摘要代码转换程序主要是字母间的转换和数制之间的转换。字母转换主要是字母大小写转换,进制转换是二进制、十进制、十六进制之间的互换。程序首先给了一个选择需要进行的转换的菜单,用户根据界面信息选择功能。通过这种转换中数据的流向能够更好的理解计算机的一些基本原理,如计算机数据的存储形式和一些基本的DOS功能调用的基本方法与注意事项。关键词:大小写字母,二进制,十进制,十六进制,数据I目录1设计目的............................................................................................................12概要设计............................................................................................................12.1系统总体分析..................................................................................................................................12.2主模块框图及说明..........................................................................................................................13详细设计...........................................................................................................33.1主模块及子模块说明......................................................................................................................33.2各模块详细设计..............................................................................................................................34.程序调试.......................................................................................................114.1运行界面分析................................................................................................................................114.2算法的分析....................................................................................................................................114.3调试过程及分析............................................................................................................................145心得体会..........................................................................................................155.1设计体会........................................................................................................................................155.2系统改进........................................................................................................................................15参考文献.............................................................................................................16安徽理工大学课程设计(论文)-1-1设计目的1、实现大小写字母之间的转换:输入的字符串中,不是字母的字符不改变;大写字母改成小写字母时,若是大写字母则不改变;同样,小写字母改成大写字母时,若是小写字母则不改变2、二进制和十六进制数之间的转换:输入一个二进制数(或十六进制数),用十六进制数(或二进制数)表示输出。最多能把十六位二进制数(或四位十六进制数)用四位十六进制数(或十六位二进制数)表示输出;小于十六位(或四位)时按回车结束并输出3、十进制数和十六进制数之间的转换:输入一个十进制数(或十六进制数),用十六进制数(或十进制数)表示输出。最大能把十进制数65535(或十六进制数FFFF)转换成十六进制数FFFF(或十进制数65535)表示输出;小于65535(或FFFF)时按回车结束并输出4.二进制数和十进制数之间的转换:输入一个十进制数(或二进制数),用二进制数(或十进制数表示输出)。最大能把十进制数65535(或十六位二进制数),用二进制数(或十进制输出)。当输入的数值小于65535(或16位二进制数时)按回车结束并输出。2.1系统总体分析程序首先会显示主界面。然后根据用户的不同选择调用不同的模块,实现不同的功能。1.大小写字母转换功能,是通过调用子函数input实现对字符串的输入,然后调用宏gaixie来实现对大小写的转换,其中宏是通过参数的传递来确定是小写转换成大写,还是大写转换成小写的。从而决定是对操作数进行加或减20H。2.数制之间的转换主要指通过六大模块来完成的。其中有三个模块是分别是二进制、十进制、十六进制的输入,并存储到BX中。类外三个模块分别是将BX中的数转换成二进制、十进制、十六进制的输出。这样做的好处是可以只写将程序尽可能的简化,将前三个模块与后三个模块进行组合就可以完成所需要的进制转换。2.2主模块框图及说明安徽理工大学课程设计(论文)-2-程序首先显示主界面,然后用户输入1-9选择不同的功能,则跳转到不同的模块,执行后在跳转到主模块,若是其他字符,则显示出错信息,并返回主模块。如图2-1为主模块的逻辑图开始输入数字1-9,并判断输入1调用BTOS输入2调用STOB输入3调用HTOB输入4调用BTOH输入5调用HTOD输入6调用DTOH输入7调用BTOD输入8调用DTOB调用INPUT宏展开GAIXIE调用HEXIBINBINIDEC调用HEXIBINPRINT调用INBINBINIHEX调用INPUT宏展开GAIXIE调用DECIBINBINIHEX调用INBINBINIE调用DECIBINPRINT输出错误信息输入其它结束输入9图2-1主模块的逻辑图安徽理工大学课程设计(论文)-3-3详细设计3.1主模块及子模块说明主模块:在屏幕上显示程序的主要功能并有用户选择,然后根据用户的选择调用相应的功能模块。HEXIBIN:输入一个十六进制数(不超过4位),并存放在BX中INBIN:输入二进制数(不超过16位),并存放在BX中DECIBIN:输入一个十进制数(不超过65535),并存放在BX中BINIHEX:把BX中的数转换成十六进制并输出BINIDEC:用来把BX数转换到十进制并PRINT:用来把BX中的数转换成二进制并输出INPUT:字符串的输入,并存储GAIXIE:把字符串转换成大写或小写,然后输出CRLF:换行3.2各模块详细设计3.2.1主模块主模块是通过9号功能调用,显示主界面。然后用1号功能调用输入用户的选择。然后分别跳转到相应的功能。CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETBUF;输出选择主界面MOVAH,9;调用9号中断功能INT21HMOVAH,1;输入要选择的操作INT21HCMPAL,'1';把AL中内容跟1比较JZBTOS;相等则跳转到安徽理工大学课程设计(论文)-4-CMPAL,'2'JZSTOB1CMPAL,'3'JZHTOBCMPAL,'4'JZBTOHCMPAL,'5'JZHTODCMPAL,'6'JZDTOHCMPAL,'7'JZBTODCMPAL,'8'JZDTOBCMPAL,'9'JZEXITLEADX,BUF3;把BUF3的首地址给DXMOVAH,9INT21HCALLCRLF;调用子程序CALLJMPSTART;返回,重新选择EXIT:MOVAH,4CH;退出3.2.2HEXIBIN首先将BX清零作为输入数的存储,DX清零记为输入数的位数控制输入循环。通过对每一个输入输出判断其为小写字母或大写字母或数字,减去不同的数值,得到其代表的数值大小。然后将BX中的数值乘以16再与其相加存于BX中,同时DX加1,入DX不大于4,则进入下一轮跳转,否则就结束。HEXIBINPROCNEARMOVBX,0;把BX清零MOVDX,0;作为输入四位的记数器INHEX:CMPDX,4;把DX跟4比较JNBHEXEND;大于则跳转,子程序结束MOVAH,1;输入数据INT21H安徽理工大学课程设计(论文)-5-CMPAL,1BH;遇到Esc则退出JZHE