1樓:之何勿思
subb指令是減法指令。
在進行多位元組相減的時候,前一位元組相減出現的借位,要減到後一位元組裡面, cy就是上次相減時的借位。
帶cy位減法指令,ov位是在兩個符號數相加、減時產生:
正數+正數=負數;
正數-負數=負數;
負數-正數=正數;
負數+負數=正數;
這幾種情況會導致ov位置1。
2樓:匿名使用者
subb指令是減法指令。cy就是上次相減時的借位。
mcs-51共111條指令,
指令分類
1、按指令所佔的位元組來分:
單位元組指令(49條) 如mov a,r2,機器碼11101010雙位元組指令(46條) 如mov a,0bh,機器碼74h,0bh三位元組指令(16條) 如mov 0bh, #0bh ,機器碼75h,0bh,0bh
2、按指令的執行時間來分:(1個機器週期為12個時鐘週期)1個機器週期(64條) ,如mov a,r2 mov a,#0bh,2個機器週期(45條) ,如mov 0bh, #0bh4個機器週期(2條) ,乘、除指令。
擴充套件資料:格式:mov或movx或movc 《目的運算元》,《源運算元》
將源運算元複製給目的運算元,源運算元不變,而不是“搬家”。資料傳送類指令不影響標誌位cy、ac和ov,影響奇偶標誌位p。
1、以累加器為目的運算元的指令
mov a, rn ; (rn)→a,n=0~7mov a, @ri ; ((ri))→a,i=0,1mov a, direct ;(direct)→amov a, #data ; #data→a2、以rn為目的運算元的指令
mov rn, a ; (a)→rn, n=0~7mov rn, direct ;(direct)→rn, n=0~7mov rn, #data ; #data→rn, n=0~73、以直接地址direct為目的運算元的指令mov direct, a ; (a)→directmov direct, rn ;(rn)→direct, n=0~7mov direct1, direct2;
mov direct, @ri ;((ri))→directmov direct, #data ; #data→direct注意:暫存器之間不可相互傳送資料;
直接地址之間可相互傳送資料。
3樓:匿名使用者
cy 是進位位,要看你程式需不需要保留啊 。
subb是減法 指令。
微控制器中的cy和ov要怎樣理解啊,能否舉例子
4樓:在南牆的謊
cy(carry): 用於表示加法進算中的進位和減法運算中的借位,加法運算中有進位或減法運算中有借位則cy位置1,否則為0
ov: 表示運算過程中是否發生了溢位,若運算結果超過了8位二進位制數所能表示資料的範圍即有符號數-128~+127,則標誌位置1。
對無符號數的運算,判斷只需cy即可,ov無作用。
對有符號數的運算,ov位是有用的。“ov位是c6位進位與c7位進位的異或”,說法對的(對51微控制器而言),但不同的計算機說法不一
cy位是累加器的進位、借位標誌。下文的敘述按16位機來舉例說明,如果是8位機或其它字長,則可換一個例子,但道理相似。
對於無符號數的運算,cy位就可以表示其是否溢位。但如果是有符號數,則不能按cy標誌來判斷了。為此,設了另一個標誌ov,其含義就是“假如是有符號數運算,是否出現了溢位”。
例如對於16位運算器,65534 + 3,(即二進位制的1111111111111110 + 0000000000000011),
本該得65537,(即二進位制的10000000000000001),但因為暫存器只有16位,最高位的那個1丟掉了(進入了cy標誌)。結果暫存器中只剩下了1,(即二進位制的0000000000000001)。
此時,我們可以說,16位的無符號數加法,65534+3溢位了,溢位後的答案成了1。
但是對於有符號整數,情況就不同了。有符號整數採用補碼錶示法。16位有符號整數不可能表示65534,此時如果機內二進位制是1111111111111110,程式中認為它是-2,故:
機內的二進位制的1111111111111110 + 0000000000000011,代表的是(-2) + 3。
請注意,此時的(-2)+3和上文的無符號數65534+3,在cpu的運算器硬體上完全相同,都是得到和為1,而cy標誌也為1。
但是,有符號數(-2)+3=1並無溢位。故此時的cy標誌不能代表它溢位了。
另外再舉一例:
無符號數32763 + 8 = 32771,沒有進位,cy標誌為0。此時並不溢位。
但是,如果是有符號數32763 + 8,這就是溢位了,因為32773的二進位制為1000000000000011,作為有符號數會被看成負數-32765。16位有符號數不可能表示32773的。
不管是有符號數還是無符號數,cpu的二進位制運算器機器加、減操作是一樣的,但其“溢位”的條件不同。
現在大多數的計算機中,如果是無符號數,都可以用cy標誌來判斷其是否溢位;而如果是有符號數,則需要用ov標誌來判斷其是否溢位。
至於ov標誌在邏輯上又是根據什麼產生的呢?則不同的計算機上有不同的實現方法,但效果都是一樣。
這裡介紹一種道理比較容易懂的方法:“雙符號位法”。具體是:
作加、減法前,先將兩個運算數都按照有符號數的規則擴充成17位。即:符號位是0的前面添一位0,符號位是1的前面添一位1。
然後按17位的機器加、減,得出17位的結果。
如果17位結果的高兩位(即雙符號位)不同,就置ov標誌為1,否則,ov標誌為零。
然後取其低16位作為最後結果。
5樓:匿名使用者
51微控制器中的進位標誌位cy,在進行add之前,cy=1,進行add或者addc過程中,最高位加完以後沒有進位,那麼結果是cy繼續保持1還是cy會被置0?
如果運算完後最高位沒有進位,cy會被置0,因為add或者addc命令的執行會影響cy,有進位就置1,無進位就置0,跟cy的初值無關。
一、加法指令
1、不帶進位加法指令
工作暫存器、內部ram單元內容或立即數的8位無符號二進位制數和累加器a中數相加,所得和存放於累加器a中,當和的第3、7位有進位時,分別將ac,cy標誌位置1;否則為0。 上述指令的執行將影響標誌位ac、cy、ov、p。
對於無符號數,進位標誌位cy=1,表示溢位;cy=0表示無溢位。帶符號數運算的溢位取決於第6、7位中有一位產生進位,而另一位不產生進位,溢位標誌位ov置“1”否則被清“0”。ov=1表示兩個正數相加,和變為負數,或兩個負數相加,和變為正數的錯誤結果。
2、帶進位加法指令
將累加器a內容加當前cy標誌位內容,再加無符號單位元組的數,和存於累加器a中。當運算結果第3、7位產生進位溢位時,則分別置位ac、cy和ov標誌位。本指令執行將影響標誌位ac、cy、ov、p。
二、減法指令
1、帶借位減法指令
帶借位減法指令subb,從累加器a中減去進位標誌位cy和指定的變數,結果在累加器a中,若第七位有借位,則置位位cy,否則cy清0。若第3位有錯位,則置位輔助進位標誌ac,否則清0 ac。若第7和第6位中有一位需借位,而另一位不借位,則置位溢位標誌ov。
溢位位ov用於帶符號的整數減法,它表示(ov=1)一個正數減負數結果為負數;或一個負數減正數結果為正數的錯誤結果。
三、乘法指令
本指令將累加器a和暫存器b中二個8位無符號整數進行相乘,16位乘積的低8位存於a中,高8位存於b中,如果乘積大於255(0ffh),即b的內容不為0時,則置位溢位標誌位ov,否則清“0”ov。進位標誌位cy總是清“0”。
四、除法指令
本指令將累加器a中8位無符號整數除以b暫存器中8位無符號整數,所得結果商的整數部分存於a中,整數作數部分存於暫存器b中。清“0”cy和ov標誌位。當除數(b中內容)為00h時,則執行結果將為不定值,即執行結果送往a和b中的為不定值,且置位溢位標誌位ov。
在任何情況下,均清“0”cy。
微控制器的cy位有什麼作用
6樓:南霸天
微控制器的
復cy位簡介:
微控制器制cy(carry): 用於表示加bai法進算中du的進位和減法運算中的借位zhi,加法運算中有dao進位或減法運算中有借位則cy位置1,否則為0。cy位是累加器的進位、借位標誌。
對於無符號數的運算,cy位就可以表示其是否溢位。但如果是有符號數,則不能按cy標誌來判斷了。
7樓:匿名使用者
進位位,有時也可用來判斷是否進位來決定程式流向,或在串入的晶片中移位到進位位,得到資料。
8樓:凌瓏井
進行加法運算時,當最高位b7位有進位,或執行減法運算最高位有借位時,cy為1,否則為0
9樓:sky淺唱
是進位標誌,相當於左移
51微控制器彙編中subb帶借位指令的意思
10樓:津人依夢聊理財
51微控制器彙編中subb帶借位指令的格式是:subb a, r(運算元),意思是累加器中的數減去源運算元所指出的數和進位位cy,其差值存放在累加器a中。運算結果影響psw(程式狀態標誌暫存器)。
在多位元組減法運算中,低位元組被減數有時會向高位產生借位,此時cy(進位標誌)置一,所以在此必須使用帶借位減法指令。需要注意的是,進行單位元組減法或多位元組低8位減法運算時,應先把進位位清零。在80c51指令系統中沒有不帶借位的減法指令。
例如: subb 49h,58h;49h-58h,在這裡是49h是被減數,帶借位。
實際上減法運算在計算機中是補碼相加。
擴充套件資料
組合語言指令系統執行計算和控制過程:
微控制器的幾個主要組成部分,構成了微控制器的硬體。所謂硬體(hardware),就是看得到,摸得到的實體。但是,光有這樣的硬體,還只是有了實現計算和控制功能的可能性。
微控制器要真正地能進行計算和控制,還必須有軟體(software)的配合。軟體主要指的是各種程式。只有將各種正確的程式“灌入”(存入)微控制器,它才能有效地工作。
微控制器所以能自動地進行運算和控制,正是由於人把實現計算和控制的步驟一步步地用命令的形式,即一條條指令(instruction)預先存入到存貯器中,微控制器在cpu的控制下,將指令一條條地取出來,並加以翻譯和執行。就以兩個數相加這一簡單的運算來說,當需要運算的數已存入存貯器後,還需要進行以下幾步:
第一步:把第一個數從它的存貯單元(location)中取出來,送至運算器。
第二步:把第二個數從它所在的存貯單元中取出來,送至運算器;
第三步:相加;
第四步:把相加完的結果,送至存貯器中指定的單元。
微控制器有哪些工作,學會51微控制器能做什麼工作?
微控制器 設計電路和編寫 這樣找工作會好找一點,工資金會高一些。有些專門搞 待遇次之 有些專門優生硬體電路,待遇一般。其實你做通訊比做微控制器好,現在做微控制器太多了!現在的電子開發,都會涉及到微控制器。微控制器的應用是非常廣泛的。現在的單片開發是arm32 實時作業系統。想要學微控制器的話,沒必要...
微控制器IO用什麼MOS管可以驅動24V繼電器
用三極體多方便,非要用mos也行。繼電器的電流應該不大,耐壓24v以上 電流超過1a的基本都可以用。我沒用過電流這麼小的mos,不了解具體型號。首先看mos管耐壓,再看驅動開通電壓 8050都夠了,要不就是 d882用不著場管 一片2003解決,便宜穩定 驅動24v繼電器常用什麼三極體 除了耐壓必須...
GPIO是什麼,和微控制器ARM上的引腳有什麼區別
gpio這個問題很多人都混淆。本身的概念 gpio是general purpose input output。到了微控制器上,微控制器有很多管腳 pin pin除了一些特殊的,比如電源,比如地線,晶振接線等等,很多都可以任意定義成兩種功能中的一種 1.模組的管腳,2.gpio 當定義為模組管腳時,p...