51微控制器兩個雙位元組無符號數的加法

2021-03-11 07:22:14 字數 1169 閱讀 7245

1樓:王永建_西安

add a,#data ;例:add a,#10h

add a,direct ;例:add a,10h

add a,rn ;例:add a,r7

add a,@ri ;例:add a,@r0

用途:將a中的值與其後面的值相加,最終結果否是回到a中。

例:mov a,#30h

add a,#10h

帶進位位的加法指令

addc a,rn

addc a,direct

addc a,@ri

addc a,#data

用途:將a中的值和其後面的值相加,並且加上進位位c中的值。

由於51微控制器是一種8位機,所以只能做8位的數**算,但8位運算的範圍只有0-255,這在實際工作中是不夠的,因此就要進行擴充套件,一般是將2個8位的數**算合起來,成為一個16位的運算,這樣,能表達的數的範圍就能達到0-65535

如何合併呢?其實很簡單,讓我們看一個10進位制數的例程:

66+78。

這兩個數相加,我們根本不在意這的過程,但事實上我們是這樣做的:先做6+8(低位),然後再做6+7,這是高位。做了兩次加法,只是我們做的時候並沒有刻意分成兩次加法來做罷了,或者說我們並沒有意識到我們做了兩次加法。

之所以要分成兩次來做,是因為這兩個數超過了一位數所能表達的範置(0-9)。

在做低位時產生了進位,我們做的時候是在適當的位置點一下,然後在做高位加法是將這一點加進去。那麼計算機中做16位加法時同樣如此,先做低8位的,如果兩數相加產生了進位,也要「點一下」做個標記,這個標記就是進位位c,在psw中。在進行高位加法是將這個c加進去。

例:1067h+10a0h,先做67h+a0h=107h,而107h顯然超過了0ffh,因此最終儲存在a中的是7,而1則到了psw中的cy位了,換言之,cy就相當於是100h。然後再做10h+10h+cy,結果是21h,所以最終的結果是2107h。

至於資料如何定義到你要的位置,這個問題不用我教你了吧!!!

2樓:做而論道

mov a, 60h

add a, 50h

mov 60h, a

mov a, 61h

addc a, 51h

mov 61h, a

mov 10h, cend

51微控制器(彙編)怎麼實現雙位元組除以單位元組的除法運算,求程式

jtya0 equ 50h jtya1 equ 51h jtya2 equ 52h jtya3 equ 53h jtya4 equ 54h jtya5 equ 55h jtya6 equ 56h jtya7 equ 57h 2 1 2位元組除法 jtya5 jtya4 jtya3 jtya1 jty...

微控制器中把兩個16位無符號單位元組數求和相加,設計程式

啥微控制器?如果不考慮負數,那麼 32位cpu的,直接加,16位的直接加,但要判斷最高位是否溢位,8位的,低8位先加,再高8位相加,同時加上低8位的進位,再判定最高位是否溢位。以上供參考。r2r3 r4r5 r1r2r3 add16 mov r1,0 mov a,r3 add a,r5 mov r3...

怎樣51微控制器呼叫兩個子程式,怎樣51微控制器呼叫兩個子程式

mov r0,08h mov a,0feh loop mov p1,a lcall del rr a djnz r0,loop 使用djnz 指令。為0執行下一指令,不為0跳轉。就可以呼叫內兩個容子程式了 估計是進入到倒計時程式,一直沒有出來。主程式直接呼叫洗滌程式。定時器,每到1s時,再去呼叫一下...