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碼。