UPD78F0411 CPU指令地址尋址 一條指令的地址是由程序計數器(PC)決定的。根據執行指令時所獲取的下一條指令字節數,程序計數器(PC)的內容自動增加(每個字節加1)。在執行轉移指令時,將程序計數器(PC)的內容設置為轉移目的地址,并按以下尋址方式確定地址。(要了解每條指令的詳細信息,請參閱78K/0 系列指令用戶手冊(U12326E))。 1.1 相對尋址 [功能] 將一條指令的8 位立即數(偏移量: jdisp8)與下一條指令的起始地址相加,結果賦給程序計數器(PC),然后轉向相加結果指向的地址。這個偏移量是帶符號數的補碼(–128 ~ +127),其中第7 位是符號位。 換句話說,在相對尋址中,分支的范圍是從下一條指令起始地址的-128 到+127 之間。 當執行“BR $addr16”指令或條件轉移指令時,將執行相對尋址功能。 1.2 立即尋址 [功能] 將指令中的立即數賦給程序計數器(PC),然后轉向該地址。 在執行“CALL !addr16”指令、“BR !addr16”指令或“CALLF !addr11”指令時,將執行立即尋址功能。 CALL !addr16 和BR !addr16 指令的轉移地址范圍是所有存儲空間。 CALLF !addr11 指令的轉移地址范圍在0800H 與0FFFH 之間。 [圖示] CALL !addr16 和BR !addr16 指令 1.3 表間接尋址 [功能] 通過指令碼第1 位到第5 位的立即數,訪問特定存儲區中表的內容(轉移目的地址),并將表的內容賦給程序計數器(PC),然后轉向該地址執行程序。 在執行CALLT [addr5]指令時,進行表間接尋址。 該指令訪問的地址范圍是表40H~7FH 中所存儲的地址,轉移地址范圍可以是整個存儲器空間。 1.4 寄存器尋址 [功能] 將寄存器對(AX)的內容賦給程序計數器(PC),然后轉向該地址。 “BR AX”指令將執行寄存器尋址功能。 文章來源:http://www.originic.hk/Item/Show.asp?m=1&d=1767 |