導航:首頁 > 操作系統 > 單片機中a

單片機中a

發布時間:2022-02-15 09:43:53

⑴ 在51單片機中,A和ACC的具體的關系是什麼呢

  1. 累加器A與ACC區別

  2. 累加器寫成A或ACC在51匯編語言指令中是有區別的。

  3. ACC在匯編後的機器碼必有一個位元組的操作數,是累加器的位元組地址E0H,A在匯編後則隱含在指令操作碼中。

  4. 所以在指令中A不能用ACC來替代,而對A的特殊功能寄存器直接定址和累加器某一位的定址要用ACC,而不能寫成A。

  5. 例如,指令INCA的機器碼是04H,屬於寄存器定址,寫成ACC後則成了INCDIRECT的格式,對應機器碼為05E0H。

  6. A和ACC都表示累加器,但A是累加器的代號,在指令中默認是無地址的,而ACC是累加器在中的直接地址(OEH),可出現在用直接定址的任何地方,例如:

    PUSHACC POPACC

  7. 類似:工作寄存器R0~R7在指令中也有兩種不同的寫法,生成的機器碼也不同,如:

  8. MOV40H,R0,

  9. MOV40H,00H

  10. 假設當前工作寄存器為0組,前者屬於寄存器定址,後者屬於存儲器直接定址。但R0和00H的級別不同,00H只是RAM區的一個普通單元,其讀寫速度要比慢得多。微型計算機內部通常設置工作寄存器組,運算的結果可以放在寄存器中而不必每次都放到存儲器里,可以提高機器的工作速度。其實寄存器也是一種存儲器,只不過它是CPU中的部件,速度最快而已。

  11. 寄存器和一般的存儲器是混疊的,同一單元用不同的指令,它就會執行不同的功能。

  12. 一般的說法:A表示了累加器中的內容【寄存器定址】;ACC表示了累加器的地址【直接定址】。

  13. A和ACC的實質是一樣的,對應地址都是0E0H,只是匯編在使用時,在格式上取了兩個名字。使用有一定的規律:

  14. 當其要進行位表示時,必須用ACC,比如要寫成ACC.7,而不能寫成A.7;

  15. 但當其作為8位二進制數時,ACC和A都能用,但還是有區別:比如INCACC和INCA都能用,還有PUSHACC,POPACC不可以寫成PUSHA和POPA

  16. 在KeilC中用了這樣一個命令:PUSHA,匯編時提示錯誤,後來我把PUSHA改為PUSHACC就可以通過了,請問這是什麼回事?A與ACC是同一個寄存器嗎?

  17. 所謂「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。這與位定址有關系,位地址有四種:直接位地址;位元組地址加位序號;位名稱;特殊寄存器加位序號。

  18. 為什麼pushacc必須用acc,而不能用a,相反movx@dptr,a只能用a,而不能用ac?acc和a有什麼區別?ACCisregister。Aisaunseparatablepartofopcode。

  19. 在mov指令中可通用,用"a"時為2位元組1周期;用"acc"時為3位元組2周期。

  20. 盡管物理地址相同,但push是對寄存器操作,而movx是對累加器操作。

  21. 匯編結果:"inca"為"04h"運行時間1周期;"incacc"為"05h,e0h"運行時間2周期。

  22. 通俗的解釋為:acc是地址為E0H的寄存器,A是標準的無地址的累加器,自然後者便捷,但兩者在值上互為鏡像

⑵ 單片機匯編語言中A是什麼意思

1 是累加器的匯編名稱
2 是數據 二進制是1010 十進制是10 十六進制是A

⑶ 單片機中A/D功能有哪些多謝指教!

有ad帶串口的單片機多的去了,你想要怎麼的「高級」法?
c8051f120是51裡面最高級的了。
atmega2560是avr單片機裡面最高級的了。
當然上面的都是8位機器,如果你想高級就上arm,stm32或者lpc的也非常不錯。

⑷ 單片機中寄存器A和B有什麼區別

單片機中寄存器A和B區別為:使用不同、存放不同、他用不同。

一、使用不同

1、寄存器A:輸入/輸出指令必須通過寄存器A使用。

2、寄存器B:輸入/輸出指令不通過寄存器B,在乘法和除法運算中配合寄存器A使用。

二、存放不同

1、寄存器A:寄存器A用於存放參與算術或邏輯運算的低位元組執作數及運算結果。

2、寄存器B:寄存器B用於存放參與算術或邏輯運算的高位元組執作數及運算結果。

三、他用不同

1、寄存器A:寄存器A也可在循環和串操作中充當累計器。

2、寄存器B:寄存器B也可用作間接定址的地址寄存器和基地址寄存器。

⑸ 單片機(A)

你說的單片機,是什麼型號啊?

⑹ 單片機中A與Acc有什麼區別

⑺ 有誰知道單片機中RR,A是什麼意思啊

在匯編中RR和RL都是移位類指令,位移類指令只能對累加器A進行移位, RR A 是指使累加器A內各位向右環移一位,例如累加器A原來各位為01111111,運行 RR A語句後,累加器A各位就變為10111111。
RL A 是指使累加器A內各位向左環移一位,例如累加器A原來各位為11111110,運行 RL A語句後,累加器A各位就變為11111101。

⑻ 單片機里的A

雖然A+DPTR是16位的,但是該地址指向的單元是一個位元組。
看來你對這個指令的意義還是模模糊糊並不理解的。

⑼ 單片機里的"rl a"是什麼意思

單片機里的"rl a"是循環左移指令,執行一次,累加器中的值左移一位,最高位移到最低位,比如:

MOV A,#90H

RL A

執行後,結果為(A)=21H。

(9)單片機中a擴展閱讀

用到循環移位的操作時,在匯編裡面是比較容易實現的,ror,rol指令就行了。利用位運算進行循環移位操作比較容易理解。如果不是循環移位,使用x<<n(左移n位),x>>n右移n位。

循環移位也容易理解。比如我們有個1位元組的數: x = 10111110。現在需要對其循環右移4位。也就是最後結果為x = 11101011。其實思路就是分離數據,我們需要提取出前四位1011,後四位1110。

其實需要兩個數的或操作,也就是00001011,11100000,我們只要得到這兩個數然後讓他們就行或操作:00001011|11100000 =11101011。把10111110 右移4位變為00001011(x>>4),把10111110左移4位變為11100000(x<<4),注意移位後的「空格」是用0填充的。最後執行或操作。

⑽ 單片機C語言中a=~(1<<b)

a=~(1<<b)是什麼意思?
原意:將第B位置1後取反,即清掉第B位IO
P1&=0xff;P1|=0x01中的&=和|=是什麼意思
P1&=0xff:相與後傳送給P1,即保持P1原值不變;
P1|=0x01:相異或與後傳送給P1,即P1賦值為0x01;

閱讀全文

與單片機中a相關的資料

熱點內容
租個伺服器開個私服需要什麼 瀏覽:270
圖片換成pdf格式 瀏覽:659
javamidi編程 瀏覽:831
android60demo 瀏覽:65
頭條演算法怎麼復習 瀏覽:512
燈光控制通道可以編程設置嗎 瀏覽:781
webpack命令行 瀏覽:805
卸載雲伺服器操作系統 瀏覽:29
java文件移動文件夾 瀏覽:449
針織公斤足稱演算法 瀏覽:457
電腦下載的圖片從文件夾重新編組 瀏覽:645
安卓源碼編譯引導失敗 瀏覽:676
蘋果怎麼添加自定義app文件夾 瀏覽:930
橙牛app怎麼找客服 瀏覽:307
php對象魔術方法 瀏覽:487
OBV能量潮幅圖指標源碼 瀏覽:915
編程15個好習慣 瀏覽:676
電腦u盤文件夾顯示屏幕保護程序 瀏覽:802
我的世界伺服器版本怎麼下載 瀏覽:600
c代碼加密工具 瀏覽:359