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時,再去呼叫一下...