導航:首頁 > 文件處理 > 匯編壓縮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碼相關的資料

熱點內容
怎麼把微信抖音加密 瀏覽:302
android滑動進度條 瀏覽:834
javagmt轉換 瀏覽:826
linux查看snmp 瀏覽:24
ug80車床編程 瀏覽:516
怎麼加速python計算素數 瀏覽:241
腰椎第五節壓縮性骨折 瀏覽:91
程序員開會的句子 瀏覽:993
用哪個app寫編程 瀏覽:645
android通訊錄增刪改查 瀏覽:731
車貸解壓過戶可以同時進行嗎 瀏覽:921
java面向對象編程題目 瀏覽:884
二次元壓縮包 瀏覽:701
stc模擬器編程器 瀏覽:156
伺服器銷售怎麼做好 瀏覽:89
什麼是com編程 瀏覽:850
演算法工程師最新資訊 瀏覽:613
郵政銀行卡怎麼在app簽約綁定 瀏覽:51
壓縮卷一直轉 瀏覽:978
初一編程小程序怎麼做 瀏覽:828