《2022年2022年进制转换程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年进制转换程序设计 .pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、学号:120610340505课 程 设 计题目不同数制的数据相互转换程序的设计学院计算机科学与技术专业计算机科学与技术班级计算机 0605 班姓名余欢欢指导教师刘传文2009 年1 月15 日附件 2:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 课程设计任务书学生姓名:余欢欢专业班级:计算机 0605 班指导教师:刘传文工作单位:计算机科学与技术学院题目: 初始条件:理论:学完“汇编语言程序设计” 、 “课程计算机概论”
2、 、 “高级语言程序设计”和“数字逻辑”。实践:计算机学院科学系实验中心提供计算机和软件平台。如果自己有计算机可以在其上进行设计。要求完成的主要任务 :(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1) 输入二进制, 十六进制,十进制的无符号数, 将它们转换成不同进制的形式,并且输出出来。(2) 程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。(3) 设计若干用例(测试数据) ,上机测试程序并分析(评价)所设计的程序。(4) 设计报告格式按附件要求书写。课程设计报告书正文的内容应包括:在正文第一行写课程设计题目;1. 需求说明(要求、功能简述)或问题描述;2.
3、设计说明(简要的分析与概要设计) ;3. 详细的算法描述;4. 源程序与执行结果(含测试方法和测试结果);5. 使用说明;6. 总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该程序进一步改进扩展的设想) 。时间安排:设计时间一周:周 1:查阅相关资料。周 2:系统分析 , 设计。周 34:编程并上机调试。周 5:撰写课程设计报告。设计验收安排: 20 周星期五 8:00 起到计算机学院科学系实验中心进行上机验收。设计报告书收取时间: 20 周的星期五下午 5:00 之前。指导教师签名: 2009年 1 月 9 日系主任(或责任教师)签名: 2009年 1 月 9 日名师资料总结 -
4、 - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - 不同数制的数据相互转换程序的设计1. 需求说明(要求、功能简述)或问题描述;这个课程设计的要求和就是通过一个较大型实用程序的设计与实现,综合运用所学知识, 加深理解和掌握。 同时培养学生分析问题和解决问题的能力,以及自学能力。这个程序首先要求选择一种数值转换的种类,例如我们可以选择二进制输入,十进制输出, 这样就要求我们把输入的二进制转换成十进制。由于按照我们要求的输入, 输出,总共有 6 种情
5、况。所以我们不能一一写出来每个程序的执行过程,对于不同的情况我们只需要定义不同的输入函数和输出函数,根据不同的情况,调用不同的输入函数和输出函数,这样做是为了对于多进制的情况,这样能简化程序。我定义了二进制输入,十进制输入,十六进制输入,二进制输出,十进制输出,十六进制输出,这样就能满足各种需要。这个实验还涉及到各种跳转,各个寄存器之间的移动,特定的输入和输出。调用 01h 的输入功能,结果在al 中,调用 02h 的输出功能,输出得到是dl 里面的内容。提示信息的输出是用db来定义的, 结束标志是 $,同时我也定义了一个表,来应对各种不同的情况。 由于寄存器有限, 所以我们有时会用到入栈和出
6、栈,同时寄存器的运用要很有技巧, 我也从这个实验中学到了很多东西,对于数值转换的原理也有了较为深刻的了解。为了这个实验,我查阅及分析相关的参考资料。 确定功能和功能结构, 数据结构,以及用户界面;对各功能模块进行准确的定义, 对全局数据变量进行说明和定义;确定各功能模块的算法并画出相应的数据流图。最后编程并上机调试, 最终程序成功运行。2. 设计说明(简要的分析与概要设计) ;确定程序功能和功能结构,数据结构,以及用户界面;对各功能模块进行准确的定义, 对全局数据变量进行说明和定义;确定各功能模块的原理及算法并画出相应的数据和程序流图。实验的主要思路我会慢慢描述的。首先输出一个选择窗口,有6
7、种选择。按照自己的要求选择, 选择之后, 就会调用相应的输入函数, 必须输入相应进制的数进行处理, 2 进制数必须输入16 位,16 进制数输入 4 位,10 进制数要求输入的必须小于 2 的 16 次方。输入之后,程序就会处理输入数据,然后调用相应的输出函数,就会输出相应的数据。输入函数,输出函数都是子函数。他们都有自己的功能, 不管有多少中进制, 处理的过程都是一样的, 这种方法能够重复使用相同功能的函数,不会出现代码的重复定义和使用。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
8、第 3 页,共 13 页 - - - - - - - - - 3. 详细的算法描述;MENU DB Please Input your Choice:,0dh,0ah db 1: Bin -Dec,0dh,0ah db 2: Bin -Hex,0dh,0ah db 3: Dec -Bin,0dh,0ah db 4: Dec -Hex,0dh,0ah db 5: Hex -Dec,0dh,0ah db 6: Hex -Bin,0dh,0ah db 0: Exit. $,0dh,0ah 以上是选择界面的输出信息,按照上面对应的进制转换进行选择。mess1 db Please input a Bin
9、 number:$ mess2 db Please input a Dec number:$ mess3 db Please input a Hex number:$ mess4 db Output Bin is: $ mess5 db Output Dec is: $ mess6 db Output Hex is: $ 这部分是为了帮我们的输入输出理解的句子,他们在适当的时候帮助我们理解。LKS:LEA DX,MENU MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL,39H JBE LK1 SUB AL,7 LK1:AND AL,0FH LEA SI
10、,TABLE MOV AH,0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - SHL AX,1 ADD SI,AX JMP SI 这部分是为了实现根据输入进行跳转,从而对应到正确的进制转换。CRLF PROC MOV AH,02H MOV DL,0AH INT 21H MOV DL,0DH INT 21H RET CRLF ENDP 这部分是实现回车换行的操作。 INBIN PROC LEA DX,MESS1 MOV AH,
11、09H INT 21H MOV BX,0 INBL1:MOV AH,01H INT 21H CMP AL,0DH JZ INBEXIT AND AL,01H SHL BX,1 OR BL,AL JMP INBL1 INBEXIT:RET INBIN END 这是输入二进制的实现部分。 OUTBIN PROC LEA DX,MESS4 MOV AH,09H INT 21H MOV CX,16 OBL1:ROL BX,1 MOV DL,BL AND DL,01H OR DL,30H MOV AH,02H INT 21H LOOP OBL1 RET 名师资料总结 - - -精品资料欢迎下载 - -
12、- - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - OUTBIN ENDP 上面的部分是实现1 进制输出的实现部分。4. 源程序与执行结果(含测试方法和测试结果);DATA SEGMENT MENU DB Please Input your Choice:,0dh,0ah db 1: Bin -Dec,0dh,0ah db 2: Bin -Hex,0dh,0ah db 3: Dec -Bin,0dh,0ah db 4: Dec -Hex,0dh,0ah db 5: Hex -De
13、c,0dh,0ah db 6: Hex -Bin,0dh,0ah db 0: Exit. $,0dh,0ah mess1 db Please input a Bin number:$ mess2 db Please input a Dec number:$ mess3 db Please input a Hex number:$ mess4 db Output Bin is: $ mess5 db Output Dec is: $ mess6 db Output Hex is: $ TABLE DW L0,L1,L2,L3,L4,L5,L6 DATA ENDS CODE SEGMENT ASS
14、UME CS:CODE,DS:DATA MAIN PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX LKS:LEA DX,MENU MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL,39H JBE LK1 SUB AL,7 LK1:AND AL,0FH LEA SI,TABLE MOV AH,0 SHL AX,1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页
15、 - - - - - - - - - ADD SI,AX JMP SI L1:CALL INBIN CALL CRLF CALL OUTDEC CALL CRLF JMP LKS L2:CALL INBIN CALL CRLF CALL OUTHEX CALL CRLF JMP LKS L3:CALL INDEC CALL CRLF CALL OUTBIN CALL CRLF JMP LKS L4:CALL INDEC CALL CRLF CALL OUTHEX CALL CRLF JMP LKS L5:CALL INHEX CALL CRLF CALL OUTDEC CALL CRLF JM
16、P LKS L6:CALL INHEX CALL CRLF CALL OUTBIN CALL CRLF JMP LKS L0:RET MAIN ENDP CRLF PROC MOV AH,02H MOV DL,0AH INT 21H MOV DL,0DH INT 21H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - RET CRLF ENDP INBIN PROC LEA DX,MESS1 MOV AH,09H INT 21
17、H MOV BX,0 INBL1:MOV AH,01H INT 21H CMP AL,0DH JZ INBEXIT AND AL,01H SHL BX,1 OR BL,AL JMP INBL1 INBEXIT:RET INBIN ENDP 二进制的输入: 每次我们输入的数都放在al 中,每次都将 al 和空的 bl 进行或运算,实际上就将我们输入的数据存到了bx 中,之后左移一位,在输入数据,之后重复进行上面的步骤,这样就将我们所输入的数据存到了bx 中。 INDEC PROC LEA DX,MESS2 MOV AH,09H INT 21H MOV BX,0 INDL1:MOV AH,01H
18、INT 21H CMP AL,0DH JZ INDEXIT SUB AL,30H CMP AL,9 JBE INDL2 SUB AL,7 INDL2:MOV AH,0 XCHG AX,BX MOV CX,10 MUL CX ADD BX,AX JMP INDL1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - INDEXIT:RET INDEC ENDP 十进制的输入:通过ax 和 bx 的配合使用,每次都将前一次输入的数据乘
19、以10,在加上这一次的输入,就这样就形成了10 进制的输入。 INHEX PROC LEA DX,MESS3 MOV AH,09H INT 21H MOV BX,0 IHL1:MOV AH,01H INT 21H CMP AL,0DH JZ IHEXIT SUB AL,30H CMP AL,9 JBE IHL2 SUB AL,7 IHL2:MOV CL,4 SHL BX,CL OR BL,AL JMP IHL1 IHEXIT:RET INHEX ENDP 十六进制的输入:输入的数据放在al 中,将 al 和 bl 将行或运算, 将我们所输入的数据保存起来, 之后左移 4位,在重复这个操作, 将
20、我们所输入的数据全部保存在 16 数据里面。 OUTBIN PROC LEA DX,MESS4 MOV AH,09H INT 21H MOV CX,16 OBL1:ROL BX,1 MOV DL,BL AND DL,01H OR DL,30H MOV AH,02H INT 21H LOOP OBL1 RET OUTBIN ENDP 2 进制的输出:我们所输入的数据都保存在bx 中,每次都将 bx 左移一位,然后名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 -
21、- - - - - - - - 将 bl 的数据转存到 dl 中,加上 30h 后,在输出之后就是二进制的了。 OUTDEC PROC LEA DX,MESS5 MOV AH,09H INT 21H PUSH BX MOV AX,BX MOV DX,0 ;余数 MOV CX,10000 DIV CX MOV BX,DX MOV DL,AL OR DL,30H MOV AH,02H INT 21H MOV AX,BX MOV DX,0 MOV CX,1000 DIV CX MOV BX,DX MOV DL,AL OR DL,30H MOV AH,02H INT 21H MOV AX,BX MOV
22、 DX,0 MOV CX,100 DIV CX MOV BX,DX MOV DL,AL OR DL,30H MOV AH,02H INT 21H MOV AX,BX MOV CL,10 DIV CL MOV BL,AH MOV DL,AL OR DL,30H MOV AH,02H INT 21H MOV DL,BL OR DL,30H 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - MOV AH,02H INT 21H PO
23、P BX RET OUTDEC ENDP 10 进制的输出 : 将保存在 bx 中的数据转存到 ax 中来,由于 19 位数据所存最大数据是 6 万多,所以第一次除以一万,余数存放在dx 中,商存在 al 中,将ax 中的内容转存到 dl 中,输出出来,而将dx 中的余数又转存到bx 中,继续上面的操作,不过除数改城了1000,然后除数变成100,10,最后输出商。 OUTHEX PROC LEA DX,MESS6 MOV AH,09H INT 21H MOV CX,4 OHL1:ROL BX,1 ROL BX,1 ROL BX,1 ROL BX,1 MOV DL,BL AND DL,0FH
24、ADD DL,30H CMP DL,39H JBE OHL2 ADD DL,7 OHL2:MOV AH,02H INT 21H LOOP OHL1 RET OUTHEX ENDP 16 进制的输出: bx 中左移 4 位,将 dl 低四位与 bl 低四位,进行与运算,结果在 dl 中,然手加上 30h,变成 ask 码输出,就可以输出16 进制数。CODE ENDS END MAIN 试验的结果 :1. 二进制转换为 10 进制2. 二进制转换为 16 进制名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
25、 - - - - 第 11 页,共 13 页 - - - - - - - - - 3.10 进制转换为二进制4. 十进制转换为十六进制5. 十六进制转换为十进制6. 十六进制转换为二进制5. 使用说明这个实验要求我们输入的2 进制必须是 16 位,16 进制必须是 4 位,10 进制的输入不的超过 2 的 16 次方,才算正确输入。6. 总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该程序进一步改进扩展的设想)。本次实验设计的提点是将不同进制的输入输出分别写成功能不同的函数,不近翻遍调用,而且只需定义一次,不可以重复调用,可以简化程序。本实验的不足之处是结果没有取出前导0,结果不是
26、我们所习惯的方法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - 同时我还没有加入8 进制的转换,我还必须要加入这个功能, 程序才会更加完善。我的收获是对数制转换的原理有了叫较为清楚的理解,可以解释原来不懂的程序,对应各种寄存器的跳转有了一定的了解,同时认识到由于寄存器的数量有限,我们有时侯不得不进行出栈和入栈了,这样可以解决有时候寄存器不够的情况,对应进一步学习汇编有了一定的推动作用,汇编基础有了一定的提高, 这个课程设计
27、让我对汇编重新复习一遍。通过这个课程设计, 我对汇编有了一定的体会, 因为汇编是可以直接和机器语言联系,从而使得汇编语言的利用率很高,处理相同的程序比高级语言速度快很多,但是他操作也没有高级语言那么方便,但是总体来说,汇编还是很强大的,他帮助我们跟深的理解原来不懂的程序,是我们学习的红药推动作用。对于这个程序的展望还有很多,不过要等待以后才有可能实现了。首先,我们可以想办法去掉前导0,然后,我们可以想办法实现有符号数据的进制转换,最后,我们可以想办法扩展我们所出来数据的位数。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -