datas segment
;此處輸入資料段**
buf dw 0302h,0908h,0705h,0102h
res db?
buf_size db?
res_size 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
again:
mov ax,word ptr [si]
;disphex ax
call bcd
mov byte ptr [di],al
inc si
inc si
inc di
loop again
;顯示res
的內容lea si, res
;disphex [si+4]
disphex [si+2]
disphex [si]
mov ah,4ch
int 21h
;子程式壓縮
bcd轉非壓縮
bcdbcd proc
push cx
mov cl,4
shl al,cl
shr ax,cl
pop cx
retbcd 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碼整數除法
實驗1.3 多位元組非壓縮型bcd數除法 data segmentadb 8,6,8,7,5bdb5 c1db 5dup 0 nequ5 data ends code segment assumecs code,ds data,es data start movax,data movds,ax mo...
彙編 ASCII碼轉BCD碼並輸出
datas segment nums db 30h,31h,41h,38h,39h,32h,33h,36h,31h ascii碼 numo db 4 dup dlen nums datas ends codes segment assume cs codes,ds datas start mov a...
bcd碼是什麼意思 BCD碼是什麼
今天給大家穿插講一期常用的數字編碼形式 bcd碼。可能我們在學校經常使用二進位制和十六進製制的數字表達形式。然而大多數情況下我們都是需要和十進位制數進行轉化來進行數字的表達,因為我們社會普遍習慣使用十進位制。相對於一般的浮點式記數法,採用bcd碼,既可儲存數值的精確度,又可免去使計算機作浮點運算時所...