欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    微机原理课程设计.docx

    • 资源ID:18340437       资源大小:105.99KB        全文页数:20页
    • 资源格式: DOCX        下载积分:6金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要6金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理课程设计.docx

    1、微机原理课程设计微型计算机原理及接口技术课程设计 代码转换程序设计 学院: 班级:姓名: 学号: 成绩: 专业:通信工程 指导老师:骆岩红 摘 要 :代码转换程序主要是字母间的转换和数制之间的转换。字母转换主要是字母大小写转换,进制转换是二进制、十进制、十六进制之间的互换。程序首先给了一个选择需要进行的转换的菜单,用户根据界面信息选择功能。通过这种转换中数据的流向能够更好的理解计算机的一些基本原理,如计算机数据的存储形式和一些基本的DOS功能调用的基本方法与注意事项。关键词 :大小写字母,二进制,十进制,十六进制,数据 目 录摘要2关键词21 设计的目的和任务51.1设计目的51.2设计任务5

    2、2 设计内容及要求53 设计问题54 设计算法65 程序流程图66 详细设计86.1 主模块及子模块说明86.2 各模块详细设计86.2.1主模块86.2.2 HEXIBIN96.2.3 INBIN106.2.4 DECIBIN116.2.5 BINIHEX116.2.6 BINIDEC126.2.7 PRINT136.2.8 INPUT136.2.9 GAIXIE136.2.10 CRLF147 程序调试 147.1 运行界面分析147.2算法的分析167.3 调试过程及分析177.4 系统改进188 心得体会189 主要参考文献1910答谢191 设计目的和设计任务1.1 设计目的培养学生

    3、运用所学知识解决实际问题的能力,进一步提高综合运用知识的能力1.2 设计任务能够按照设计题目完成相应设计,撰写设计报告2 设计内容及要求 课程设计的内容以软硬件综合设计为主,要求我们在设计过程中,提倡独立思考、深入钻研的精神和严肃认真、一丝不苟、精益求精的工作态度。根据课题的要求,进行深入分析和研究,充分收集和利用现有资源和数据进行设计,保证设计的水平和质量。通过知识的综合运用,加深对汇编语言程序设计的理论与提高综合编程能力的认识,从而建立起汇编程序设计的整体概念。学会汇编程序设计的方法,进一步掌握并体会设计方案的优劣对计算机性能发挥的重要性。培养科学的、独立的工作创新精神,取得课程设计的实践

    4、经验。3 设计问题 代码转换程序设计完成一个字母或数制之间的转化程序,主程序分别具有5种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。5种可选择的子功能分别为:1)实现小写字母向大写字母的转换2)实现大写字母向小写字母的转换3)实现十进制数向十六进制数的转换4)实现十六进制数向二进制数的转换5)实现十六进制数向十进制数的转换4 设计算法 输入功能序号,调用该序号下的子程序。输入子程序要求输入的相关数据,就会输出结果。如果输入不为q,则可继续选择功能,输入功能序号重复以上操作,若功能序号输入为q,则退出程序。功能1:将小写的ASCII码转换成大写的并输出。

    5、功能2:将大写的ASCII码转换成小写的并输出。功能3:输入十进制ASCII码存储成二进制,然后再将二进制转换成十六进制并以ASCII码的形式输出。功能4:输入十六进制ASCII码存储成二进制,然后按位循环输出ASCII码。功能5:输入十进制ASCII码存储成二进制,并用求余运算转换成十进制ASCII码并输出。设计步骤为:(1)、开始,输出主界面(2)、输入序号,判断是否为q。若是转(5),否则转(3)(3)、根据输入的序号,调用函数的相应子函数模块。(4)、输出结果,跳转到(2)。(5)、结束,退出程序。5 程序流程图 程序首先显示主界面,然后用户输入1-9选择不同的功能,则跳转到不同的模块

    6、,执行后在跳转到主模块,若是其他字符,则显示出错信息,并返回主模块。如图5-1为主模块的逻辑图图5-1 主模块的逻辑图6 详细设计6.1 主模块及子模块说明 主模块:在屏幕上显示程序的主要功能并有用户选择,然后根据用户的选择调用相应的功能模块。HEXIBIN:输入一个十六进制数(不超过4位),并存放在BX中INBIN:输入二进制数(不超过16位),并存放在BX中DECIBIN:输入一个十进制数(不超过65535),并存放在BX中BINIHEX:把BX中的数转换成十六进制并输出BINIDEC:用来把BX数转换到十进制并输出PRINT:用来把BX中的数转换成二进制并输出 INPUT:字符串的输入,

    7、并存储GAIXIE:把字符串转换成大写或小写,然后输出CRLF:换行6.2 各模块详细设计6.2.1主模块主模块是通过9号功能调用,显示主界面。然后用1号功能调用输入用户的选择。然后分别跳转到相应的功能。CODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OFFSET BUF ;输出选择主界面 MOV AH,9 ;调用9号中断功能 INT 21H MOV AH,1 ;输入要选择的操作 INT 21H CMP AL,1 ;把AL中内容跟1比较 JZ BTOS ;相等则跳转到 CMP AL,2 JZ STOB1

    8、 CMP AL,3 JZ HTOB CMP AL,4 JZ BTOH CMP AL,5 JZ HTOD CMP AL,6 JZ DTOH CMP AL,7 JZ BTOD CMP AL,8 JZ DTOB CMP AL,9 JZ EXIT LEA DX,BUF3 ;把BUF3的首地址给DX MOV AH,9 INT 21H CALL CRLF ;调用子程序CALL JMP START ;返回,重新选择EXIT:MOV AH,4CH ;退出6.2.2 HEXIBIN首先将BX清零作为输入数的存储,DX清零记为输入数的位数控制输入循环。通过对每一个输入输出判断其为小写字母或大写字母或数字,减去不同

    9、的数值,得到其代表的数值大小。然后将BX中的数值乘以16再与其相加存于BX中,同时DX加1,入DX不大于4,则进入下一轮跳转,否则就结束。HEXIBIN PROC NEAR MOV BX,0 ;把BX清零 MOV DX,0 ;作为输入四位的记数器INHEX:CMP DX,4 ;把DX跟4比较 JNB HEXEND ;大于则跳转,子程序结束 MOV AH,1 ;输入数据 INT 21H CMP AL,1BH ;遇到Esc则退出 JZ HEXEND SUB AL,30H ;判断是否数字或字母?否则跳出 JL HEXEND CMP AL,10 ;判断是否数字 JL ADD_TO ;是则存放BX中 S

    10、UB AL,7 ;把AL内容减7转为字母 CMP AL,10 ;判断是否小写字母(af) JL HEXEND CMP AL,16 JL ADD_TO ;小于则跳转 SUB AL,20H ;判断是否大写字母(AF) CMP AL,10 JL HEXEND CMP AL,16 JGE HEXENDADD_TO:MOV CL,4 ;作为循环条件 SHL BX,CL ;BX乘以16 MOV AH,0 ADD BX,AX ;两数相加 INC DX ;DX加1 JMP INHEXHEXEND:RETHEXIBIN ENDP6.2.3 INBIN程序同上一个模块基本相同。首先将BX清零作为输入数的存储,CX

    11、清零记为输入数的位数控制输入循环。通过对每一个输入数字,减去30H,得到其代表的数值大小。然后将BX中的数值乘以2再与其相加存于BX中,同时CX加1,入CX不大于16,则进入下一轮跳转,否则就结束。INBIN PROC NEAR ;输入十六二进制数 MOV BX,0 MOV CX,0PUTIN:CMP CX,16 JNB EXIT6 MOV AH,1 INT 21H CMP AL,1BH JZ EXIT6 SUB AL,30H JL EXIT6 CMP AL,1 JG EXIT6 CBW INC CX XCHG AX,BX MOV DX,2 MUL DX XCHG AX,BX ADD BX,A

    12、X JMP PUTINEXIT6:RETINBIN ENDP6.2.4 DECIBIN程序同上一个模块基本相同。首先将BX清零作为输入数的存储,CX清零记为输入数的位数控制输入循环。通过对每一个输入数字,减去30H,得到其代表的数值大小。然后将BX中的数值乘以10再与其相加存于BX中,同时CX加1,入CX不大于5,则进入下一轮跳转,否则就结束。DECIBIN PROC NEAR MOV BX,0 MOV CX,0NEWCHAR:CMP CX,5 JNB EXIT4 MOV AH,1 INT 21H CMP AL,1BH JZ EXIT4 SUB AL,30H JL EXIT4 CMP AL,9

    13、 JG EXIT4 CBW INC CX XCHG AX,BX MOV DX,10 MUL DX XCHG AX,BX ADD BX,AX JMP NEWCHAREXIT4:RETDECIBIN ENDP6.2.5 BINIHEX 将BX中的数转换成十六进制数输出就是每次取出四位算出其数值,然后转换成相应的ASCII码输出。BINIHEX PROC NEAR ;把数转换成十六进制输出 MOV CH,4ROTATE:MOV CL,4 ROL BX,CL ;把BX中高四位移到低四位,放到AL中 MOV AL,BL AND AL,0FH ADD AL,30H CMP AL,3AH ;判断是否为数字

    14、JL PRINTIT ADD AL,7PRINTIT:MOV DL,AL MOV AH,2 INT 21H DEC CH JNZ ROTATERETBINIHEX ENDP6.2.6 BINIDEC将BX中的数转换成十进制数输出,就是将BX中的数每次分别处以10000,1000,100,10,1将其所得到的商输出,而其余数存入BX中进入下一轮循环。这样输出就是要得到的十进制数。BINIDEC PROC NEAR MOV CX,10000 ;把10000给CX,作为万位的权 CALL DEC_DIV ;调用除权子程序 MOV CX,1000 CALL DEC_DIV MOV CX,100 CAL

    15、L DEC_DIV MOV CX,10 CALL DEC_DIV MOV CX,1 CALL DEC_DIV RETBINIDEC ENDPDEC_DIV PROC NEAR ;除以各位十进制的权 MOV AX,BX ;把BX内容给AX MOV DX,0 ;DX清零 DIV CX MOV BX,DX MOV DL,AL ADD DL,30H ;转换为ASSII MOV AH,2 INT 21H RETDEC_DIV ENDP6.2.7 PRINT将BX中的数转换成二进制:因为BX中原本就是按照二进制存储的,所以只需每次左移,将所得到的数加30h得到其ASCII 码然后输出即可。PRINT PR

    16、OC NEAR ;把BX中的十六进制数转换成二进制 MOV CX,16D ;记数ROT: SHL BX,1D ;每移一位最高位变为CF JC SET ;CF为1则跳到SET,否则输出0 MOV DL,30H MOV AH,2 INT 21H DEC CX JNZ ROT RET6.2.8 INPUT输入字符串:通过10号功能调用,将所输入的字符串输入到缓冲区,缓冲区首=DS:DXINPUT PROC NEAR ;输入字符串 MOV DX,0 ;DX清零 MOV DX,OFFSET BUF1 MOV AH,10 INT 21H LEA DX,BF MOV AH,9 INT 21H LEA SI,

    17、BUF1+2 MOV BL,SI-1 ;把输入的字符个数给BL MOV BH,0 ;BH清零 MOV BYTE PTR BX+SI+1,$ ;把$作为字符串结束字符 LEA DX,BUF1+2 MOV AH,9 INT 21H RET ;返回INPUT ENDP6.2.9 GAIXIE大小写字母的转换只是对其加上或者减去20H即可。P3、P4分别对应的是a、z或者A、Z,P6对应的是ADD或者SUB。GAIXIE MACRO P1,P2,P3,P4,P5,P6 ;来判定字母?P2: CMP BYTE PTR SI,P3 JB P5 ;小于跳转 CMP BYTE PTR SI,P4 JNB P5

    18、 CMP BYTE PTR SI,$ ;到$则结束 JZ P6 P1 BYTE PTR SI,20HP5: INC SI LOOP P2P6: LEA DX,BUF8 MOV AH,9 INT 21H LEA DX,BUF1+2 ;输出改写后的字母 MOV AH,9 ;调用9号中断功能,输出字符串 INT 21H LEA DX,BF ;把BF首地址给CX MOV AH,9 ;调用9号中断功能 INT 21H JMP START ;返回 ENDM6.2.10 CRLF换行:无实际的意义,只是为了让界面更加美观。CRLF PROC NEAR LEA DX,BF MOV AH,9 INT 21H R

    19、ETCRLF ENDP7.程序调试7.1 运行界面分析运行程序得如图7-1主界面图7-1 主界面选择1,大写字母转小写字母如图7-2图7-2 大写字母转小写字母选择2,小写字母转大写字母如图7-3图7-3 小写字母转大写字母选择3,十六进制到二进制的转换,如图7-4图7-4 十六进制转二进制选择4,二进制到十六进制的转换,如图7-5图7-5 二进制转十六进制选择5,十六进制到十进制的转换,如图7-6 图7-6 十六进制转十进制选择6则退出,选择其他输入,如输入q,如图7-7图7-7 错误输入7.2算法的分析代码转换器主要是由两部分组成:大小写字母转换和数制转换。大小写字母转换就是在其原来的AS

    20、CII码的基础上或加或减20H就可得到。数值转换是二进制、十进制、十六进制之间的转换。通过调用不同的函数避免了数值之间的转换。首先是三个输如模块,对于输入的字符如果是0-10之间的就减去30H,得到其代表的数的含义,A-F之间的就减去37H,a-f之间的就减去57H,得到其代表的数的含义,让后乘以权值相加存于BX即可。然后是三个输出模块,因为BX中存的本就是二进制数,所以直接移位输出就可得到二进制数。十六进制数是每四位二进制数转换成一位十六进制数即可。十进制数相对复杂,将BX中的数转换成十进制数输出,就是将BX中的数每次分别处以10000,1000,100,10,1将其所得到的商输出,而其余数

    21、存入BX中进入下一轮循环。这样输出就是要得到的十进制数。7.3 调试过程及分析在进行调试的过程中遇到的问题层出不穷,但大多是因为一些粗心的错误。刚开始遇到最多的问题便是程序在编译时没有任何错误,链接的按钮仍然是灰色的不能够链接,茫然不知所措。上网查找资料却找不到任何相应的情况。于是就不用学校机房里的MASM,换了另外一款编译器(Masm for Windows 集成实验环境 2009.2),在进行编译时提示出错“Invalid character in the file”,在错误信息表中查得是文中使用了无效字符,多数情况下是使用了中文的标点符号。根据这款编译器中代码颜色的不同很快就发现了是在写

    22、注释的时候“;”使用错误了。另外一个让我记忆犹新的问题是所有的子函数都是正确的,但是在将所有的模块进行组合时出了个错“relative jump out of range by 0001h bytes”,感觉很郁闷,在编译器给的信息表中也没有查到为什么。最后在网上查到答案即:8086中的条件跳转指令的跳转范围是-126129(相对于该指令的字节偏移量),不能超出这个范围。 原代码: CMP AL,2 JZ STOB更改为:CMP AL,2 JZ STOB1 STOB1:JMP STOB如此就搞定了。当然还有一些平时不会注意到的问题,比如使用INT指令会改变AL的值,这些微不足道的地方却恰恰是最

    23、容易忽略的地方。7.4 系统改进此程序的健壮性不够,在数值转换的过程中,当输入被换算的数值时,如果数值是正确的则能够正确的处理,当不正确的时候都输出的是0。数值转换的数值范围是0FFFFh,这是BX中存储的最大范围了,应该可以将其改进的更大一些。8 心得体会通过课程设计的编程和对编程过程中遇到的问题的思考,有效的提高了我对汇编的认识和理解,切实的提高了我的编程能力,。通过这次课程设计,我巩固所了学过的知识,能用汇编语言熟练地运用顺序、选择、循环三大结构,进一步掌握了各个指令的功能。在整个程序的编写中,调试占了很大部分的时间。要想写好汇编语言的程序,必须认真对待代码的每一个细节,还必须熟练的掌握

    24、debug命令,这对程序的调试是非常重要的。通过这次实际动手能力的培养,我进一步熟悉了汇编语言的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平。还有就是课本上的东西一定要记住。理论与实践相结合,不懂的地方应勤问老师勤问同学,直到把它搞懂为止。9主要参考文献1. IBMPC汇编语言程序设计(第2版) 沈美明 温冬婵 清华出版社2.IBMPC汇编语言程序设计 实验教程 沈美明 温冬婵 清华出版社3.汇编语言程序设计基础 王春森 高等教育出版社4.微型计算机原理及接口技术(第二版) 裘雪红 李伯成 刘凯 西安电子科技大学出版社10、答 谢 经过几个星期的忙碌和工作,本次

    25、课程设计已经接近尾声,作为一个本科生的课程设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有老师师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。 在这里首先要感谢我的老师骆岩红老师。骆老师平日里工作繁多,但在我做课程设计的每个阶段,从设计草案的确定和修改,中期检查,后期详细设计,装配草图等整个过程中都给予了我悉心的指导。除了敬佩骆老师的专业水平外,他的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。 其次要感谢和我一起做课程设计的的同学,他们在本次设计中勤奋工作,克服了许多困难来完成此次课程设计,并承担了大部分的工作量。如果没有他们的努力工作,此次设计的完成将变得非常困难。


    注意事项

    本文(微机原理课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开