查表指令

查表指令,用來查找以列表形式或系統地排列在存儲器中的數據的一種指令。

查表指令的定址方式的由來

由於程式暫存器只能讀不能寫,因此其數據的傳輸是單向的,即從程式存儲器中讀出數據到累加器A中。兩條查表指令均採用基址暫存器加變址暫存器間接定址方式。

查表指令的助記符是在MOV的後面加C,“C”是CODE的第1個字母,即代碼的意思。

MOVC A,@A+PC

這條指令以pc作基址暫存器,A的內容作為無符號整數和pc中的內容(下一條指令的起始地址)相加後得到1個16位的地址,把該地址指出的程式存儲器單元的內容送到累加器A。

例:(A)=30H,執行地址1000H處的指令

1000H:MOVC A,@A+PC

本指令占用1B,下一條指令的地址為1001H,(PC)=1001H在加上A中的30H,得1031H,結果將程式存儲器中1031H的內容送入A。

這條指令的優點是不改變特殊功能暫存器及pc的狀態,根據A的內容就可以取出表格中的常數。缺點是表格只能存放在該條查表指令後面的256個單元內,表格的大小受到限制,而且表格只能被一段程式所利用。

MOVC A,@A+DPTR

這條指令以DPTR作為基址暫存器,其餘的與MOVC A,@A+PC相同

例 (DPTR)=8100H (A)=40H 執行指令

MOVC A,@A+DPTR

結果將程式存儲器中8140H單元內容送入累加器A中。

這條查表指令的執行結果只和指針DPTR及累加器A的內容有關,與該指令存放的地址及常數表格存放的地址無關,因此表格的大小和位置可以在64KB程式存儲器中任意安排,1個表格可以為各個程式塊共用。

相關詞條

相關搜尋

熱門詞條

聯絡我們