八进制化为十进制.pdf
武汉理工大学汇编语言程序设计课程设计目录目录课程设计任务书.21.设计题目.32.设计要求.33.理论知识.331 进位计数制.332 进制转换.43.3 ASCII 码.54.程序结构.64.1 总体结构.64.2 十进制转二进制 DECibin.74.3 二进制转八进制 binioct.84.4 八进制转二进制 octbin.94.5 二进制转十进制 binidec.10 5.程序清单.116.运行结果.157.心得体会.17本科生课程设计成绩评定表.181武汉理工大学汇编语言程序设计课程设计课程设计任务书课程设计任务书学生姓名学生姓名专业班级:专业班级:指导教师:指导教师:徐东平徐东平工作单位:工作单位:计算机科学与技术学院计算机科学与技术学院题目题目:八进制数和十进制数相互转换八进制数和十进制数相互转换初始条件:初始条件:理论:完成了汇编语言程序设计课程,对微机系统结构和 80 系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。实践:完成了汇编语言程序设计的4 个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。要求完成的主要任务要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)体要求)进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。具体的设计任务及要求:1)编写八进制和十进制间的转换程序;2)要求在屏幕上输出结果。3)程序采用子程序结构,结构清晰;4)友好清晰的用户界面,能识别输入错误并控制错误的修改。在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。阅读资料:1)IBMPC 汇编语言程序设计实验教程实验2.42)IBMPC 汇编语言程序设计(第2 版)例 6.11时间安排:时间安排:设计安排一周:周 1、周 2:完成系统分析及设计。周 3、周 4:完成程序调试,和验收。周 5:撰写课程设计报告。指导教师签名:指导教师签名:年年月月日日系主任(或责任教师)签名:系主任(或责任教师)签名:年年月月日日2武汉理工大学汇编语言程序设计课程设计八进制数和十进制数相互转换八进制数和十进制数相互转换1.1.设计题目设计题目八进制数和十进制数相互转换。2.2.设计要求设计要求本次课程设计着重于理论设计,同时培养动手能力。要求运用自己所学知识进行设计实现,体现自己的知识掌握水平,严禁抄袭(发现后抄袭者和被抄袭者一律不及格)。所作设计需进行论证,一方面是从理论上进行推理验证,另一方面是实验论证。内容包括:设计题目;原始条件及参数;要求完成的主要任务(如:设计方案的选择与确定、设计计算、程序编制、说明书撰写等具体要求);时间安排等。3.3.理论知识理论知识3 31 1 进位计数制进位计数制(1)十进制数(Decimal)十进制数是人们十分熟悉的计数体制。它用 0、1、2、3、4、5、6、7、8、9 十个数字符号,按照一定规律排列起来表示数值的大小。每一个位置(数位)只能出现十个数字符号 0 9 中的其中一个。通常把这些符号的个数称为基数,十进制数的基数为 10;同一个数字符号在不同的位置代表的数值是不同的。十进制基于位进制和十进位两条原则,即所有的数字都用10 个基本的符号表示,满十进一,同时同一个符号在不同位置上所表示的数值不同,符号的位置非常重要。基本符号是 0 到 9 十个数字。要表示这十个数的10 倍,就将这些数字右移一位,用0 补上空位,即 10,20,30,.,90;要表示这十个数的 10 倍,就继续左移数字的位置,即 100,200,300,.。要表示一个数的 1/10,就右移这个数的位置,需要时就 0 补上空位:1/10 位 0.1,1/100为 0.01,1/1000 为 0.001。(2)二进制数(Binary)二进制是计算技术中广泛采用的一种数制。二进制数据是用 0 和 1 两个数码来表示的数。它的基数为 2,进位规则是“逢二进一”,借位规则是“借一当二”,由 18 世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统。3武汉理工大学汇编语言程序设计课程设计(3)八进制数(Octal)在八进制中,基数为 8,它有 0、1、2、3、4、5、6、7 八个数字符号,八进制的基本运算规则是“逢八进一”,各数位的权是 8 的幂。3 32 2 进制转换进制转换(1)十进制数与二进制数互换 a.十进制数转换成二进制数整数部分的转换 除取余法。整数部分的转换采用“除取余法”。即用多次除被转换的十进制数,直至商为,每次相除所得余数,按照第一次除所得余数是二进制数的最低位,最后一次相除所得余数是最高位,排列起来,便是对应的二进制数。小数部分的转换乘取整法。小数部分的转换采用“乘取整法”。即用多次乘被转换的十进制数的小数部分,每次相乘后,所得乘积的整数部分变为对应的二进制数。第一次乘积所得整数部分就是二进制数小数部分的最高位,其次为次高位,最后一次是最低位。b.二进制数转换成十进制数二进制转十进制 从最后一位开始算,依次列为第 0、1、2.位 第 n 位的数(0 或 1)乘以 2 的 n 次方 得到的结果相加就是答案 例如:01101011.转十进制:第 0 位:1 乘 2 的 0 次方=11 乘 2 的 1 次方=20 乘 2 的 2 次方01 乘 2 的3 次方80 乘 2 的 4 次方01 乘 2 的 5 次方321 乘 2 的 6 次方640乘 2 的 7 次方0然后:1208032640107二进制01101011十进制 107(2)二进制数与八进制数互换 a.二进制数转换成八进制数因为三位二进制数正好表示 0 7 八个数字,所以一个二进制数要转换成八进制数时,以小数点为界分别向左向右开始,每三位分为一组,一组一组地转换成对应的八进制数字。若最后不足三位时,整数部分在最高位前面加 0 补足三位再转换;小数部分在最低位之后加 0 补足三位再转换。然后按原来的顺序排列就得到八进制数了。八进制与二进制对照表八进制01234567二进制0000010100111001011101114武汉理工大学汇编语言程序设计课程设计 b.八进制数转换成二进制数一个八进制数要转换成二进制数时,以小数点为界分别向左向右开始,每一位八进制数字换成对应的三位二进制数即可。3.3 ASCII3.3 ASCII 码码由于计算机只能直接接受、存储和处理二进制数。对于数值信息可以采用二进制数码表示,对于非数值信息可以采用二进制代码编码表示。编码是指用少量基本符号根据一定规则组合起来以表示大量复杂多样的信息。一般所来,需要用二进制代码表示哪些文字、符号取决于我们要求计算机能够“识别”哪些文字、符号。为了能将文字、符号也存储在计算机里,必须将文字、符号按照规定的编码转换成二进制数代码。目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的 ASCII 码(American Standard Code forInformation Interchange,美国标准信息交换码),它已被国际标准化组织(ISO)定为国际标准,称为 ISO 646标准。适用于所有拉丁文字字母,ASCII 码有7位码和8位码两种形式。因为1位二进制数可以表示(2=)2种状态:0、1;而2位二进制数可以表示(2=)4种状态:00、01、10、11;依次类推,7位二进制数可以表示(2=)128种状态,每种状态都唯一地编为一个7位的二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0127。所以,7位 ASCII 码是用七位二进制数进行编码的,可以表示128个字符。第032号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;第33126号(共94个)是字符,其中第4857号为09十个阿拉伯数字;6590号为26个大写英文字母,97122号为26个小写英文字母,其余为一些标点符号、运算符号等。5武汉理工大学汇编语言程序设计课程设计4.4.程序结构程序结构4.14.1 总体结构总体结构开始八进制转十进制选择转换方式十进制转八进制调用 octbin调用 DECibin调用 crlf调用 crlf调用 binidec调用 binioct调用 crlf调用 crlf结束6武汉理工大学汇编语言程序设计课程设计4.24.2 十进制转二进制十进制转二进制 DECibinDECibin开始BX 清零输入数值转 ASCII9d交换 AX、BXAX 乘 10交换 AX、BX加上 AX结束7武汉理工大学汇编语言程序设计课程设计4.34.3 二进制转八进制二进制转八进制 binioctbinioct开始BX 左移 2 位把最右面的 2 位转为 ASCII 码显示一个字符循环计数值置为 2BX 循环左移 3 位把最右面的 3 位转为 ASCII 码显示一个字符循环计数值0?NY结束8武汉理工大学汇编语言程序设计课程设计4.44.4 八进制转二进制八进制转二进制 octbinoctbin开始BX 清零输入十进制数判定范围8 继续执行移位数字为 30 重新输入左移 3 位AH 清零添加新二进制位跳转输入结束9武汉理工大学汇编语言程序设计课程设计二进制转十进制二进制转十进制 binidecbinidec开始CX 置 10000d调用子程序CX 置 1000d调用子程序CX 置 100d调用子程序CX 置 10d调用子程序CX 置 1d调用子程序结束开始子程序DEC_div把二进制数转入 AXDX 清零除法运算余数移入 BX商移入 DL商转为 ASCII显示商结束4.54.510武汉理工大学汇编语言程序设计课程设计5.5.程序清单程序清单;DECIOCT;十进制与八进制相互转换;首先选择算法,1 为八进制转十进制,2 为十进制转八进制;*DECioct SEGMENT ASSUME CS:DECioct;主程序部分。main PROC FARstart:MOV DL,3ah ;MOV AH,2 INT 21h MOV AH,1 ;INT 21h CMP AL,32h ;JE REPEat2 ;REPEat1:CALL octbin ;CALL crlf ;CALL binidec ;CALL crlf ;JMP REPEat1 ;REPEat2:CALL DECibin ;CALL crlf ;CALL binioct ;CALL crlf ;JMP REPEat2 ;main ENDP;-;十进制转二进制DECibin PROC NEAR MOV BX,0 ;NEwchar2:MOV AH,1显示提示附输入选择数字数字为 1 时,执行八进制转十进制数字为 2 时,执行十进制转八进制键盘输入八进制数转为二进制回车并换行二进制转十进制回车并换行重复执行键盘输入十进制数转为二进制回车并换行二进制转八进制回车并换行重复执行将 BX 清零11武汉理工大学汇编语言程序设计课程设计 INT 21h ;21号中断输入 SUB AL,30h ;ASCII转二进制 JL exit2 ;9 JG exit2 ;如果大于则不是十进制数 CBW ;字节转为字 XCHG AX,BX ;交换寄存器 MOV CX,10d ;把 10 放如 CX MUL CX ;AX扩大 10 倍 XCHG AX,BX ;ADD BX,AX ;JMP NEwchar2 ;exit2:RETDECibin ENDP;-;二进制转八进制binioct PROC NEAR MOV CL,2 ROL BL,CL MOV AL,BL AND AL,03h ADD AL,30h MOV DL,AL MOV AH,2 INT 21h MOV CH,2rotate2:MOV CL,3 ROL BL,CL MOV AL,BL AND AL,07h ADD AL,30h MOV DL,AL MOV AH,2 INT 21h DEC CH JNZ rotate2 RETbinioct ENDP12交换寄存器原数的 10 倍加上输入数跳转输入;移位数字 2;循环左移 2 位;把输入的数送入 AL;将高六位屏蔽;转换为 ASCII;输出 AL;剩余显示 2 位;移位数字 3;循环左移 3 位;把输入的数送入 AL;将高五位屏蔽;转换为 ASCII;输出 AL;递减 CH;CH 不为 0 则跳转武汉理工大学汇编语言程序设计课程设计;-;八进制转二进制octbin PROC NEAR MOV BX,0;BX 清零NEwchar1:MOV AH,1;输入数字 INT 21h SUB AL,30h;转换为二进制数 JL exit1 CMP AL,8d JL ADD_to1 CMP AL,10h JGE exit1ADD_to1:MOV CL,3 SHL BX,CL MOV AH,0 ADD BX,AX JMP NEwchar1exit1:REToctbin ENDP;-;二进制转十进制binidec PROC NEAR MOV CX,10000d CALL DEC_div MOV CX,1000d CALL DEC_div MOV CX,100d CALL DEC_div MOV CX,10d CALL DEC_div MOV CX,1d CALL DEC_div RET;-;子程序DEC_div PROC NEAR MOV AX,BX MOV DX,0 DIV CX13;如果8 则跳转;移位数字 3;左移 3 位;AH 清 0;把新位移入数字;跳转继续输入;除数为 10000;除数为 1000;除数为 100;除数为 10;除数为 1;把二进制数移入 AX;DX 高八位清零;除数 CX武汉理工大学汇编语言程序设计课程设计 MOV BX,DX;余数移入 BX MOV DL,AL;商移入 DL ADD DL,30h;转换为 ASCII MOV AH,2;输出十进制数位 INT 21h RETDEC_div ENDP;-binidec ENDP;-;回车和换行。crlf PROC NEAR MOV DL,0dh MOV AH,2 INT 21h MOV DL,0ah MOV AH,2 INT 21h RETcrlf ENDP;-DECioct ENDS;*END start14;回车;输出;换行;输出武汉理工大学汇编语言程序设计课程设计6.6.运行结果运行结果a.八进制数转十进制数输入:1输入正常值(如 562,4210,22)输入异常值(如 9)15武汉理工大学汇编语言程序设计课程设计b.十进制数转八进制数输入:2输入正常值(如 163,89,8)输入异常值(如 a,b,)16武汉理工大学汇编语言程序设计课程设计7.7.心得体会心得体会通过此次课程设计,我获益匪浅,现总结如下:(1)我深刻体会到汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可了。(2)我还意识到计算机是通过执行指令序列来解决问题的,因而每种计算机都有一组指令集供给用户使用,这组指令集就称为计算机的指令系统。而指令是由操作码字段和操作数字段两部分组成。操作码字段指示计算机所要执行的操作,而操作数字段则指出在指令执行操作的过程中所需要的操作数。(3)汇编语言是非常繁琐的。它有很多操作码,并且其助记符也是很难记清楚的。因此,虽然我的课设题目不难,却花了我很长时间。最后的结果虽然正确,但数位很少,程序扩展性也很差。汇编语言不仅要求我们有严谨的逻辑系统,更要求有扎实的基础和记忆。(4)我还意识到理论学习与实际操作有很大差距。在今后的课程学习中,我会认真对待每一次实践机会,努力提高自己的上机操作能力,让自己的编程能力更上一层楼。我还会继续学习汇编语言,相信它会给我带来更大收获。17武汉理工大学汇编语言程序设计课程设计本科生课程设计成绩评定表班级:计算机科学与技术姓名:学号:序号123456评分项目学习态度认真、遵守纪律设计分析合理性设计方案正确性、可行性、创造性设计结果正确性设计报告的规范性设计验收满分101020401010总得分/等级实得分评语:注:最终成绩以五级分制记。优(90-100 分)、良(80-89 分)、中(70-79 分)、及格(60-69 分)、60 分以下为不及格指导教师签名:2012 年1 月日18