51微控制器中ACC怎麼用,51微控制器中ACC怎麼用??

時間 2022-03-08 18:10:21

1樓:匿名使用者

a和acc的實質是一樣的,對應位址都是0e0h,

只是彙編在使用時,在格式上取了兩個名字。

你看看它們的使用方法,有的地方用a,有的地方用acc,會發現有一定的規律。

當其要進行位表示時,必須用acc,

比如要寫成acc.7,而不能寫成a.7

但當其作為8位二進位制數時,acc和a都能用

但還是有區別

比如 inc acc和inc a 都能用

acc是位址的呼叫

而a是累加器呼叫

由於push、pop 是直接定址,後面一定跟的是直接位址

所以在進棧和出棧的時候 不能用a 只能用acc

有這麼一說

累加器有a、acc和e0h三種表示形式,分屬兩種不同的定址方法,使用a時,為暫存器定址,指令碼為04h,使用acc和e0h時,為直接定址,指令碼為05e0h

inc a 是暫存器定址

inc a 是單位元組指令,轉換成機器碼是:04h,機器碼中沒有明確指出運算元,隱含操作

數是累加器a,所以把這種方式定址叫暫存器定址。

inc acc是直接定址

inc acc 是雙位元組指令,轉換成機器碼是:05h,e0h。機器碼中包含了累加器a的位址e0h

這個 e0h 可以換成其他直接位址,所以這種方式定址叫直接定址。

push 和 pop 指令只支援直接定址,所以不能用 a

push acc 機器碼:c0h e0h

pop acc 機器碼:d0h e0h

2樓:歡愉且聰穎丶雛菊

51中有個主要的暫存器,a暫存器。acc等價於a暫存器,呼叫acc暫存器就是對a暫存器進行操作,a有8位所以acc也有8位,正常情況下兩者差不多,acc可以直接進行位操作,暫存器a如果要進行位操作就要借助各種指令,操作起來比較複雜,所以acc的存在就顯得很有必要。

這是我在實踐中的心得體會。

在51微控制器中,a和acc的具體的關係是什麼呢

3樓:匿名使用者

累加器a與acc區別

累加器寫成a或acc在51組合語言指令中是有區別的。

acc在彙編後的機器碼必有乙個位元組的運算元,是累加器的位元組位址e0h,a在彙編後則隱含在指令操作碼中。

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

例如,指令inc a的機器碼是04h,屬於暫存器定址,寫成acc後則成了inc direct的格式,對應機器碼為05e0h。

push    acc                               pop    acc

類似:工作暫存器r0~r7在指令中也有兩種不同的寫法,生成的機器碼也不同,如:

mov       40h,r0       ,

mov       40h,00h

假設當前工作暫存器為0組,前者屬於暫存器定址,後者屬於儲存器直接定址。但r0和00h的級別不同,00h只是ram區的乙個普通單元,其讀寫速度要比慢得多。微型計算機內部通常設定工作暫存器組,運算的結果可以放在暫存器中而不必每次都放到儲存器裡,可以提高機器的工作速度。

其實暫存器也是一種儲存器,只不過它是cpu中的部件,速度最快而已。

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

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

但當其作為8位二進位制數時,acc和a都能用,但還是有區別:比如 inc acc和inc a 都能用,還有push acc,pop acc不可以寫成push a和pop a

在keil c中用了這樣乙個命令:push     a ,彙編時提示錯誤,後來我把push     a 改為 push    acc 就可以通過了,請問這是什麼回事?a與acc是同乙個暫存器嗎?

所謂「a」是相關指令對累加器a的預設指定(不佔運算元指令),而push和pop沒有預設指定累加器,要訪問累加器就必須採用其所允許的直接定址方式,「acc」就是累加器a的位址。push 是直接定址,後面一定跟的是直接位址。你可以看到reg51.

h中acc的直接位址是0xe0;也可以push e0h;累加器有a、acc和e0h三種表示形式,分屬兩種不同的定址方法,使用a時,為暫存器定址,指令碼為04h,使用acc和e0h時,為直接定址,指令碼為05e0h。可a的位7,為什麼非得用acc.7而不用a.

7。這與位定址有關係,位位址有四種:直接位位址;位元組位址加位序號;位名稱;特殊暫存器加位序號。

為什麼push acc必須用acc,而不能用a,相反movx @dptr,a只能用a,而不能用ac?acc和a有什麼區別?acc is register。

a is a unseparatable part of opcode。

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

儘管實體地址相同,但push是對暫存器操作,而movx是對累加器操作。

彙編結果:"inc a"為"04h"執行時間1週期;"inc acc"為"05h,e0h"執行時間2週期。

4樓:學習無極限

a和acc的實質是一樣的,對應位址都是0e0h,只是彙編在使用時,在格式上取了兩個名字。

你看看它們的使用方法,有的地方用a,有的地方用acc,會發現有一定的規律。

當其要進行位表示時,必須用acc,

比如要寫成acc.7,而不能寫成a.7

但當其作為8位二進位制數時,acc和a都能用但還是有區別

比如 inc acc和inc a 都能用

還有push acc pop acc也可以寫成push a和pop a

當然,我們學彙編時,它主要是講了乙個格式,可能書上只講到push acc,沒有講到push a,沒講到並不代表它不能用。

5樓:匿名使用者

還有一點,在一下指令中只能使用acc作為累加器的符號inc acc

pop acc

push acc

訪問acc的某一位時

6樓:匿名使用者

push acc正確push a錯誤

因為a是作為暫存器來用,是暫存器定址方式;第一條指令是直接定址方式,因此是正確的。

7樓:城文宣

acc是累加器a的符號...二者其實是一樣的...但是在進行位操作的時候就要寫acc.x(x為某位)而不能寫a.x

微控制器中a與acc有什麼區別?

8樓:0李張

累加器a與acc區別

累加器寫成a或acc在51組合語言指令中是有區別的。

acc在彙編後的機器碼必有乙個位元組的運算元,是累加器的位元組位址e0h,a在彙編後則隱含在指令操作碼中。

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

例如,指令inc a的機器碼是04h,屬於暫存器定址,寫成acc後則成了inc direct的格式,對應機器碼為05e0h。

push    acc

pop    acc

類似:工作暫存器r0~r7在指令中也有兩種不同的寫法,生成的機器碼也不同,如:

mov       40h,r0       ,

mov       40h,00h

假設當前工作暫存器為0組,前者屬於暫存器定址,後者屬於儲存器直接定址。但r0和00h的級別不同,00h只是ram區的乙個普通單元,其讀寫速度要比慢得多。微型計算機內部通常設定工作暫存器組,運算的結果可以放在暫存器中而不必每次都放到儲存器裡,可以提高機器的工作速度。

其實暫存器也是一種儲存器,只不過它是cpu中的部件,速度最快而已。

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

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

但當其作為8位二進位制數時,acc和a都能用,但還是有區別:比如 inc acc和inc a 都能用,還有push acc,pop acc不可以寫成push a和pop a

在keil c中用了這樣乙個命令:push     a ,彙編時提示錯誤,後來我把push     a 改為 push    acc 就可以通過了,請問這是什麼回事?a與acc是同乙個暫存器嗎?

所謂「a」是相關指令對累加器a的預設指定(不佔運算元指令),而push和pop沒有預設指定累加器,要訪問累加器就必須採用其所允許的直接定址方式,「acc」就是累加器a的位址。push 是直接定址,後面一定跟的是直接位址。你可以看到reg51.

h中acc的直接位址是0xe0;也可以push e0h;累加器有a、acc和e0h三種表示形式,分屬兩種不同的定址方法,使用a時,為暫存器定址,指令碼為04h,使用acc和e0h時,為直接定址,指令碼為05e0h。可a的位7,為什麼非得用acc.7而不用a.

7。這與位定址有關係,位位址有四種:直接位位址;位元組位址加位序號;位名稱;特殊暫存器加位序號。

為什麼push acc必須用acc,而不能用a,相反movx @dptr,a只能用a,而不能用ac?acc和a有什麼區別?acc is register。

a is a unseparatable part of opcode。

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

儘管實體地址相同,但push是對暫存器操作,而movx是對累加器操作。

彙編結果:"inc a"為"04h"執行時間1週期;"inc acc"為"05h,e0h"執行時間2週期。

9樓:匿名使用者

這個主要區別在於棧,使用acc的同時是對棧的儲存與釋放問題,而使用a只是儲存,兩者是同乙個累加器,學者沒必要詳細區分他們,棧的內部動作由計算機來完成的。呵呵,我以前也問過這樣的問題,還記得是乙個剛來我們學校不久的女博士告訴我的,都有點想她了。

51微控制器SBUF什麼意思,51微控制器中SBUF中讀出的資料型別

define 巨集定義 unsigned乙個資料型別 還有就是signed 乙個是有符號 乙個是無符號 int資料型別 sbuf是串列埠接送或者傳送資料暫存器 define 是定義乙個常量 unsigned char 定義乙個字元型變數,unsigned int 定義乙個整數型變數購買sea wol...

關於51微控制器的中斷問題,51微控制器外部中斷0的問題

優先中斷,就是在執行乙個中斷的時候,又來了乙個中斷 如果新來的中斷,其優先順序高於正在執行的中斷,那麼就會暫停現在的中斷而去執行新來的中斷,等這個新中斷執行完之後再會回去繼續執行剛才那個沒執行完也就是那個被打斷的中斷 如果新來的中斷,其優先順序不如正在執行的中斷的優先順序高,那麼程式會繼續執行這個中...

51微控制器怎麼識別高電平,51微控制器怎麼識別乙個高電平?

首先確認在p21已經有上拉為高的情況下,接在339輸出口,是不是為低,然後讓339為高後,p21口是否為高,用表測下,再寫程式。p2 0,是不能這樣寫的,做為輸入口,之前都得送1。除非可用沒有內部上接的p0口,做這些,硬體狀態很重要,先確認339一定有輸出哦。首先,你要確定輸入到微控制器引腳的電平是...