導航:首頁 > 操作系統 > 51單片機da指令用於

51單片機da指令用於

發布時間:2022-09-27 06:10:00

1. 匯編中的DA指令是怎麼回事,是轉成8421BCD碼么

DA是十進制調整指令,一般跟在加法減法指令後面,用於將二進制的加法減法指令運算後,將二進制結果調整為十進制數。
例如:#5FH用DA後,個位數上的F調整為十進制的15,就會向十位產生一個進位。結果調整為65H。
調整後的數是十進制數即8421BCD碼。
如果是#AAH,#FFH等,經DA調整 都能變為十進制數,即110和165.

2. 關於單片機DA指令

我沒有看到給R3自動加1的程序
在MOV A, R3後加入

ADD A, #01H
DA A
MOV R3, A

兩個功能
1. 自動加1
2. 將十六位轉換為10進制,比如,09H轉換一下,還是09
0AH轉換一下,就成了10了,這主要就是為了顯示,
但你的是發光二極體顯示,並不是數碼管顯示的,它顯示出來的肯定是亂碼,
如果你不轉換,也就是不加DA的話,那麼二極體顯示的就是2進制數據,這樣還可以看出來到底按了多少次,但搞成這個樣子,就得重新算了,
顯示的數據是兩個8進制,高四位顯示十位,低四位顯示個位,是十進制數,得仔細看了

3. 求教,單片機中的DA指令是指啥啊

DA A;這條指令是十進制調整指令,用來在進行十進制運算(BCD碼)時進行校正的。
當兩個BCD碼加法時,01H+09H應該是等於10H,但由於 單片機的加法指令是二進制的運算,加完之後得到的結果是0AH,這時就需要再加上一個06H。
DA這條指令就是起這個作用。

4. 求教,單片機中的DA指令是指啥啊

DA
A;這條指令是十進制調整指令,用來在進行十進制運算(BCD碼)時進行校正的。
當兩個BCD碼加法時,01H+09H應該是等於10H,但由於
單片機的加法指令是二進制的運算,加完之後得到的結果是0AH,這時就需要再加上一個06H。
DA這條指令就是起這個作用。

5. 請教:51單片機,用匯編語言實現指令DAA的功能

DA A指令,是專門用於BCD碼加法計算調整的,例如,計算十進制數26+17,用指令:
MOV A ,#26H
ADD A ,#17H
這樣計算的結果是3DH,這不是十進制數,在加法指令後加上DA A,則進行十進制數調整,調整後的結果就是43了。

6. 單片機中調整指令:DA A是什麼意思

BCD碼轉換指令;
比如說:
81D+91D=172D
而:
81H+91H=112H
這里為了將81H+91H結果與81D+91D一致,經過DA有:
DA(112H)=112H+60H=172H
雖然一個是16進制一個是10進制但172在形式上是相等的。

MOV R5,#81H
MOV A, #91H
ADD A, R5
DA A
首先81H+91H=112H,此時AC=0,Cy=1,A=12H,所以DA A後A=12H+60H=72H,AC=0,Cy=1,結果為172H,當然運算應該理解為81D+91D=172D。

7. MCS-51 系列單片機的十進制調整指令只適用運算。() A錯 B對

答:MCS-51 系列單片機的十進制調整指令DA A,只適用加法運算指令ADD、ADDC兩條指令。

8. 用51單片機編程

單片機中只有一條語句是對進制調整的
DA A 對累加器A的結果進行十進制調整
如果隨意對一個累加器A中的二進制數據進行「二進制轉十進制」調整是沒有任何實際意義的!

DA調整的對象是ADD或ADDC以後的結果,而且是BCD碼相加以後才能夠加以調整,否則沒有實際意義!

比如,現在我想執行12D+39D也就是兩個十進制數相加這樣一個加法(有時候程序處理的需要,數據在單片機中是以BCD碼的形式存儲的,也就是12H和39H(十六進制),但我們可以人為將它們看為12D和39D(十進制),而且還希望相加以後的結果為51H,也就是說符合十進制運算規則12+39=51,而不是4BH的結果),但這樣的十進制加法運算在單片機中是不能夠直接實現的。因為單片機只能夠執行二進制加法指令,也就是所有的運算都按照二進制中的規則進行!

於是就出現了DA調整指令!

現在12H+39H,將12H放於A中,執行 ADD A,#39H指令,則結果為4BH,這不是我們希望的51H的數據形式!!這時執行DA A 指令後,就會將A中的數據調整為51H(具體調整過程和原理你可以詳細看書,如果單片機書中講的不詳細,那麼微機原理中一定說的非常詳細),而我們按照BCD碼規則就將其看為51D,符合我們的要求!

也就是說加數和被加數都是BCD碼的形式,最大也只可能是99H,也就是我們十進制數中的99,只有這樣才會有實際的意義!
所以DA A指令只用於十進制BCD碼加法指令以後,否則是沒有實際意義的!
在單片機中數據就是以二進制存放的也可以說是以16進制存放(4位二進制就是16進制),所以一般來說在單片機只有二進制轉十進制才有意義,通過單片機將十進制轉二進制是沒意義的。 這個一般都是我們自己把一個十進制數轉成二進制再送給單片機處理。
非得編寫程序的話 程序如下
----------------------------------------------------------------------
;二進制整數(2位)轉換為十進制整數(組合BCD碼)
;入口: R3,R4
;出口: R0
IBTD22 : MOV A,R0
PUSH A
MOV R7,#03H
CLR A
IBD221 : MOV @R0,A
INC R0
DJNZ R7,IBD221
POP A
MOV R0,A
MOV R7,#10H
IBD222 : PUSH A
CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV B,#03H
IBD223 : MOV A,@R0
ADDC A,@R0
DA A
MOV @R0,A
INC R0
DJNZ B,IBD223
POP A
MOV R0,A
DJNZ
--------------------------------------------------
;二進制整數(M位)轉換為十進制整數(組合BCD碼)
;入口: R1,M,N
;出口: R0
IBTDMN : MOV A,R0
MOV R2,A
MOV A,R1
MOV R3,A
MOV B,N
CLR A
IBDMN1 : MOV @R0,A
INC R0
DJNZ B,IBDMN1
MOV A,M
SWAP A
RR A
CLR C
MOV R7,A
IBDMN2 : MOV A,R2
MOV R0,A
MOV A,R3
MOV R1,A
MOV B,M
IBDMN3 : MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ B,IBDMN3
MOV B,N
IBDMN4 : MOV A,@R0
ADDC A,@R0
DA A
JNB ACC.4,IBDMN5
SETB C
CLR ACC.4
IBDMN5 : MOV @R0,A
INC R0
DJNZ B,IBDMN4
DJNZ R7,IBDMN2
MOV A,R2
MOV R0,A
RET
----------------------------------------------------------------
BCD整數轉換為二進制整數(1位)
;入口: R0(高位地址),R7
;出口: R4
IDTB1: CLR A
MOV R4,A
IDB11: MOV A,R4
MOV B,#0AH
MUL AB
ADD A,@R0
INC R0
MOV R4,A
DJNZ R7,IDB11
RET
------------------------------------------
;BCD整數轉換為二進制整數(N位)
;入口: R1(高位地址),M,N
;出口: R0
IDTBMN : MOV A,R0
MOV R2,A
MOV B,N
CLR A
IDBMN1 : MOV @R0,A
INC R0
DJNZ B,IDBMN1
MOV A,R2
MOV R0,A
MOV A,M
MOV NCNT,A
IDBMN2 : MOV R7,N
CLR A
CLR F0
IDBMN3 : XCH A,@R0
MOV B,#0AH
MUL AB
MOV C,F0
ADDC A,@R0
MOV F0,C
MOV @R0,A
INC R0
MOV A,B
DJNZ R7,IDBMN3
MOV A,R2
MOV R0,A
MOV A,@R1
INC R1
ADD A,@R0
MOV @R0,A
DJNZ NCNT,IDBMN2
RET
----------------------------------------------------------
NDIV31 : MOV A,R2
MOV B,R7
DIV AB
PUSH A
MOV R2,B
MOV B,#10H
NDV311 : CLR C
MOV A,R4
RLC A
MOV R4,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV F0,C
CLR C
SUBB A,R7
JB F0,NDV312
JC NDV313
NDV312 : MOV R2,A
INC R4
NDV313 : DJNZ B,NDV311
POP A
CLR OV
JZ NDV314
SETB OV
NDV314 : XCH A,R2
MOV R7,A
RET

閱讀全文

與51單片機da指令用於相關的資料

熱點內容
壓縮機lj100cy 瀏覽:556
王者系統怎麼轉回安卓系統 瀏覽:749
linux查看路由表命令 瀏覽:506
高手程序員使用什麼筆記本 瀏覽:440
ios壓縮圖片app 瀏覽:839
排隊論pdf 瀏覽:520
python調用無參函數 瀏覽:799
主管開除女程序員 瀏覽:713
雲伺服器轉售 瀏覽:541
壓縮空氣漏氣量怎樣計算 瀏覽:103
手機app是怎麼跳轉的 瀏覽:664
學編程的重要性 瀏覽:25
程序員去按摩 瀏覽:740
奧迪手機控車app怎麼添加愛車 瀏覽:5
收磚機石獅編程培訓廠家 瀏覽:762
吉里吉里2安卓模擬器怎麼用 瀏覽:819
編譯器將匯編代碼 瀏覽:682
電路板加密錯誤 瀏覽:21
java自動機 瀏覽:364
相機連拍解壓 瀏覽:32