複製鏈接
請複製以下鏈接發送給好友

查表指令

鎖定
查表指令,用來查找以列表形式或系統地排列在存儲器中的數據的一種指令。
中文名
查表指令
外文名
table look - up instruction
性    質
指令名稱
作    用
查找排列在存儲器中的數據
數據傳輸
單向
助記符
在MOV的後面加C

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

由於程序存儲器只能讀不能寫,因此其數據的傳輸是單向的,即從程序存儲器中讀出數據到累加器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個表格可以為各個程序塊共用。