**:
at89c51微控制器能直接認識和執行的機器指令有255條,有7種定址方式,即立即定址、直接定址、暫存器定址、暫存器間接定址、變址定址、相對定址和位定址。
1. 直接定址:
指令中直接給出參與操作的資料的位址,該位址一般用direct表示。
彙編指令:mov a,direct
該指令的功能是將片內ram位址direct單元中的內容(參與操作的資料)傳送到累加器a中,雙位元組指令。
2. 立即定址:
指令中直接給出參與操作的資料,稱立即數,用data表示。在組合語言中,為標明立即數,為data加字首」#」。立即數可以是8位和16位二進位制數,分別用#data和#data16表示。
組合語言指令:mov a,#data
該指令將立即數data傳送到累加器a中,雙位元組指令。
3. 暫存器定址:
參與操作的資料存放在暫存器中,彙編指令中直接以暫存器名來表示參與操作的資料位址,暫存器包括工作暫存器r0~r7、累加器a、ab、資料指標dptr和位運算暫存器c。
組合語言指令:mov a,rn ;n=0~7
該指令將rn中的內容傳送到累加器a中,單位元組指令。
4. 暫存器間接定址:
暫存器間接定址為二次定址,第一次定址得到暫存器的內容為(ri)或(dptr),第二次定址是將第一次定址得到的暫存器內容作為位址,並在其中存、取參與操作的資料。組合語言中,暫存器字首@是暫存器間接定址的標誌,有@ri、@dptr等。
組合語言指令:mov a,@ri ;i=0、1
該指令是將ri中的內容作為位址,再將該位址中的內容傳送到累加器a中,單位元組指令。
5. 變址定址:
間接定址由兩個暫存器提供。若由a、pc提供,在組合語言指令中定址位址表示為@a+pc;若由a和dptr提供,在組合語言指令中定址位址為@a+dptr。其中,pc或dptr被稱為基址暫存器,a被稱為變址暫存器,基址與變址相加為16位無符號加法。若變址暫存器a中內容加基址暫存器dptr(或pc)中內容時,低8位有進製,則該進製直接加到高位,不影響進製標誌。因變址定址指令多用於查表,故常稱為查表指令。
組合語言指令:movc a,@a+dptr
該指令將dptr中的內容加上a中的內容作為位址,再將該位址中的內容傳送到累加器a中,單位元組指令。
6. 相對定址:
相對定址是以相對定址指令的下一條指令的程式計數器pc的內容為基值,加上指令機器**中的「相對位址」,形成新的pc值(要轉移的指令位址)的定址方式。指令機器**中「相對位址」指的是用乙個帶符號的8位二進位制補碼表示的偏移位元組數,其取值範圍為-128~+127,負數表示向後轉移,正數表示向前轉移。
若(pc)表示該指令在rom中的首位址,該指令位元組數為2,執行時分兩步操作:(pc)←(pc) +2,(pc)←(pc)+相對位址。第一步完成後,pc中的值為該指令的下一條指令的首位址;第二步完成後,pc中的內容(pc)為轉移的目標位址。所以,轉移的目標位址範圍是該相對定址指令的下一條指令首址加上-128~—+127位元組的位址。
組合語言指令:sjmp rel
組合語言相對定址指令中的」rel」往往是乙個標號位址,表示rom中某轉移目標位址。彙編軟體對該組合語言指令進行彙編時,自動算出「相對位址」並填入機器**中,應將」rel」理解為「帶有相對意義的轉移目標位址」。
rel=(pc)+相對定址指令位元組數+相對位址
其中,(pc)為該指令所在rom中的首位址。
7. 位定址:
參與操作的資料為「位」,而不是位元組,是對片內資料儲存器ram和sfr中可位定址單元的位進行操作的定址方式。
組合語言指令:anl c,bit
該指令將bit(位位址)中的內容(0或1)與c中的內容進行與操作,再將結果傳送到psw中的進製標誌c中。
附註. 七種定址方式及相應的定址儲存器範圍:
定址方式
定址儲存器範圍
立即定址
程式儲存器rom
直接定址
片內ram低128b,特殊功能暫存器
暫存器定址
工作暫存器r0~r7,a,c,dptr,ab
暫存器間接定址
片內ram低128b,片外ram
變址定址
程式儲存器rom (@a+dptr, @a+pc)
相對定址
程式儲存器rom(相對定址指令的下一指令pc值加-128~+127)
位定址片內ram的20h~2fh位元組位址中所有的位,可位定址的sfr
51微控制器 51系列微控制器的開發模板
這個是微控制器開發的模板,下面給些注釋和思路,開發的時候其實是經常使用的,之前也不懂,參加藍橋杯之後學習到的,如果有時間和機會,會結合前輩的這些思路,再寫個stm32和嵌入式下的開發模板,這個很有利於專案的設計開發。說明 適用於stc15f2k60s2微控制器,其他的類似,只需要改動相關的定時器設定...
新系列 51微控制器
考慮到部落格內容的太單調,我就新開了乙個系列 51微控制器系列 微控制器的控制方法還是使用c語言來控制所以在c語言這裡新開乙個系列 和c語言的程式相比,51微控制器的執行更加趨向於過程而非結果,也就是說微控制器輸出結果的方法使用執行程式的過程,也就是說一次一次的執行這個程式,來體現所需要的結果 和只...
51 微控制器彙編指令的 定址方式的通俗解析
接下來就給學生介紹定址方式分類,同時與現實生活中某些事件 作模擬,我就我們要給某一位朋友寄快遞或信件為例來說明。如果我們知道這位朋友的位址,在信件上直接寫上位址交給快遞 公司就可以了。這就是直接定址 如mov a,30h 如果這位朋友是個名人,或在有名氣的單位工作,那我們可只寫 其單位名稱和收件人,...