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根資料線 同步傳輸...