1樓:mono教育
push是壓棧命令,pop是出棧命令。
微控制器將各功能部件整合在一塊晶體晶元上,整合度很高,體積自然也是最小的。晶元本身是按工業測控環境要求設計的,內部佈線很短,其抗工業噪音效能優於一般通用的cpu。微控制器程式指令,常數及**等固化在rom中不易破壞,許多訊號通道均在乙個晶元內,故可靠性高。
特徵:
(1)微控制器的體積比較小, 內部晶元作為計算機系統,其結構簡單,但是功能完善,使用起來十分方便,可以模組化應用。
(2)微控制器有著較高的整合度,可靠性比較強,即使微控制器處於長時間的工作也不會存在故障問題。
(3) 微控制器在應用時低電壓、低能耗,是人們在日常生活中的首要選擇, 為生產與研發提供便利。
(4)微控制器對資料的處理能力和運算能力較強,可以在各種環境中應用,且有著較強的控制能力。
2樓:
push是壓棧命令,pop是出棧命令
棧是一種先進後出的資料結構。
當執行push acc時,會根據sp暫存器的值,將資料存入ram,然後對sp執行加1操作。
假設sp=08h
第3行:push acc可以看做:
08h=acc=#50h
sp=sp+1=09h
第4行:push b
09h=b=#77h
sp=sp+1=0ah
第5行:pop acc
sp=sp-1=09h
acc=09h=#77h
同理b=#50h
3樓:
第一行:a=50h
第二行:b=77h
第三行:設sp=20h 此時sp=sp+1=21h (21h)=a=50h
第四行:sp=sp+1=22h (22h)=b=77h第五行:a=(22h)=77h sp=sp-1=21h第六行:b=(21h)=50h sp=sp-1=20h
4樓:匿名使用者
棧先進後出的結構
第一行:a=50h
第二行:b=77h
第三行:設sp=20h 此時sp=sp+1=21h (21h)=a=50h
第四行:sp=sp+1=22h (22h)=b=77h第五行:a=(22h)=50h sp=sp-1=21h第六行:
b=(21h)=77h sp=sp-1=20h**的整體意思就是將a和b的值交換
微控制器中a與acc有什麼區別?
5樓: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週期。
6樓:匿名使用者
這個主要區別在於棧,使用acc的同時是對棧的儲存與釋放問題,而使用a只是儲存,兩者是同乙個累加器,學者沒必要詳細區分他們,棧的內部動作由計算機來完成的。呵呵,我以前也問過這樣的問題,還記得是乙個剛來我們學校不久的女博士告訴我的,都有點想她了。
微控制器8051基礎問題,微控制器8051和8951哪個新
標準51 只有128位元組片內ram,00h 1fh工作暫存器區,共4組,通過rs1.rs0選擇工作暫存器組,20h 2fh共16位元組 128個位 可位定址區。30h 7fh通用暫存器區,用來存放程式執行過程中的臨時引數和堆疊區。80h 0ffh特殊功能暫存器區,8051的特殊功能暫存器佔用位址 ...
微控制器問題,微控制器的問題
是 51 微控制器問題?正負數分開存放。零,放在正數一起。main mov 20h,21h 設定存放正數的起始位址mov 60h,61h 設定存放負數的起始位址mov r0,40h 資料源位址mov r2,20 資料個數lp mov a,r0 jnb acc.7,zh mov r1,60h 取負數位...
微控制器問題,微控制器的問題
希望你學會的是一些技巧,一些方法,那麼你以後不管學什麼技術 主要是講控制這方面的 你都會很容易上手的。這是真的。你僅僅只是做了單個模組嗎?那麼你最好做乙個小的系統,綜合了多個功能的系統。學程式設計主要是一種思想,這種思想對其他微控制器是一樣的,只是語言的寫法有些區別。如果你做了乙個綜合了多種功能的小...