1樓:胖大海君
微控制器中用到帶借位的減法是為了進行多位元組的減法運算,在進行高位位元組運算時,要同時減去低位位元組的借位,以得到正確的結果。
如果cy=1,subb #09h,#05h 結果是03h 不是很正確噢
首先你的指令是非法指令,計算機、微控制器中的立即數是不能做目的運算元的,目的運算元是要儲存結果的,而立即數是不能儲存結果的。
要想完成你的運算想法,應該寫成如下形式:
mov a,#9
setb c
subb a,#5
即執行後: (a)-5-cy=9-5-1=3
結果為03h是正確的。
在進行最低位元組的減法運算時,即剛開始做減法,還沒有產生借位,應在運算前使cy=0
即 clr c
mov a,#data1
subb a,#data2
執行時, (a)-data2-cy=data1-data2-0
呵呵 滿意 就選滿意回答
2樓:匿名使用者
cy=1,subb #09h,#05h,相當於256+9-5=260,其實也就是4
3樓:匿名使用者
這個借位一般是多位元組計算使用的,單位元組最好先清掉cy。
51微控制器彙編中subb帶借位指令的意思
4樓:津人依夢聊理財
51微控制器彙編中subb帶借位指令的格式是:subb a, r(運算元),意思是累加器中的數減去源運算元所指出的數和進位位cy,其差值存放在累加器a中。運算結果影響psw(程式狀態標誌暫存器)。
在多位元組減法運算中,低位元組被減數有時會向高位產生借位,此時cy(進位標誌)置一,所以在此必須使用帶借位減法指令。需要注意的是,進行單位元組減法或多位元組低8位減法運算時,應先把進位位清零。在80c51指令系統中沒有不帶借位的減法指令。
例如: subb 49h,58h;49h-58h,在這裡是49h是被減數,帶借位。
實際上減法運算在計算機中是補碼相加。
擴充套件資料
組合語言指令系統執行計算和控制過程:
微控制器的幾個主要組成部分,構成了微控制器的硬體。所謂硬體(hardware),就是看得到,摸得到的實體。但是,光有這樣的硬體,還只是有了實現計算和控制功能的可能性。
微控制器要真正地能進行計算和控制,還必須有軟體(software)的配合。軟體主要指的是各種程式。只有將各種正確的程式「灌入」(存入)微控制器,它才能有效地工作。
微控制器所以能自動地進行運算和控制,正是由於人把實現計算和控制的步驟一步步地用命令的形式,即一條條指令(instruction)預先存入到存貯器中,微控制器在cpu的控制下,將指令一條條地取出來,並加以翻譯和執行。就以兩個數相加這一簡單的運算來說,當需要運算的數已存入存貯器後,還需要進行以下幾步:
第一步:把第一個數從它的存貯單元(location)中取出來,送至運算器。
第二步:把第二個數從它所在的存貯單元中取出來,送至運算器;
第三步:相加;
第四步:把相加完的結果,送至存貯器中指定的單元。
5樓:胖大海君
例如: mov a, #49hsubb a, #58h
實現的功能是 49h-58h-cy 就是在完成49h 和 58h相減後 還要再減去借位標誌cy
要想進行不帶借位的減法,可以先對借位標誌清零。
例如: clr c
mov a, #49h
subb a, #58h
呵呵 滿意的話 就請選滿意回答哦
6樓:做而論道
學習減法指令之前,應該先學習加法指令。
加法指令,有《不帶進位的加法》,以及《帶進位的加法》。
初學時學這個,比較容易理解。
之後再學減法,就不會有樓主這樣的問題了。
如果先學減法,就有種突如其來的感覺。
彙編中,帶借位減法指令sub與不帶借位減法指令sbb的區別在**?什麼時候用哪種指令?祥細
7樓:匿名使用者
sub ax,bx 的結果抄
是 ax-bx
sbb ax,bx 的結果是 ax-bx-cf(進/借位標誌襲)用例:將baidx:ax中存放的32位無du符號數減去zhibx內的16位無符號數sub ax,bx ;結果的dao低16位,如果ax小於bx將產生借位,導致cf=1
sbb dx,0 ;高16位-cf,若前一步出現借位,則據此調整高16位的內容
關於微控制器彙編的十進位制調整指令,微控制器組合語言十進位制調整da
是不是做加法,凡是遇到上述情況都得修正?是bcd碼的加法,就必須修正。那為什麼我看到的某些加法運算沒有修正啊?那就不是bcd碼的加法。一般時,是用四位二進位制數,表示一位16進位制數 0 16 即0000 1111。bcd碼,是用四位二進位制數,表示一位十進位制數 0 9 即0000 1001。如果...
微控制器組合語言的程式設計問題
首先教你如何理解jnb和jb,jnb就是jump not bit,這樣不好理解,解釋一下就明白了 jump表示跳轉,not表示0,bit表示該位。它實際是條件判斷語句,意思是 如果該為為0則跳轉,否則繼續下一條。例 jnb p1.1,mark 如果p1.1位為零則跳轉到mark標誌指向的指令,否則繼...
微控制器組合語言指令中中斷返回指令RET和RETI有什麼不同
ret是子程式返bai回指令,返 du回到呼叫該子程式處zhi的下一條指令執dao行,返回的地址是從專ret執行前的sp中最屬後兩個值。reti是中斷服務程式返回指令,返回到進入中斷服務的斷點處執行,返回的地址是從reti執行前的sp中最後兩個值。ret是普通子程式的返回指令,而不能用reti,所以...