1樓:匿名使用者
bcd碼轉換指令;bai
比如說du:
81d+91d=172d
而:zhi
81h+91h=112h
這裡為了將81h+91h結果與81d+91d一致dao,經過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。
組合語言中為什麼要有十進位制調整指令,原因是什麼?
2樓:做而論道
cpu 的運算指令,是按照二進位制數進行計算的。
參加運算數字,如果,你用的是 bcd 碼,那麼,運算結果,也就變成了一般的二進位制數。
難道,你不想把它們,再變成 bcd 碼?
關於微控制器彙編的十進位制調整指令。
3樓:做而論道
是不是做加法,凡是遇到上述情況都得修正?--是bcd碼的加法,就必須修正。
那為什麼我看到的某些加法運算沒有修正啊?--那就不是bcd碼的加法。
一般時,是用四位二進位制數,表示一位16進位制數(0~16),即0000~1111。
bcd碼,是用四位二進位制數,表示一位十進位制數 (0~9),即0000~1001。
如果是bcd碼的加法,就必須修正,否則就可能出現16進位制數,這個結果就不是bcd碼了。
4樓:藏在水中的人
由於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 ;結果一樣
5樓:匿名使用者
微控制器彙編的十進位制調整指令, 是為了讓程式設計簡單化, 可以直接以 十進位制 運算, 如
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
; 注 十進位制調整指令 必須跟在加法指令後面
; 否則會出錯。
6樓:山魚
如果是bcd碼,就必須修正,這樣得到的結果才是bcd碼
7樓:匿名使用者
只有bcd碼相加才用
8樓:筱悠
要具體看程式的要求的,有的程式不是用的bcd碼的話就不用這樣的。。。多看看多想想就清楚了
十進位制調整指令計算
9樓:匿名使用者
執行完aam指令後
ah暫存器的值等於al暫存器的值
除以(/)值0ah
類似c**ah=al/0xa;
al暫存器的值等於al暫存器的值 模除以(%求餘數)值0ahal=al%0xa; 或 ah%=0xa;
執行aam的過程就是上面..
微控制器中十進位制調整指令DAA是什麼意思
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...
十進位制向二進位制進行轉換時,十進位制數十相當於二進位制多少
謝邀,首先你直接把相應的十進位制數寫成與2的多少次方有關的式子,對於10這個數,10 8 2,注意,這裡的8和2都是2的冪次方,所以10 1x2 3 0x2 2 1x2 1 0x2 0,所以10的二進位制數為1010,如果這裡要求二進位制數必須是6位數,則在1010前面加0即可,即001010。對於...
十進位制數和十六進位制數怎麼轉換,十進位制 數字 和十六進位制 字母表示的 如何轉換
16進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方 所以,在第n n從0開始 位上,如果是是數 x x 大於等於0,並且x小於等於 15,即 f 表示的大小為 x 16的n次方。進位制轉換表 例 2af5換算成10進位制 用豎式計算 第0位 5 16 0...