您的位置:網站首頁 > 電器維修資料網 > 正文 >
MCS-51單片機傳送類指令
來源: 日期:2013-11-18 21:55:05 人氣:標簽:
“#”符號表示后面跟的是一個數字,而不是地址,因為在51指令當中內部存儲器的地址是直接用十六進制的數字表示的,如果我們把語句寫成:
那么這句指令的含義是將內部存儲器位于第23h那個字節中的值傳至a,若23h中的值為ooh,則運行結果a=ooh,這被稱為“直接尋址”。
51指令規定ro和rl寄存器為間接尋址寄存器,使用方法如下:
mova.@ro;@表示取ro內的值所代表的ram單元里的值,假設排號為23h的存儲器中的值為ooh,ro中的值為23h,那么執行了上面的語句以后,a=ooh如果我們把指令寫成mova,ro則運行以后a=23h51單片機也可以使用外部ram,讀寫外部ram的指令:
其中dptr是一個16位的數據地址指針,可以進行間接尋址,用于外部ram的尋址。
51單片機內的各類寄存器中值的傳送,都可以通過mov指令實現。
在以上所介紹的語句中用到的“a”是51單片機的累加器,它是使用 頻繁的寄存器,單片機絕大部分操作均需通過a。
②堆棧指令
堆棧,就象是一個手槍的子彈夾,而我們準備存放的數據,每一個字節就好比是一發子彈,我們把數據一個一個地壓入堆棧,等到取數據時, 后一個被存入的字節會被 先取出。
往堆棧內存人數據的指令稱為壓棧指令,格式如下:
則運行結果如下圖所示:
取出堆棧數據的指令稱為彈出指令,格式如下:
若我們接著上面執行以下語句:
則運行結果:a=12h、23h=ooh、ro=11h,你可以看到運行以后,ro和a的值進行了交換。
③累加器傳送指令
這個指令的作用就是交換累加器a和存儲單元中的內容,它有如下三種使用情況,我們先假設:內部ram的20h單元內容為33h,累加器a的值為22h,r0的值為20h。執行指令:
運行以后,a內的值變為20h,ro的值變為22h。
若沒有執行上面這條指令,而執行
則運行以后,a的值變為33h,20h的值變為22h若沒有執行上述指令,而執行
那么運行以后,a的值為33h,20h的值為22h
這個指令是將ri間址單元內容的低4位與累加器內容的低4位互換,高4位不變。設ro的值為20h,ram的20h單元內容為75h,a的值為36h,執行:xchda,@ro運行以后20h單元的值變為76h,a的值變為35h
本指令實現累加器a的高、低4位內容互換。若a的值為36h,運行后a的值變為63h。
【看看這篇文章在百度的收錄情況】
相關文章
- 上一篇: 如何設計單片機程序-把單片機當作黑匣子
- 下一篇: MCS-51單片機算術運算類指令