汇编语言10进制到16进制转换
- 格式:doc
- 大小:29.50 KB
- 文档页数:4
《微机原理与接口技术》课程设计(学年论文)说明书课题名称:代码转换程序设计(A3-2)学生学号:专业班级:学生姓名:学生成绩:指导教师:***课题工作时间: 2011-6-13 至 2011-6-18武汉工程大学教务处制填写说明:1. 一、二、三项由指导教师在课程设计(学年论文)开始前填写并交由学生保管;2. 四、五两项由学生在完成课程设计后填写,并将此表与课程设计一同装订成册交给指导教师;3. 成绩评定由指导教师按评定标准评分。
4. 此表格填写好后与正文一同装订成册。
课程设计评审标准(指导教师用)代码转换程序设计说明书1、方案论证(1)大小写字母、二进制与十六进制、十六进制与十进制的转换方法在计算机系统中有多种数制和编码,常用的有二进制,八进制以及16进制。
这些数制和编码虽然在储存形式上各有差异,但彼此也相互联系。
大小写转换,主要利用小写字母比大小字母大20H的关系,将小写字母减20H就转换为大写字母,将大写字母加20H就转换为小写字母。
二进制,十进制以及16进制,主要利用0到9的数值等于相应ASCALL码减30H,而A到F的数值等于相应ASCALL码减37H,这样即可利用移位,除十取余取整等方法实现其相互转换。
(2)宏汇编程序设计要点宏是源程序中的一段有独立功能的程序代码。
宏指令,用户自定义的指令。
编程序时候,将多次使用的功能用一条宏指令来代替。
汇编包括指令,伪指令,宏指令。
前两个都是规定的,最后一个是自己设计的。
好处是用起来方便定义,但是要先定义,后调用,其优点是可以随时随地的调用宏汇编程序。
2、程序设计(1)总体设计对“实现从键盘输入16位二进制数,转换成4位十六进制数显示出来。
”的分析处理。
首先将键盘输入的二进制数以二进制形式储存起来:每次输入,将其ASCALL码值将减去30H,然后左移一位,在然后与下个输入的减30H的数相加,这样就将键盘输入的值以二进制形式储存在寄存器中.二进制转换为16进制数输出:用循环指令左移四位,取出最低4位,利用16进制所对应的ASCALL码值比其本身大30H或37H的关系,将低位转换成对应的ASCALL码值,再调用DOS系统显示字符功能,将转换后的字符显示出来,如此循环四次即可.程序总流程图:(2)程序设计二进制转十六进制流程图:程序代码及注释:;PUBLIC XPEXTRN INFO4:BYTE,INFO1:BYTE,INFO2:BYTECODE SEGMENTXP PROC FARASSUME CS:CODECALL DEC2BIN ;调用将键盘输入的ASCALL值转换为二进制数LEA DX,INFO2MOV AH,9INT 21H ;显示提示信息CALL BIN2HEX;调用将储存的二进制转换为16进制函数MOV DL,'H'MOV AH,2INT 21HRETCAL: MOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21HLEA DX,INFO4MOV AH,9INT 21H;输入非二进制数,显示错误DEC2BIN PROC NEARLEA DX,INFO1MOV AH,9INT 21H;显示提示信息XOR BX,BX ;BX清零NEWCHAR: MOV AH,1INT 21H ;键盘输入,存放在AL中CMP AL,0DHJE RE;如果输入回车键,键盘输入结束SUB AL,30HJL CALCMP AL,1JG CAL ;输入为非二进制数,显示错误并退出CBWXCHG AX,BXMOV CX,2MUL CXXCHG AX,BXADD BX,AXJMP NEWCHAR;将键盘输入的制转换为二进制数,存放在BX中,并且每输入一个值,先将BX左移一位再相加. RE: MOV DL,'B'MOV AH,2INT 21HRETDEC2BIN ENDPBIN2HEX PROC NEARMOV C H,4ROTATE: MOV CL,4ROL BX,CL ;BX每左移4位输出,四位二进制表示一位十六进制MOV A L,BLAND A L,0FHADD A L,30HCMP A L,3AHJL PRINTIT ;结果若为0到9的数,则加30H后直接输出ADD AL,07H ;结果若为A到F的数,则加30H后再加07H直接输出PRINTIT: MOV DL,ALMOV AH,2INT 21HDEC CHJNE ROTATERETBIN2HEX ENDPCRLF PROC NEARMOV DL,0DHMOV AH,2INT 21HMOV DL,0AHMOV AH,2INT 21H ;回车换行RETCRLF ENDPXP ENDPCODE ENDSEND3、程序调试步骤与结果(1)编辑源程序(2)汇编源程序(3)连接程序(4)在TD中调试程序(5)程序运行结果结果说明:当输入小写字母(如a)时,就转换成相应的大写字母(如A),反之亦然;当如入二进制(如1011B),,就转换成相应的十六进数(000BH),反之亦然;如果输入的字母或数字不符合要求,就会显示“INPUT ERROR”4、结论。
实验七子程序的应用【实验目的】1.掌握子程序的定义2.掌握子程序中的参数传递3.掌握子程序的调用。
【实验环境】配有汇编语言开发环境的计算机【实验内容】十进制数到十六进制数转换程序。
程序要求从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来。
【实验过程、结果】;程序名:t6-2.asm;功能:从键盘获取一个十进制数,;用十六进制的形式输出decihex segmentassume cs:decihex;主程序部分main proc farcall decibincall crlfcall binihexcall crlfmain endp;***************************decibin proc nearmov bx,0;从键盘获取一个数字,转换为二进制;结果放在bx寄存器中newchar:mov ah,1int 21h ;从键盘输入一个字符并显示在屏幕上 sub al,30h ;转换成ASCII码jl exitcmp al,9djg exitcbw ;从al扩展到ax,数字现在存放在ax中 xchg ax,bxmov cx,10dmul cxxchg ax,bxadd bx,axjmp newcharexit:retdecibin endp ;子程序结束;将二进制转换为十六进制子程序binihex proc nearmov ch,4rotate:mov cl,4rol bx,cl ;循环移位mov al,bland al,0fhadd al,30hcmp al,3ahjl printintadd al,7hprintint:mov dl,almov ah,2int 21hdec chjnz rotateretbinihex endp;**************************;显示输出和回车换行子程序crlf proc nearmov dl,0dhmov ah,2 ;显示一个字符 dl=字符 int 21h ;光标跟随移动mov dl,0ahmov ah,2int 21hretcrlf endp;*************************** decihex endsend main【实验心得】本实验实现了从键盘获取一个十进制数,用十六进制的形式显示输出。
十进制转换成十六进制字符串和数组1.引言1.1 概述在计算机科学中,我们经常会遇到需要将十进制数转换为十六进制字符串或数组的情况。
十六进制是一种常用的数值表示方法,它将一个数值分成16个不同的符号表示,分别是0-9和A-F。
本文旨在介绍两种常用的方法来实现这一转换过程。
首先,我们将讨论一种基于除以16取余法的方法,通过反复进行除法和取余运算,得到转换后的结果。
其次,我们还将介绍一种更加简便的方法,即使用编程语言内置的函数来实现转换。
通过本文的学习,读者将能够掌握如何将十进制数转换为十六进制字符串或数组的技巧和方法。
此外,我们还将讨论这些转换方法的应用场景,以及它们在实际中可能遇到的一些问题和限制。
在下面的章节中,我们将详细介绍每种方法的原理和具体步骤,并提供相应的代码示例和实际应用案例。
通过这些示例,读者将能够更好地理解和掌握十进制转换为十六进制字符串和数组的过程,从而在实际应用中能够熟练地运用这些方法。
总之,通过本文的学习,读者将能够了解和掌握两种常用的方法来实现十进制转换为十六进制字符串和数组。
这些方法不仅在计算机科学领域有着广泛的应用,而且在其他领域中也存在一定的需求。
希望本文对您的学习和工作有所帮助,能够给您带来一定的收获。
1.2文章结构文章结构部分主要介绍了整篇文章的布局和组织方式,以便读者能够清晰地了解文章的结构和内容安排。
本文的结构如下:1. 引言1.1 概述1.2 文章结构1.3 目的2. 正文2.1 十进制转换为十六进制字符串2.1.1 方法一: 除以16取余法2.1.2 方法二: 使用内置函数2.2 十进制转换为十六进制数组2.2.1 方法一: 除以16取余法2.2.2 方法二: 使用内置函数3. 结论3.1 总结转换方法3.2 应用场景在本文的引言部分,首先概述了将十进制数转换为十六进制字符串和数组的主题,并介绍了整篇文章的结构和目的。
接下来的正文部分将分为两个主要部分,分别介绍了两种不同的方法来实现十进制到十六进制的转换,包括使用除以16取余法和使用内置函数。
vs10进制转16进制方法vs10进制转16进制方法1. 简介在计算机科学和编程领域中,经常需要进行进制之间的转换。
其中,将十进制数转换为十六进制数是一种常见的操作。
本文将介绍几种常用的vs10进制转16进制的方法。
2. 方法一:除以16取余法1.将给定的十进制数除以16,得到商和余数。
2.将余数转换为十六进制数,如果余数大于9,则用字母表示(A=10,B=11,C=12,D=13,E=14,F=15)。
3.取商作为新的十进制数,重复上述步骤,直到商为0为止。
4.将所得的所有余数按照得到的顺序从右至左排列,即得到对应的十六进制数。
示例我们以十进制数231为例,进行vs10进制转16进制的操作:1.首先,231除以16得到商14余7,即231 = 14 * 16 + 7。
2.将余数7转换为十六进制数为7。
3.再将商14作为新的十进制数,重复上述步骤。
4.继续除以16,得到商0余14,即14 = 14 * 16 + 0。
5.将余数14转换为十六进制数为E。
6.最终,将所有余数按照从右至左的顺序排列,得到十六进制数为E7。
因此,十进制数231对应的十六进制数为E7。
3. 方法二:位运算法1.将十进制数转换为二进制数。
2.将二进制数每4位作为一组进行分组。
3.将每组分别转换为对应的十六进制数。
4.将所得的十六进制数按照从左至右的顺序排列,即得到最终结果。
示例以十进制数231为例,进行vs10进制转16进制的操作:1.首先,将231转换为二进制数为。
2.将二进制数按照每4位进行分组,得到1110和0111两组。
3.将每组分别转换为对应的十六进制数,得到E和7。
4.最终,将得到的十六进制数按照从左至右的顺序排列,即得到十六进制数为E7。
4. 方法三:使用编程语言的内置函数在许多编程语言中,都提供了内置函数用于实现十进制到十六进制的转换。
这些函数通常十分方便且高效。
5. 总结本文介绍了三种常用的vs10进制转16进制的方法:除以16取余法、位运算法和使用编程语言的内置函数。
;(2)数制转换;将输入的一个数据以不同进制形式输出。
;要求:;(a)所有数字从键盘输入;;(b)输入数据为任意一个小于十万的十进制数据;;(c)将所输入数据以十六进制在屏幕显示输出(即十进制转十六进制)。
DA TA SEGMENTKEYBUFFER DB 100DB 0DB 100 DUP(0)STRING1 DB 'Please input decimal data:',' $'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DA TASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA DX,STRING1 ;显示提示输出MOV AH,09HINT 21HMOV AH,0AHLEA DX,KEYBUFFERINT 21HLEA SI,KEYBUFFER+1CALL TRANS10TO16CALL DISPCRCALL DISPAXCALL DISPCRMOV AX,BXCALL DISPAXMOV AH,4CHINT 21HDISPAL PROC NEARPUSH AXPUSH CXPUSH DXPUSH AXMOV CL,4 ;处理高位十六进制数SHR AL,CLCALL CHANG ;十六进制数变换成ASCII码MOV AH,02MOV DL,ALPOP AXAND AL,0FH ;处理低位十六进制数CALL CHANG ;同上解释MOV AH,02MOV DL,ALINT 21HPOP DXPOP CXPOP AXRETDISPAL ENDPCHANG PROC NEAR ;数码转换CMP AL,10JNGE CHANG1ADD AL,7CHANG1:ADD AL,30HRETCHANG ENDPDISPAX PROC NEARXCHG AL,AHCALL DISPALXCHG AH,ALCALL DISPALRETDISPAX ENDPDISPCR PROC NEARPUSH AXPUSH DXMOV AH,2MOV DL,0AHINT 21HMOV AH,2MOV DL,0DHINT 21HPOP DXPOP AXRETDISPCR ENDP;将输入缓冲区中以ASCII码表示的十进制数转换成16位二进制数TRANS10TO16 PROC NEARPUSH CXPUSH DXXOR AX,AXXOR CX,CXMOV CL,[SI]INC SIMOV AL,[SI]INC SISUB AL,30HDEC CXJCXZ TRANSF2 MOV BX,10 TRANSF1:MUL BXJC TRANSF_ERR MOV DL,[SI]INC SISUB DL,30HADD AL,DLADC AH,0JC TRANSF_ERR LOOP TRANSF1 MOV BX,0 TRANSF2:JMP TRANSF_OK TRANSF_ERR:MOV BX,-1 TRANSF_OK:POP SIPOP DXPOP CXRETTRANS10TO16 ENDP CODE ENDSEND START。
十进制数与十六进制数的转换方法
1.十进制数转换为十六进制数:
十进制数是我们日常使用的数制系统,由0~9这10个数字组成。
而
十六进制数是一种16进制的数制系统,由0~9和A~F这16个字符组成。
转换步骤如下:
(1)将十进制数除以16,得到商和余数;
(2)余数即是十六进制数的最低位数;
(3)将商再除以16,得到新的商和余数,余数即是十六进制数的第
二位数;
(4)依次类推,直到商为0为止;
(5)最终的十六进制数就是将所有的余数倒序排列而成。
例如,将十进制数100转换为十六进制数:
(1)100÷16=6,余数为4,此时十六进制数的最低位数为4;
(2)6÷16=0,余数为6,此时十六进制数的第二位数为6;
(3)最终的十六进制数为64
2.十六进制数转换为十进制数:
转换步骤如下:
(1)按权展开法,将每一位的十六进制数乘以相应的权值,再求和;
(2)权值由低到高依次为16^0,16^1,16^2,...;
(3)将每一位的十六进制数转换为对应的十进制数;
(4)将所有十进制数相加,得到最终的结果。
例如,将十六进制数A5转换为十进制数:
(1)A的十进制数值为10,所以A5的第一位数为10×16^1=160;
(2)5的十进制数值为5,所以A5的第二位数为5×16^0=5;
(3)最终的十进制数为160+5=165
以上就是十进制数与十六进制数之间的转换方法。
根据上述方法,我们可以将一个数从十进制转换为十六进制,或者将一个数从十六进制转换为十进制。
这些转换方法在计算机科学、数学等领域中经常被使用。
十进制转十六进制算法十六进制转换成十进制的具体算法是:1、首先明白16进制数(从右到左数是第0位,第1位,第2位……)的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次这样排列下去。
2、明白ABCDEF表示的二进制数字分别是10,11,12,13,14,15。
3、十六进制转换成十进制的公式是:要从右到左用二进制的每个数去乘以16的相应次方,然后这些数字相加就是了。
例1:2AF5换算成10进制:第0位:5*16^0=5第1位:F*16^1=15*16^1=240第2位:A*16^2=10*16^2=2560第3位:2*16^3=8192结果就是:5*16^0+15*16^1+10*16^2+2*16^3=10997例2:CE换算成10进制:第0位:E*16^0=14*16^0=14第1位:C*16^1=12*16^1=192结果就是:14*16^0+12*16^1=206进制转换的理论1、二进制数、十六进制数转换为十进制数:用按权展开法把一个任意R 进制数a n a n-1 ...a1a 0 . a -1 a -2...a -m转换成十进制数,其十进制数值为每一位数字与其位权之积的和。
a n ×Rn+ a n-1×R n-1 +…+ a 1×R 1 + a 0×R 0 + a -1 ×R -1+a -2×R -2+ …+ a -m ×R -m2、十进制转化成R 进制十进制数轮换成R 进制数要分两个部分:整数部分要除R 取余数,直到商为0,得到的余数即为二进数各位的数码,余数从右到左排列(反序排列)。
小数部分要乘R 取整数,得到的整数即为二进数各位的数码,整数从左到右排列(顺序排列)。
3、十六进制转化成二进制:每一位十六进制数对应二进制的四位,逐位展开。
4、二进制转化成十六进制:将二进制数从小数点开始分别向左(对二进制整数)或向右(对二进制小数)每四位组成一组,不足四位补零。
十进制和十六进制是计算机中常见的数制。
在计算机中,数据存储和处理都是以二进制的形式进行的,而在实际的编程中,为了方便人类阅读和书写代码,常常使用十进制和十六进制进行表示。
了解十进制和十六进制之间的转换方法对于理解计算机编程及相关知识至关重要。
一、十进制和十六进制的定义和特点1. 十进制定义:十进制是我们日常生活中常用的数制,有0-9十个数字,每一位的权值是10的幂次方。
2. 十六进制定义:十六进制是一种使用16个数字(0-9以及A-F)来表示数字的数制,每一位的权值是16的幂次方。
二、十进制向十六进制的转换方法1. 整数部分转换:将十进制整数部分不断除以16,将余数写下来,直至商为0为止,然后将余数倒过来即为对应的十六进制数。
示例:将十进制数2348转换为十六进制步骤一:2348 ÷ 16 = 146……12(C)步骤二:146 ÷ 16 = 9 (2)步骤三:9 ÷ 16 = 0 (9)所以2348的十六进制为92C。
2. 小数部分转换:将十进制小数部分乘以16,将得到的整数部分作为十六进制的位,将小数部分乘16再取整,直至小数部分为0或者达到要求的精度。
例如:0.625 转换为十六进制的结果为0.A。
三、十六进制向十进制的转换方法1. 整数部分转换:将十六进制的每一位乘以16的幂次方,然后相加即可得到对应的十进制数。
示例:将十六进制数3A7转换为十进制3A7 = 3×16^2 + 10×16^1 + 7×16^0 = 9352. 小数部分转换:将十六进制小数部分转化为十进制,并且将结果除以16取余再乘16,得到的整数部分作为十进制的小数部分。
例如:0.A 转化为十进制的结果为0.625。
四、注意事项与常见问题1. 在进行十进制和十六进制的转换过程中需要小心保持数字的准确性,一旦出现计算错误可能会导致结果的失真。
2. 在实际编程中,经常会涉及到各种进制的转换,因此掌握进制转换的方法是非常重要的。
10进制转16进制及8进制二进制乘法区位码和内码转换1.将十进制数除以16,得到商和余数。
2.将余数转换为对应的16进制数字。
0-9对应0-9,10对应A,11对应B,以此类推。
3.将商作为新的十进制数,重复步骤1和2,直到商为0为止。
4.将得到的16进制数字倒序排列,即为对应的16进制表示。
例如,将十进制数1234转换为16进制:1234÷16=77余2,2对应为277÷16=4余13,13对应为D。
4÷16=0余4,4对应为4所以,1234的16进制表示为4D21.将十进制数除以8,得到商和余数。
2.将余数转换为对应的8进制数字。
0-7对应0-73.将商作为新的十进制数,重复步骤1和2,直到商为0为止。
4.将得到的8进制数字倒序排列,即为对应的8进制表示。
二进制乘法算法:1.将两个二进制数的每一位相乘。
2.如果得到的乘积是0,该位结果为0;如果得到的乘积是1,该位结果为13.将结果按位相加,得到最终的乘法结果。
例如,计算二进制数1011和110的乘积:1011×110-------1101<-第一次相乘结果+10110<-第二次相乘结果--------------111001<-乘法结果区位码和内码转换:区位码和内码是汉字在计算机中的一种表示方式。
区位码用两个字节表示,高字节表示区,低字节表示位。
内码用一个字节表示。
区位码转换为内码:1.将区码的高字节减去160,得到高6位。
2.将区码的低字节减去160,得到低6位。
3.将高6位左移2位,然后与低6位相或,得到一个字节的内码。
内码转换为区位码:1.将内码的高6位右移2位,然后加上160,得到区码的高字节。
2.将内码的低6位加上160,得到区码的低字节。
例如,将区位码表示的汉字"中国"转换为内码:所以,"中国"的内码表示为D4。
10进制转换16进制方法
嘿,朋友们!今天咱就来讲讲 10 进制转换 16 进制的方法呀!这可真
是个超有趣的事儿呢!
比如说,咱有个十进制数 255,那怎么把它变成十六进制呢?
首先啊,得知道十六进制的那些符号,就是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 这几个家伙。
然后呢,咱就用255 除以16 呗,得到商 15 余数 15 呀!那 15 在十六进制里不就是 F 嘛,所以最后结果就
是 FF 呢!这多神奇呀!
再打个比方,十进制的 100,除以 16 得商 6 余 4 ,那 4 就是 4 呗,6 就是 6 ,所以就是 64 呀!这是不是还挺简单的?你看,就像搭积木一样,一步一步来,就能把十进制转变成十六进制啦!哇塞,是不是很有意思呢!
我觉得啊,掌握了这种转换方法,就好像打开了一扇通往数字奇妙世界的大门!大家都赶紧去试试吧!。