BCD碼轉為相應的資料

2021-07-24 15:41:19 字數 1778 閱讀 9750

例如將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 位二進位制數相加時,是按...