微控制器中調整指令 DA A是什麼意思

2021-09-06 09:23:00 字數 5115 閱讀 9955

1樓:墨汁諾

這是用匯編寫程式,計算十進位制時常用的指令,是十進位制調整指令。

例,計算15+16,而且是用bcd碼示時,是0001 0101 + 0001 0110

計算和為:0010 1011,是2bh,並不是31,這時就可以用da a指令進行整調,就變成 0011 0001 ,這就是31的bcd碼了。

da a指令,只對加法計算結果有調整作用。

2樓:

在執行加法指令之後,將十六進位制的累加器結果轉為bcd……

3樓:德昂當

答案是 a=62h

da a 是bcd加法後的調整

兩個bcd碼相加 35+27 =62

add a,#27後 a=5bh

da a ;進行調整就成了 62h

一定是兩個bcd碼相加,da a 要緊跟在 add 之後

4樓:匿名使用者

這條指令對累加器中由上一條加法指令(加數和被加數均為要所bcd嗎)所獲得的8位結果進行調整,使它調整為八位壓縮bcd碼的數。

例如:(a)=55,(r5)=67

add a,r5

da a

結果為(a)=23,cy=1.

5樓:物理狂人

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。

微控制器中十進位制調整指令:da a是什麼意思?

6樓:物理狂人

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樓:

一般用在加法運算中,作用:把a中的數,變為bcd碼的形式結果在:cy,ac,和a中

例如:mov a,#100

addc a,#25

da a

結果是:a=83h,cy=0,ac=1

8樓:匿名使用者

這條指令對累加器中由上一條加法指令(加數和被加數均為要所bcd嗎)所獲得的8位結果進行調整,使它調整為八位壓縮bcd碼的數。

例如:(a)=55,(r5)=67

add a,r5

da a

結果為(a)=23,cy=1.

9樓:天下信義

da a,就是把a中的運算元轉換成10進位制

微控制器中十進位制調整指令:daa是什麼意思?

10樓:富察良終女

bcd碼轉換指令;

比如說:

81d+91d=172d

而:81h+91h=112h

這裡為了將81h+91h結果與81d+91d一致,經過da有:

da(112h)=112h+60h=172h雖然一個是16進位制一個是10進位制但172在形式上是相等的。

movr5,#81h

mova,#91h

adda,r5

daa首先81h+91h=112h,此時ac=0,cy=1,a=12h,所以daa後a=12h+60h=72h,ac=0,cy=1,結果為172h,當然運算應該理解為81d+91d=172d。

微控制器程式裡 帶進位減法怎樣進行十進位制調整

11樓:匿名使用者

如果是51微控制器的抄話,做襲

十進位制減法運算,只能用add和addc指令做,因為只有這兩條加法指令運算的結果才能用da a指令進行十進位制調整。方法是:如y=a-b,變成y=a+(-b),做加法之前將-b變成補碼就可以了。

提倡用keilc寫程式,就不用考慮什麼十進位制調整了,也不管是加法還是減法了,多好哇。

12樓:做而論道

51微控制器的da a指令du,放在subb指令後面,是不起作用zhi的;

必須把daosubb指令變換版成add指令,才能用權da a指令進行調整。

這裡提到了「減法」變換成「加法」,就要借用時鐘「倒撥」變成「正撥」的方法,倒撥15分鐘,和正撥45分鐘,效果相同。15和45就是以60為模的互補的數。

兩位十進位制數,是以100為模的,減去60,和加上40,效果是相同的。

100,可以分解,寫成99+1,按照十六進位制,可以寫成9ah。

那麼,將a和60相減,程式如下:

mov r0, a ;儲存被減數.

mov a, #9ah ;100

clr c

subb a, #60h ;減去減數,得到100的補數.

add a, r0 ;使用加法即可.

da a ;調整為bcd數.;完

關於微控制器彙編的十進位制調整指令。

13樓:做而論道

是不是做加法,凡是遇到上述情況都得修正?--是bcd碼的加法,就必須修正。

那為什麼我看到的某些加法運算沒有修正啊?--那就不是bcd碼的加法。

一般時,是用四位二進位制數,表示一位16進位制數(0~16),即0000~1111。

bcd碼,是用四位二進位制數,表示一位十進位制數 (0~9),即0000~1001。

如果是bcd碼的加法,就必須修正,否則就可能出現16進位制數,這個結果就不是bcd碼了。

14樓:藏在水中的人

由於bcd碼在微控制器中是以16進位制的形式儲存的,我們觀測到的值和微控制器實際儲存的值是不一樣的,例如bcd碼10,我們看到的值是10,但是微控制器實際儲存的值16,微控制器的運算也都是以16進位制的形式進行的,因此用微控制器進行bcd的運算都需要修正。不是bcd碼的運算,就不需要修正了。例如兩個正常的十進位制數 15+17=32;15對應的16進位制數是0fh,17對應的16進位制數是11h

相加寫成

mov a,#0fh

add a, #11h

結果為20h對應是進位制數為32

也可以寫成

mov a,#15d

add a, #17d ;結果一樣

15樓:匿名使用者

微控制器彙編的十進位制調整指令, 是為了讓程式設計簡單化, 可以直接以 十進位制 運算, 如

15+56=

mov a, #15h ; a = 15h ( 注意 要以 十六進位制 寫成 15h)

add a, #56h ; a = 15h+56h = 6bh

da a ; a = 6bh + 06h = 71h c = 0 進位標誌

68+75=

mov a, #68h

add a, #75h ; a = 68h+75h = ddh

da a ; a = ddh + 66h = 43h c = 1 = 143

; 注 十進位制調整指令 必須跟在加法指令後面

; 否則會出錯。

16樓:山魚

如果是bcd碼,就必須修正,這樣得到的結果才是bcd碼

17樓:匿名使用者

只有bcd碼相加才用

18樓:筱悠

要具體看程式的要求的,有的程式不是用的bcd碼的話就不用這樣的。。。多看看多想想就清楚了

在彙編中,指令daa是什麼意思

19樓:來自火星的世界

十進位制數加調整指令daa(decimal adjust after addition)

該指令是用於調整al的值,該值是由指令add或adc運算二個壓縮型bcd碼所得到的結果。

壓縮型bcd碼是一個位元組存放二個bcd碼,低四位和高四位都是一個bcd碼。

其調整規則如下:

1、如果al的低四位大於9,或標誌位af=1,那麼,al=al+6,並置af=1;

2、如果al的高四位大於9,或cf=1,那麼,al=al+60h,並置cf=1;

3、如果以上兩點都不成立,則,清除標誌位af和cf。

經過調整後,al的值仍是壓縮型bcd碼,即:二個壓縮型bcd碼相加,並進行調整後,得到的結果還是壓縮型bcd碼。

20樓:

bcd碼加法調整指令 對兩個壓縮bcd碼相加後的結果進行調整 以獲得正確的壓縮bcd碼結果

mcs-51系列微控制器,長呼叫lcall和短呼叫acall什麼情況下使用

21樓:匿名使用者

可定址的範圍不一樣,acall是雙位元組指令,呼叫指令的地址pc加2後與所呼叫的子程式的起始地址應在同一個2kb範圍內,而lcall是三位元組指令,可在64kb範圍內呼叫,換句話說,就是子程式離得太遠就要用lacll,離得近用acall就可以。ljmp和sjmp同上,ljmp三位元組指令,可轉移到64kb程式儲存器任意單元,sjmp是雙位元組指令,只可以在儲存器256個單元範圍內轉移。

微控制器組合語言指令中中斷返回指令ret和reti有什麼

reti 是中斷返回指令 ret 是子程式返回指令 reti比ret多一步清除中斷優先順序狀態位,讓同級別的中斷有機會得到響應。中斷指令 reti 做為中斷跳出指令除了將堆疊中儲存著的地址取出,送回pc 使程式從主程式的中斷處繼續往下執行的作用外,還有將 優先順序生效 觸發器清零的功能。ret 是子...

微控制器組合語言指令中條件轉移指令jbc與jc的區別

一 作用不同 jbc指令判斷該位為1則轉移,同時將該位置0。jc指令判斷有借位則轉移,也就是說兩數相減為負轉移。二 含義不同 jbc指令相當與jb和clr 位 二條指命的組合,它可在轉移的同時清除被判位 jc指令只能對cy進位位進行判斷為高後轉移,並不能清除它,二條指令都當被測位為高進時進行相對轉移...

什麼是微控制器串列埠顯示,微控制器中的串列埠是什麼

就是通過微控制器的串列埠傳輸資料到電腦上或者其他微控制器上,然後通過顯示工具顯示出來。用串列埠方式 傳送顯示資料 微控制器中的串列埠是什麼?微控制器中的串列埠用來進行序列通訊,即資料是一位一位 二進位制0或1 向外傳輸的,和並行傳遞資料相比,資料線比較少,只要1根 非同步傳輸 或2根資料線 同步傳輸...