例如將35h轉換為二進位制資料應得到
23h、即十進位制的
35datas segment
;此處輸入資料段**
buf db 35h,64h,89h
res db?
datas ends
stacks segment
;此處輸入堆疊段**
stacks ends
codes segment
assume cs:codes,ds:datas,ss:stacks
start:
mov ax,datas
mov ds,ax
;此處輸入**段**
;巨集 顯示乙個字元
dispchar macro char
mov ah,2
mov dl,char
int 21h
endm
;巨集定義完成
;巨集 顯示字串
dispmsg macro message
mov ah,9
lea dx,message
int 21h
endm
;巨集定義完成
;巨集 顯示十六進製制數的四位
disphex macro hexdata
local disphex1
push ax
push bx
push cx
push dx
mov bx,hexdata
mov cx,0404h
disphex1: rol bx,cl
mov al,bl
and al,0fh
call htoasc
dispchar al
dec ch
jnz disphex1
pop dx
pop cx
pop bx
pop ax
endm
;巨集定義完成
mov cx,lengthof buf
lea si, buf
lea di, res
;disphex word ptr [si]
again:
mov al,byte ptr [si]
call bcdto2
;disphex ax
mov byte ptr [di],al
inc si
inc di
loop again
disphex word ptr res
mov ah,4ch
int 21h
;bcd轉二進位制
bcdto2 proc
push cx
mov ah,0h
mov bl,10h
div bl
mov dl,ah
mov bl,10
mul bl
add al,dl
pop cx
retbcdto2 endp
;子程式十六進製制轉
ascii
htoasc proc
push bx
mov bx,offset ascii
and al,0fh
xlat ascii
pop bx
retascii db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h
db 41h,42h,43h,44h,45h,46h
htoasc endp
codes ends
endstart
BCD碼的加法和減法
bcd碼以四位二進位制數視作乙個十進位制位 例 bcd碼0011 0100 二進位制 34h 十六進製制 表示34 十進位制 bcd碼修正規則如下 1 若兩個8421碼數相加之和等於或小於1001,不需修正。2 若相加和在10 15之間,一方面應向高位產生進製,本身還要進行加6修正,進製是在加6修正...
關於BCD碼的編碼和解碼
1 bcd 碼 binary coded decimal 二到十進位制編碼 計算機內部多採用二進位制表示和處理數值資料,因此在計算機輸入和輸出資料時,就要進行進製的轉換處理。用 4位二進位制數來表示 1位十進位制數中的 0 9這 10個數碼,簡稱 bcd碼,即 bcd bcd碼編碼方法很多,通常採用...
BCD碼加法的步驟及其原因
當兩個bcd碼相加,如果和等於或小於 1001 即十進位制數9 不需要修正 如果相加之和在 1010 到1111 即十六進製制數 0ah 0fh 之間bai,則需加 6 進行修正 如果相加時,本位產生了進製,也需加 6 進行修正。這樣做的原因是,機器按二進位制相加,所以 4 位二進位制數相加時,是按...