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

熱點內容
歌詞滾動效果android 瀏覽:14
程序員一天的六場戰斗 瀏覽:797
自製壓縮泵的做法 瀏覽:622
androidstring變數 瀏覽:247
數學乘法速演算法 瀏覽:986
壓縮包製作後照片順序怎麼改 瀏覽:680
fibonacci數列演算法 瀏覽:775
產品經理要和程序員吵架嗎 瀏覽:252
grub2命令行 瀏覽:618
無法獲取加密卡信息 瀏覽:774
雲伺服器網卡充值 瀏覽:509
編程就是軟體 瀏覽:49
伺服器如何添加許可權 瀏覽:437
引用指針編程 瀏覽:851
手機加密日記本蘋果版下載 瀏覽:64
命令行括弧 瀏覽:176
java程序升級 瀏覽:490
排序演算法之插入類 瀏覽:227
gcccreate命令 瀏覽:73
海爾監控用什麼app 瀏覽:64