微控制器subb指令有什麼用,減去cy有什麼意義

時間 2021-08-13 16:49:32

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)中取出來,送至運算器。

第二步:把第二個數從它所在的存貯單元中取出來,送至運算器;

第三步:相加;

第四步:把相加完的結果,送至存貯器中指定的單元。

微控制器指令jnb字母各代表什麼意思

墨汁諾 jnb就是後邊的位操作碼為0則跳轉到指定的行地址。這是彙編指令,應該是jnb swloop,next是jnb就應該有逗號,而且逗號後還有標號,而swloop是引腳,指令意思為 swloop腳為低電平則轉到標號next處,否則繼續向下執行。如果swloop是標號,那應該是jnc swloop這...

eda技術與微控制器有什麼區別,pic微控制器與51微控制器有什麼區別?

士飛薇武鈞 eda是電子設計自動化。一般大學的eda課講的都是fpga,有的略帶cpld。fpga是現場可程式設計門陣列,是一種可程式設計的晶片 你把它編成微控制器那它就是微控制器 你編成其他的它就是其他的 設計fpga要用eda 電子設計自動化 輔助工具,說白了,這些工具就是晶片開發廠商提供的開發...

mcs51微控制器的偽指令有哪些,MCS51微控制器的偽指令有哪些?

雨人吉他 1 資料傳送類指令 助記符 功能說明 位元組數 振盪週期 mov a,rn 暫存器內容送入累加器 1 12 mov a,direct 直接地址單元中的資料送入累加器 2 12 mov a,ri 間接ram中的資料送入累加器 1 12 mov a,data8 8位立即數送入累加器 2 12 ...