組合語言中為什麼要有十進位制調整指令,原因是什麼

2021-03-19 18:20:12 字數 1846 閱讀 6496

1樓:做而論道

cpu 的運算指令,是按照二進位制數進行計算的。

參加運算數字,如果,你用的是 bcd 碼,那麼,運算結果,也就變成了一般的二進位制數。

難道,你不想把它們,再變成 bcd 碼?

十進位制調整指令計算

2樓:匿名使用者

執行完aam指令後

ah暫存器的值等於al暫存器的值

除以(/)值0ah

類似c**ah=al/0xa;

al暫存器的值等於al暫存器的值 模除以(%求餘數)值0ahal=al%0xa; 或 ah%=0xa;

執行aam的過程就是上面..

1、8086的十進位制調整指令為何沒有乘除運算?

3樓:匿名使用者

1、壓縮bcd數按二進位制數進行乘除運算後,再調整為bcd數無簡單規律可循。

2、ascii碼的乘除運算指令的範圍不超過兩位的10進位制數。

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

4樓:做而論道

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

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

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

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

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

5樓:藏在水中的人

由於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 ;結果一樣

6樓:匿名使用者

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

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

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

; 否則會出錯。

7樓:山魚

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

8樓:匿名使用者

只有bcd碼相加才用

9樓:筱悠

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

組合語言在al中裝無符號數用十進位制顯示

可見 mov al,max mov ah,0 mov bl,100 div bl mov dl,al add dl,0 push ax mov ah,02h 顯示百位 int 21h pop ax mov al,ah mov ah,0 mov bl,10 div bl mov dl,al add d...

如何使用組合語言實現多位十進位制數相加

多少位十進位制數相加?用組合語言 編一程式把鍵入的十六進位制數轉化 成十進位制數。50 用組合語言如何實現 3個 16位二進位制數相加 你這是兩個三位元組的二進位制數,即24位的二進位制數,不叫3個16位二進位制數,只是兩個數相加。你的程式這麼寫,每一個數是先存放高位,後放低位。如被加數放20h,先...

c語言的二進位制,八進位制,十進位制是什麼意思

在c語言裡,資料可以表示為 十進位制,八進位制,二進位制。其中以數字0開頭,由0 7組成的數是八進位制。以0x或0x開頭,由0 9,a f或a f 組成是十六進位制。除表示正負的符號外,由0 1組成是二進位制。1.十進位制 除表示正負的符號外,以1 9開頭,由0 9組成。如,128,234,278。...