導航:首頁 > 文件處理 > 匯編壓縮bcd碼

匯編壓縮bcd碼

發布時間:2022-02-06 23:56:32

Ⅰ 用匯編語言編寫多位元組壓縮bcd碼減法程序,要求顯示被減數,減數及結果

;修改'899',和'999'的長度,即可計算任意長度的相加
;如d10db'18929387499'
;d12db'18234287439'
;補充,這是相加,你要求是相減,搞差了,減法的附在後面

dsegsegment
d10db'899'
len1equ$-d10;注意d10與d12長度相同,可以做不同,但比較麻煩,這里沒做
d11db'+'
d12db'999';長度與d10相同
d13db'=','$'
d2dblen1+1p(0),'$'
dsegends

assumecs:cseg,ds:dseg
csegsegment
start:
movax,dseg
movds,ax

movah,9
leadx,d10
int21h

leasi,d10
leadi,d12
leabx,d2
addsi,len1-1;指向個位數位置
adddi,len1-1;指向個位數位置
addbx,len1;指向個位數位置
movcx,len1;計算器

clc;清除cf
c0:
movah,0;清除ah
moval,[si];取對應位置上的數字相加
andal,0FH;
movdl,[di];
anddl,0FH;
addal,dl;相加
aaa;調整
addal,[bx];加上可能的進位
aaa;再調整
mov[bx],al;保存到對應的位置上
mov[bx-1],ah;可能存在的進位,保存到對應的位置上
decsi;下一位相加
decdi
decbx
loopc0

movcx,len1+1
leabx,d2
c1:
xorbyteptr[bx],30H;將結果轉換為ascII值
incbx
loopc1

movcx,len1
leabx,d2
c2:
moval,[bx];查找結果中,第1個結果不是0的數字
cmpal,30H;從此開始顯示結果,以免出現0123這樣的結果
jnzp0
incbx
loopc2
p0:
movdx,bx
movah,9
int21h

movah,4ch
int21h
csegends
endstart

;這是減法的代碼
;有個bug,被減數必須大於減數時才正確。
;暫時先這樣
dsegsegment
d10db'991'
len1equ$-d10;注意d10與d12長度相同,可以做不同,但比較麻煩,這里沒做
d11db'-'
d12db'192';長度與d10相同
d13db'=','$'
d2dblen1+1p(0),'$'
dsegends

assumecs:cseg,ds:dseg
csegsegment
start:
movax,dseg
movds,ax

movah,9
leadx,d10
int21h

leasi,d10
leadi,d12
leabx,d2
addsi,len1-1;指向個位數位置
adddi,len1-1;指向個位數位置
addbx,len1;指向個位數位置
movcx,len1;計算器

clc;清除cf
c0:
movah,0;清除ah
moval,[si];取對應位置上的數字相加
andal,0FH;
movdl,[di];
anddl,0FH;

subal,[bx];減去可能的借位
aas;再調整

subal,dl;相減
aas;調整

negah;如有借位,轉換為正數1
mov[bx],al;保存到對應的位置上
mov[bx-1],ah;可能存在的進位,保存到對應的位置上
decsi;下一位相加
decdi
decbx
loopc0

movcx,len1+1
leabx,d2
c1:
xorbyteptr[bx],30H;將結果轉換為ascII值
incbx
loopc1

movcx,len1
leabx,d2
c2:
moval,[bx];查找結果中,第1個結果不是0的數字
cmpal,30H;從此開始顯示結果,以免出現0123這樣的結果
jnzp0
incbx
loopc2
p0:
movdx,bx
movah,9
int21h

movah,4ch
int21h
csegends
endstart

Ⅱ 匯編語言中的bcd碼默認是壓縮bcd還是非壓縮bcd

這個,沒有默認,只有開發者定義使用哪種編碼。早年的時候,計算機的配備比較低,為了節省內存,使用壓縮的BCD碼就比較好,現在存儲這方面的限制比較小了,非壓縮也無所謂了。主要看開發者喜歡哪種方式了。

Ⅲ 匯編語言壓縮BCD碼和非壓縮BCD碼是怎麼回事

BCD碼是表示十進制數的,非壓縮BCD碼是用8位表示的,其實只用低4位,高4位全為0。
例如,十進制數36,用非壓縮BCD碼表示為:0000 0011 0000 0110 ,這是兩個位元組。
壓縮BCD碼,就把高4位的0省掉了,用一個位元組表示兩個BCD碼了。
還是,十進制數36,用壓縮BCD碼表示為:0011 0110 ,就一個位元組就行了。節省了一個位元組。

Ⅳ 匯編語言程序設計:一個字的壓縮BCD碼的減法

壓縮的BCD碼減法的十進制調整指令是DAS,指令格式為:DAS(隱含對寄存器AL操作) 功能為:如果AL的低四位>09H,或者標志位AF=1,則將AL減06H調整,AF=1;如果AL的高四位>09H,或者標志位CF=1,則將AL-60H調整,CF=1。

Ⅳ 如何用匯編語言實現將非壓縮BCD碼轉換成對應的壓縮BCD碼

MOV R2, #05H;非壓縮BCD碼
MOV R3, #06H
MOV A, R2 ;將R2傳給A
SWAP A ;A的高低4位交換
ORL A, R3 ;將R3與A或運算
MOV R4, A ;運算後的值即壓縮碼

關鍵是SWAP和ORL運算。

Ⅵ 匯編 壓縮BCD碼有哪些

十進制數的二進製表示形式,低四位表示一位高四位表示一位,例如:66H=66。所以可以根據自己的需要定義

Ⅶ 51單片機匯編語言把ASCII碼轉換為壓縮BCD碼

mov R6,#30H
mov R7,#0
mov DPTR,#2000H
mov R2,10
L1:
movx A,@DPTR
inc DPTR
anl A,#0FH
swap A
mov R0,A
movx A,@DPTR
inc DPTR
anl A,#0FH
orl A,R0
push DPH
push DPL
mov DPH,r6
mov DPL,r7
movx @DPTR,A
inc DPTR
mov R6,DPH
mov R7,DPL
pop DPL
pop DPH
djnz R2,L1

Ⅷ 如何用匯編語言實現將壓縮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

Ⅸ 用匯編語言將壓縮BCD碼轉換成對應十進制數字的ASCLL碼

將壓縮BCD碼轉換成對應十進制數字的ASCLL碼,其實就是將在BCD碼的基礎上加30,這就是比較經典的匯編例題啊。

Ⅹ 跪求匯編語言4位壓縮BCD碼與4位壓縮BCD碼相乘的程序!

;入口參數
;
AL:4位壓縮BCD碼於低4位
;
BL:4位壓縮BCD碼於低4位
;出口參數
;
AL:壓縮BCD碼形式的乘積
DAM
PRO
PUSH
BX
PUSH
CX
MOV
BH,0AH
MOV
CL,4
XOR
AH,AH
MUL
BL
XOR
AH,AH
DIV
BH
SHL
AL,CL
XOR
AL,AH
POP
CX
POP
BX
DAM
ENDP

閱讀全文

與匯編壓縮bcd碼相關的資料

熱點內容
pdf怎麼看大小 瀏覽:214
二建加密鎖怎麼補辦 瀏覽:880
把文件變壓縮文件 瀏覽:807
伺服器如何密碼重置 瀏覽:347
程序員技術崗有哪些工作 瀏覽:161
什麼樣的人能學演算法 瀏覽:446
伺服器如何接收數據 瀏覽:321
coursera編程作業 瀏覽:790
文件夾夾芯 瀏覽:288
固體不能被壓縮 瀏覽:166
日誌dos命令 瀏覽:582
openwrt編譯python 瀏覽:624
億邦欲發展加密貨幣交易所 瀏覽:572
java數據類型byte 瀏覽:48
高頻電路pdf 瀏覽:812
歐洲劍pdf 瀏覽:274
單片機與數碼管的連接 瀏覽:918
php編譯後文件 瀏覽:994
六針加密15針防塵網密度 瀏覽:21
安卓機配什麼無線藍牙 瀏覽:221