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