1. 在80C51單片機裡面,半進位標志位AC在加減運算裡面是按照有符號數還是無符號數來設置標志位
一、加法指令
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。
2. 單片機電路板上ACLED含義是什麼
這個指示燈代表:單片機正常工作,沒有死機,如果亮了代表單片機程序正常。
3. 單片機中A與Acc有什麼區別
累加器A與ACC區別
累加器寫成A或ACC在51匯編語言指令中是有區別的。
ACC在匯編後的機器碼必有一個位元組的操作數,是累加器的位元組地址E0H,A在匯編後則隱含在指令操作碼中。
所以在指令中A不能用ACC來替代,而對A的特殊功能寄存器直接定址和累加器某一位的定址要用ACC,而不能寫成A。
例如,指令INCA的機器碼是04H,屬於寄存器定址,寫成ACC後則成了INCDIRECT的格式,對應機器碼為05E0H。
A和ACC都表示累加器,但A是累加器的代號,在指令中默認是無地址的,而ACC是累加器在中的直接地址(OEH),可出現在用直接定址的任何地方,例如:
PUSHACC
POPACC
類似:工作寄存器R0~R7在指令中也有兩種不同的寫法,生成的機器碼也不同,如:
MOV40H,R0,
MOV40H,00H
假設當前工作寄存器為0組,前者屬於寄存器定址,後者屬於存儲器直接定址。但R0和00H的級別不同,00H只是RAM區的一個普通單元,其讀寫速度要比慢得多。微型計算機內部通常設置工作寄存器組,運算的結果可以放在寄存器中而不必每次都放到存儲器里,可以提高機器的工作速度。其實寄存器也是一種存儲器,只不過它是CPU中的部件,速度最快而已。
寄存器和一般的存儲器是混疊的,同一單元用不同的指令,它就會執行不同的功能。
一般的說法:A表示了累加器中的內容【寄存器定址】;ACC表示了累加器的地址【直接定址】。
A和ACC的實質是一樣的,對應地址都是0E0H,只是匯編在使用時,在格式上取了兩個名字。使用有一定的規律:
當其要進行位表示時,必須用ACC,比如要寫成ACC.7,而不能寫成A.7;
但當其作為8位二進制數時,ACC和A都能用,但還是有區別:比如INCACC和INCA都能用,還有PUSHACC,POPACC不可以寫成PUSHA和POPA
在KeilC中用了這樣一個命令:PUSHA,匯編時提示錯誤,後來我把PUSHA改為PUSHACC就可以通過了,請問這是什麼回事?A與ACC是同一個寄存器嗎?
所謂「A」是相關指令對累加器A的預設指定(不佔操作數指令),而PUSH和POP沒有預設指定累加器,要訪問累加器就必須採用其所允許的直接定址方式,「ACC」就是累加器A的地址。PUSH是直接定址,後面一定跟的是直接地址。你可以看到reg51.h中ACC的直接地址是0xe0;也可以PUSHE0h;累加器有A、ACC和E0H三種表示形式,分屬兩種不同的定址方法,使用A時,為寄存器定址,指令碼為04H,使用ACC和E0H時,為直接定址,指令碼為05E0H。可A的位7,為什麼非得用ACC.7而不用A.7。這與位定址有關系,位地址有四種:直接位地址;位元組地址加位序號;位名稱;特殊寄存器加位序號。
為什麼pushacc必須用acc,而不能用a,相反movx@dptr,a只能用a,而不能用ac?acc和a有什麼區別?ACCisregister。Aisaunseparatablepartofopcode。
在mov指令中可通用,用"a"時為2位元組1周期;用"acc"時為3位元組2周期。
盡管物理地址相同,但push是對寄存器操作,而movx是對累加器操作。
匯編結果:"inca"為"04h"運行時間1周期;"incacc"為"05h,e0h"運行時間2周期。
通俗的解釋為:acc是地址為E0H的寄存器,A是標準的無地址的累加器,自然後者便捷,但兩者在值上互為鏡像
4. 單片機中,cy ac ov有什麼用 我知道他們是來表示借位和溢出的,可是表示出來了又有什麼用呢
兩個數相加減,就可能產生進位或者借位,這樣可用於比較兩個數的大小;
想了解這些標記位,最好結合編程語言來學習
5. 電流里AC和DC分別代表什麼
AC 是英文Alternating Current 的首字母縮寫,意為:交流電流,簡稱交流電 或交流。
DC 是英文Direct Current 的首字母縮寫,意為:直流電流,簡稱直流電 或直流。
電流分為交流電流和直流電流。
交流電:插電源的用電器使用的是交流電
直流電:使用外置電源的用電器用的是直流電
交流電一般是在家庭電路中有著廣泛的使用,有220V的電壓,屬於危險電壓。
直流電則一般被廣泛使用於手機(鋰電池)之中。像電池(1.5V),鋰電池,蓄電池等被稱之為直流電。
物理上規定電流的方向,是正電荷定向移動的方向。電流運動方向與電子運動方向相反。
電荷指的是自由電荷,在金屬導體中的自由電荷又叫自由離子,在酸,鹼,鹽的水溶液中是正離子和負離子。
在電源外部電流沿著正電荷移動的方向流動。在電源內部由負極流回正極。
(5)單片機ac擴展閱讀
安培(André-Marie Ampère 1775~1836年),法國物理學家,對數學和化學也有貢獻。1775年1月22日生於里昂一個富商家庭。年少時就顯出數學才能。他的父親信奉J.J.盧梭的教育思想,供給他大量圖書,令其走自學的道路,於是他博覽群書,吸取營養;盧梭關於植物學的著作燃起了他對科學的熱情。
安培小時候記憶力極強,數學才能出眾。他父親受盧梭(1712-1778)的教育思想的影響很深,決定讓安培自學,經常帶他到圖書館看書。安培自學了《科學史》、《網路全書》等著作。他對數學最著迷,13歲就發表第一篇數學論文,論述了螺旋線。
1799年安培在里昂的一所中學教數學。1802年二月安培離開里昂去布爾格學院講授物理學和化學,四月他發表一篇論述賭博的數學理論,顯露出極好的數學根底,引起了社會上的注意。後來應聘在拿破崙創建的法國公學任職。
1808年安培任法國帝國大學總學監,1809年任巴黎工業大學數學教授。1814年當選為法國科學院院士。1824年任法蘭西學院實驗物理學教授。1827年當選為英國倫敦皇家學會會員。他還是柏林、斯德哥爾摩等科學院的院士。
6. mcs-51系列單片機psw的輔助進位ac
在做加法運算時,若低半位元組有進位,則ac=1,否則ac=0.
低半位元組大概是指一個位元組8位的低4位,也就是後面的低4位。
那麼如果00001000+00001000,c=0,ac=1,ov=1,發生溢出,也就是說整體沒溢出,但是低4位有溢位所以ac=1 因為ac=1 所以OV=1
7. 在51單片機中,A和ACC的具體的關系是什麼呢
累加器A與ACC區別
累加器寫成A或ACC在51匯編語言指令中是有區別的。
ACC在匯編後的機器碼必有一個位元組的操作數,是累加器的位元組地址E0H,A在匯編後則隱含在指令操作碼中。
所以在指令中A不能用ACC來替代,而對A的特殊功能寄存器直接定址和累加器某一位的定址要用ACC,而不能寫成A。
例如,指令INCA的機器碼是04H,屬於寄存器定址,寫成ACC後則成了INCDIRECT的格式,對應機器碼為05E0H。
A和ACC都表示累加器,但A是累加器的代號,在指令中默認是無地址的,而ACC是累加器在中的直接地址(OEH),可出現在用直接定址的任何地方,例如:
PUSHACC POPACC
類似:工作寄存器R0~R7在指令中也有兩種不同的寫法,生成的機器碼也不同,如:
MOV40H,R0,
MOV40H,00H
假設當前工作寄存器為0組,前者屬於寄存器定址,後者屬於存儲器直接定址。但R0和00H的級別不同,00H只是RAM區的一個普通單元,其讀寫速度要比慢得多。微型計算機內部通常設置工作寄存器組,運算的結果可以放在寄存器中而不必每次都放到存儲器里,可以提高機器的工作速度。其實寄存器也是一種存儲器,只不過它是CPU中的部件,速度最快而已。
寄存器和一般的存儲器是混疊的,同一單元用不同的指令,它就會執行不同的功能。
一般的說法:A表示了累加器中的內容【寄存器定址】;ACC表示了累加器的地址【直接定址】。
A和ACC的實質是一樣的,對應地址都是0E0H,只是匯編在使用時,在格式上取了兩個名字。使用有一定的規律:
當其要進行位表示時,必須用ACC,比如要寫成ACC.7,而不能寫成A.7;
但當其作為8位二進制數時,ACC和A都能用,但還是有區別:比如INCACC和INCA都能用,還有PUSHACC,POPACC不可以寫成PUSHA和POPA
在KeilC中用了這樣一個命令:PUSHA,匯編時提示錯誤,後來我把PUSHA改為PUSHACC就可以通過了,請問這是什麼回事?A與ACC是同一個寄存器嗎?
所謂「A」是相關指令對累加器A的預設指定(不佔操作數指令),而PUSH和POP沒有預設指定累加器,要訪問累加器就必須採用其所允許的直接定址方式,「ACC」就是累加器A的地址。PUSH是直接定址,後面一定跟的是直接地址。你可以看到reg51.h中ACC的直接地址是0xe0;也可以PUSHE0h;累加器有A、ACC和E0H三種表示形式,分屬兩種不同的定址方法,使用A時,為寄存器定址,指令碼為04H,使用ACC和E0H時,為直接定址,指令碼為05E0H。可A的位7,為什麼非得用ACC.7而不用A.7。這與位定址有關系,位地址有四種:直接位地址;位元組地址加位序號;位名稱;特殊寄存器加位序號。
為什麼pushacc必須用acc,而不能用a,相反movx@dptr,a只能用a,而不能用ac?acc和a有什麼區別?ACCisregister。Aisaunseparatablepartofopcode。
在mov指令中可通用,用"a"時為2位元組1周期;用"acc"時為3位元組2周期。
盡管物理地址相同,但push是對寄存器操作,而movx是對累加器操作。
匯編結果:"inca"為"04h"運行時間1周期;"incacc"為"05h,e0h"運行時間2周期。
通俗的解釋為:acc是地址為E0H的寄存器,A是標準的無地址的累加器,自然後者便捷,但兩者在值上互為鏡像
8. 51單片機如何判斷ac dc
單片機是認不了這些東西,它只認得數字信號,對於AC,DC這些東西,你需要另外加電路轉換的,再告訴單片機
9. 單片機匯編語言中 CY AC OV 分別是什麼意思
單片機匯編語言中
CY(PSW.7)是進位或借位,來源於最近一次算術指令或邏輯指令執行結果。
AC(PSW.6)是輔助進位或輔助借位,用於BCD碼的十進制調整運算。
OV(PSW.2)是溢出位。在執行算術指令時,指示運算是否產生溢出。
10. 單片機中乘法指令影響ac嗎
不影響,隻影響OV和C。