1. BCD码中压缩和非压缩是怎么区别的
一、字节表示不同
1、非压缩BCD码:非压缩BCD码用1个字节表示一位十进制数。
2、压缩BCD码:压缩BCD码的每一位用4位二进制表示,一个字节表示两位十进制数。
二、内容规定不同
1、非压缩BCD码:高4位的内容不做规定(也有部分书籍要求为0,二者均可),低4位二进制表示该位十进制数。
2、压缩BCD码:每个数位占用半个字节(4个二进制位),其值也用二-->十进制编码(BCD码)或数字符的ASCII码的低4位表示。符号位也占用装修字节并放在最低数字位之后。其值选用四位编码中六种冗余状态中的有关值。
三、BCD码放置不同
1、非压缩BCD码:一个字节只放一个BCD码,高位置0。
2、压缩BCD码:把二个BCD码放在一个字节中。
2. 汇编 使用DOS的INT 21H功能调用中的2号调用,编程序实现将二位压缩的BCD码转换为非压缩
调用Show2BCD就能实现将二位压缩的BCD码转换为非压缩的BCD码存放到SI所指的存储区中,并显示,完整程序如下:
.modle small,c
.code
BCDS DB 2 DUP(?)
Main PROC
PUSH CS
POP DS
LEA SI,BCDS
MOV AL,23H ;这是压缩的BCD码23
CALL Show2BCD
MOV AH,4CH
INT21H
Main ENDP
Show1BCD PROC
AND AL,0FH
MOV [SI],AL
INC SI
ADD AL,'0'
MOV DL,AL
MOV AH,2
INT 21H
RET
Show1BCD ENDP
Show2BCD PROC
PUSH AX
MOV CL,4
SHR AL,CL
CALL Show1BCD
POP AX
CALL Show1BCD
RET
Show2BCD ENDP
END Main
3. 如何用汇编语言实现将压缩BCD码转换成对应的非压缩BCD码
;入口al,出口ax
packtobcdprocnear
pushbx
pushcx
movbl,al
andbl,15
movcl,4
shral,cl
movah,al;高位放在ah中
moval,bl;地位放在al中
popcx
popbx
ret
packtobcdendp
4. 怎样将压缩bcd码转换成非压缩bcd码
十进制数74转换为压缩BCD码是01110100b。所谓的压缩BCD码,指的就是用四位二进制数表示一位BCD码,用一个字节表示的两位BCD码,称为压缩型BCD码。一个BCD码占4位,而一个字节有8位。若把二个BCD码放在一个字节中,就叫压缩的BCD码。而一个字节只放一个BCD码,高位置0,则叫非压缩的BCD码。
5. 编程时什么是压缩BCD码 非压缩BCD码如题 谢谢了
BCD码是一一对应的,如: 十进制的123 用BCD表示为:0001 0010 0011 因为: 十进制的 1 用二进制表示是 0001 十进制的 2 用二进制表示是 0010 十进制的 3 用二进制表示是 0011 与二进制的区别: 123的二进制应该用短除法求得1111011 由此可见,BCD码只是机械地用二进制表示十进制的每一位。 压缩与非压缩: 由于1字节有8bit(8个0或1) 如果用一字节存储4位BCD码(其余补0)就是非压缩 如 十进制的123:00000001 00000010 0011 如果用一字节存储8位BCD码就是压缩 如 十进制的123:0001 0010 0011
6. 汇编语言压缩BCD码和非压缩BCD码是怎么回事
BCD码是表示十进制数的,非压缩BCD码是用8位表示的,其实只用低4位,高4位全为0。
例如,十进制数36,用非压缩BCD码表示为:0000
0011
0000
0110
,这是两个字节。
压缩BCD码,就把高4位的0省掉了,用一个字节表示两个BCD码了。
还是,十进制数36,用压缩BCD码表示为:0011
0110
,就一个字节就行了。节省了一个字节。
7. 怎么把一个字节的压缩BCD码用两个字节的非压缩BCD码表示出来呢
把一个字节的压缩BCD码除以16,得到的商和余数就是非压缩的BCD码了,商是高四位的BCD码,余数是低四位的BCD码,如果再分别加上0x30,就成为ASCII码。