微控制器C51彙編指令之定址方式學習心得

2021-08-10 16:54:26 字數 1207 閱讀 4607

1.暫存器定址

指令舉例:mov a,r0

該指令功能:將暫存器r0中的內容送累加器a中

詳細說明:假設r0中的內容是16進製制數20h,那麼執行這條指令之後,累加器a中的內容是20h 即十進位制數:32

2.直接定址

指令舉例:mov a,30h

該指令功能:將位址單元30h中的內容送累加器a中

詳細說明:假設位址單元30h中的內容是20h,那麼執行該指令之後,累加器a中的內容是:20h 即十進位制數32

3.暫存器間接定址

指令舉例:mov a,@r0

該指令功能:將r0指向的記憶體單元中的內容送累加器a中

詳細說明:為和暫存器直接定址區別,組合語言中,暫存器間接定址中的暫存器前面會加上乙個@以示區別,假設r0中的內容是10h,(10h)=20h,那麼執行完該指令之後,累加器a中的內容是20h,即有a=@r0=(10h)=20h,這有點類似於高階語言中的指標,@r0指向記憶體位址單元10h,而10h中的內容是20h,該指令的功能就是將@r0所指向的記憶體位址單元10h中的內容送累加器a中。

4.立即數定址

指令舉例:mov a,#30h

該指令功能:將立即數30h送累加器a

詳細說明:為和直接定址區別開來,組合語言中利用#區別常數和記憶體位址,我們知道,暫存器直接定址中,後面乙個運算元中儲存的是記憶體單元位址,而在立即數定址中,後乙個運算元是乙個常數,所以該指令的功能最直接,相當於高階語言中的賦值操作,即將常數30h送累加器a,完成該指令之後,累加器a中的內容是:30h

注意:立即數定址中有一條特殊的指令mov dptr,#立即數,這裡的立即數是16位的,即該立即數可以有有16個二級制位

5.變址定址

指令舉例:movc a,@a+dptr

該指令功能:將累加器a中的內容和dptr的值(dptr中的是記憶體位址)相加得到乙個記憶體位址,將該記憶體位址中的內容送累加器a中

詳細說明:假設該指令執行之前:a=54h,dptr=3f21h,那麼@a+dptr=(3f75h),假設記憶體位址3f75中的內容是20h,那麼執行完該指令之後,a中的值為20h

注意:這裡的操作碼是movc而不是mov,且變址定址的指令只有三條:

movc a,@a+dptr

movc a,@a+pc

jmp @a+dptr

並且該指令只用於程式儲存器,即rom

暫時只介紹這幾種基本的定址方式,後面應該會繼續更新。

如有錯誤,望大家指出。

51 微控制器彙編指令的 定址方式的通俗解析

接下來就給學生介紹定址方式分類,同時與現實生活中某些事件 作模擬,我就我們要給某一位朋友寄快遞或信件為例來說明。如果我們知道這位朋友的位址,在信件上直接寫上位址交給快遞 公司就可以了。這就是直接定址 如mov a,30h 如果這位朋友是個名人,或在有名氣的單位工作,那我們可只寫 其單位名稱和收件人,...

51微控制器與C51

微控制器又稱單片微控制器,是在一塊晶元中整合了cpu 處理器 ram 資料儲存器 rom 程式儲存器 定時器 計數器和多種功能的i o 輸入 輸出 介面等一台計算機所需要的基本功能部件,從而可以完成複雜的運算 邏輯控制 通訊等功能。51微控制器是對所有相容intel 8031指令系統的微控制器的統稱...

51微控制器C51程式

學習c51程式之前需要對c語言有一定的了解和學習 這裡只介紹與c語言有區別的地方 具體的不同如下 1 c51中增加了幾種針對msc 51微控制器的特有資料型別 a sfr和sfr16 用於定義特殊功能暫存器,如 sfr psw 0xd0 一般情況下這些特殊功能暫存器不需要使用者自定義,通常包含在標頭...