51微控制器影響p標誌位和cy標誌位的指令有哪些

2021-03-03 20:32:59 字數 3625 閱讀 5881

1樓:匿名使用者

影響p標誌位?任何可能影響累加器內容的指令都會影響p標誌位......

影響cy標誌位的指令有

add、addc、anl、cjne、da、div、mul、orl、rlc、rrc、subb。

2樓:匿名使用者

這兩個位只有在特定的情況才會起作用,比如add,8,9就不會影響cy,如果add ff,9,就會有影響,所以弄清楚位的具體含義就可以

51微控制器中的進位標誌位cy的問題。

3樓:匿名使用者

在進行add之前,cy=1,進行add或者addc過程中,最高位加完以後沒有進位,那麼結果是cy繼續保專持屬1還是cy會被置0?

如果運算完後最高位沒有進位,cy會被置0,因為add或者addc命令的執行會影響cy,有進位就置1,無進位就置0,跟cy的初值無關。ac也是一樣,執行完命令後ac的狀態和ac的初值無關。其實與其上來發帖問,不如你自己寫兩行**執行一下,結果一目瞭然,yyh001123的回答是錯誤的。

4樓:匿名使用者

進位標誌,有進位或借位時,cy=1,否則cy=0。

5樓:愛玩的丁當

呵呵,keil c 裡就可以除錯,寫段**,步進跟蹤,監視暫存器,自己實踐出來的結果印象比較深刻

微控制器中的cy和ov要怎樣理解啊,能否舉例子

6樓:在南牆的謊

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位作為最後結果。

7樓:匿名使用者

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。

51微控制器cy位與彙編cf位的區別

8樓:匿名使用者

51微控制器cy位即psw.7,是51微控制器算數運算中的進位借位標誌,根據算數運算結果由系統置位或復位,回也可以程式設計答置位或復位。置位指令為:setb c;復位指令為clr c。

51微控制器中沒有cf位,所以區別是無從說起的。

9樓:尚雲社

51單片進行有符號數的運算時,符號位要反過來判斷,即:cy = 0,表示有借位/進位

微控制器的CY位有什麼作用,微控制器中CY是什麼意思,舉個例子說說

微控制器的 復cy位簡介 微控制器制cy carry 用於表示加bai法進算中du的進位和減法運算中的借位zhi,加法運算中有dao進位或減法運算中有借位則cy位置1,否則為0。cy位是累加器的進位 借位標誌。對於無符號數的運算,cy位就可以表示其是否溢位。但如果是有符號數,則不能按cy標誌來判斷了...

微控制器中psw暫存器標誌位,微控制器中psw暫存器標誌位

ov是溢位位,主要針對有符號數,加減時最高位和次高位中有且僅有一個專產生進位或屬借位,代表結果超出有符號數的範圍,單位元組就是 128 127 cy是進位,主要針對無符號數。代表結果超出無符號數的範圍,單位元組就是0 255 89c51微控制器的psw暫存器各位標誌的意義是什麼?單片來機內部的特殊寄...

51微控制器P2口作為高8位地P0口分時作為低8位地址線和雙向

相同點 既可以作為通用i o口進行資料輸入輸出,也可以作為微控制器地址資料線使用內。不同點 p0口作為i o輸出時容,是漏極開路電路,必須外接上拉電阻才能有高電平輸出,而p2口內部本來就有上拉電阻,不需要再接上拉電阻。p1口為準雙向口,作用輸入。p2口也為準雙向口,但是可以作為擴充套件系統的地址a1...