哪位高人能告诉一下在汇编语言中20位无符号二进制数转化为BCD码的思路,不甚感激!!!

如题所述

嘿嘿 俺可以告诉你
汇编语言中20位无符号二进制数转化为BCD码的思路:
1 分析:20位无符号二进制数转化为十六进制数为00000H~FFFFFH
转化为最大的十进制数为1百万多。转化后的BCD码的位数包括:
百万位、十万位、万位、千位、百位、十位、个位。 占3个半字节。
2 你的任务就是:
确定出BCD码的百万位、十万位、万位、千位、百位、十位、个位上的数值。
3 具体方法:
就是利用多字节除法子程序,对20位无符号二进制数先除以1百万,得到的商
即为百万位的数值。
余数再除以十万,得到的商 即为十万位的数值。
余数再除以1万,得到的商 即为万位的数值。
余数再除以1千,得到的商 即为千位的数值。
余数再除以1百,得到的商 即为百位的数值。
余数再除以10 ,得到的商 即为十位的数值。
最后剩下的余数, 就是个位上的数值。

呵呵 按上述方法编写,即可完成20位无符号二进制数到BCD码的转换。

满意 就选满意回答追问

呃,感觉这种方法有点复杂,不知道你懂不懂用迭代乘法,及循环左移的方法编程,我在书上见过,不过讲的太过简单,完全看不懂,不知道你懂不懂,懂的话能帮我说一下么?非常感激!

追答

呵呵 迭代法 俺当然懂了 不过不是什么 都可以用迭迭代法决的,
你要解决的问题是不属于迭代法的。
这个是数制的转换,不是单纯的乘法运算。不能用迭代乘法,及循环左移的方法编程。

追问

呃,我觉得还是可以用迭代法的,因为我们老师就要求我们用这种方法啊,不过还是很感激你的热心回答!!!

温馨提示:内容为网友见解,仅供参考
无其他回答

哪位高人能告诉一下在汇编语言中20位无符号二进制数转化为BCD码的思路...
1 分析:20位无符号二进制数转化为十六进制数为00000H~FFFFFH 转化为最大的十进制数为1百万多。转化后的BCD码的位数包括:百万位、十万位、万位、千位、百位、十位、个位。 占3个半字节。2 你的任务就是:确定出BCD码的百万位、十万位、万位、千位、百位、十位、个位上的数值。3 具体方法...

将二进制数01001100B,转换成bcd码。使用汇编语言。求大神回复。拜托...
二进制数01001100B?从中,分离出来百位、十位、个位,单独存放。即可。汇编语言,有很多种。

二进制与BCD码之间的转换
一般来说,默认的BCD码是8421码,也就是说,使用4位二进制数来表示10位0-9的1位十进制数。从左到右的重量是8,4,2,1。以十进制37为例,进行转换:3=2+1=(8421码)0011,7=4+2+1=(8421码)0111。所以37转换成8421码为0011 0111。

怎么将16位二进制数转换成BCD码的汇编语言程序
1、首先左移要转换的二进制码1位; 左移之后,BCD码分别置于百位、十位、个位; 如果移位后所在的BCD码列大于或等于5,则对该值加3;继续左移的过程直至全部移位完成,并检查每一列对应的bcd码是否 2、接着看信号列表。3、然后二进制代码设计。4、十进制代码。5、十六进制,最后就完成了。注意...

汇编语言BCD码转二进制
条件,还应该有一句:BCD 码总数,不超过 65535 吧?转换程序如下:MOV CX, DX MOV AX, 10000 MUL BX MOV DI, AX MOV AL, CL ;十位个位 MOV AH, 0 MOV BL, 16 DIV BL MOV DL, AH ;个位 MOV BL, 10 MUL BL ADD AL, DL MOV AH, ...

几个汇编语言的思考题,谁会,告诉我啦
1. 将一个五位十进制数转换为二进制数(十六位)时,这个十进制数最小可为多少,最大可为多少?为什么?无符号数10000-65535,小于10000,就不是五位,高于65535,超出十六位二进制能表示的范围 2. 将一个十六位二进制数转换为ASCII码十进制数时,如何确定Di的值?使用除法指令除10,取余,可依次...

将二进制变为BCD十进制码,用汇编语言,有哪些算法?求教!!!
标号:HBCD功能:单字节十六进制整数转换成单字节BCD码整数 入口条件:待转换的单字节十六进制整数在累加器A中。出口信息:转换后的BCD码整数(十位和个位)仍在累加器A中,百位在R3中。影响资源:PSW、A、B、R3 堆栈需求: 2字节 HBCD: MOV B,#100 ;分离出百位,存放在R3中 DIV AB MOV R3,A...

汇编语言
13.试编程实现两个无符号16位数的减法,被减数和减数分别存放在DATA1和DATA2为首址的内部RAM中,低位在先,高位在后,差存于R3(低8位)和R4(高8位)中。14.指出以下程序每一条指令的执行结果。MOV A,#0F0H ORL 30H,#BDHCPL A XRL 30H,AANL 30H,#00H 15.指出以下程序每一条指令的执行结果。设(C)=0。

用汇编语言将BCD码转化为二进制数
以下程序将10个两位压缩bcd数转化为二进制数,并和给出的结果进行比较。供参考: CODE SEGMENT ASSUME CS:CODE ORG 100H START: JMP BB SR DB 31H,32H,61H,41H,42H,03H,77H,81H,93H,55H DE DB 1FH,20H,3DH,29H,2AH,03H,4DH,51H,5DH,37...

急!急!用汇编语言把二进制转换成十进制,要解释
用汇编语言把二进制数转换成十进制数的方法是:(1)把存放十进制数BCD码的寄存器清零。(2)把存放十进制数BCD码的寄存器内容复制到加数寄存器。(3)把要转换的二进制数由高位到低位逐位读入,若是1,则把累加器的进位寄存器置1,否则置0。(4)把存放十进制数BCD码的寄存器与加数寄存器相加后送回...

相似回答
大家正在搜