UPD78F0411 CPU指令地址尋址
UPD78F0411 CPU指令地址尋址
一條指令的地址是由程序計(jì)數(shù)器(PC)決定的。根據(jù)執(zhí)行指令時(shí)所獲取的下一條指令字節(jié)數(shù),程序計(jì)數(shù)器(PC)的內(nèi)容自動(dòng)增加(每個(gè)字節(jié)加1)。在執(zhí)行轉(zhuǎn)移指令時(shí),將程序計(jì)數(shù)器(PC)的內(nèi)容設(shè)置為轉(zhuǎn)移目的地址,并按以下尋址方式確定地址。(要了解每條指令的詳細(xì)信息,請(qǐng)參閱78K/0 系列指令用戶手冊(cè)(U12326E))。
1.1 相對(duì)尋址
[功能]
將一條指令的8 位立即數(shù)(偏移量: jdisp8)與下一條指令的起始地址相加,結(jié)果賦給程序計(jì)數(shù)器(PC),然后轉(zhuǎn)向相加結(jié)果指向的地址。這個(gè)偏移量是帶符號(hào)數(shù)的補(bǔ)碼(–128 ~ +127),其中第7 位是符號(hào)位。
換句話說,在相對(duì)尋址中,分支的范圍是從下一條指令起始地址的-128 到+127 之間。
當(dāng)執(zhí)行“BR $addr16”指令或條件轉(zhuǎn)移指令時(shí),將執(zhí)行相對(duì)尋址功能。
1.2 立即尋址
[功能]
將指令中的立即數(shù)賦給程序計(jì)數(shù)器(PC),然后轉(zhuǎn)向該地址。
在執(zhí)行“CALL !addr16”指令、“BR !addr16”指令或“CALLF !addr11”指令時(shí),將執(zhí)行立即尋址功能。
CALL !addr16 和BR !addr16 指令的轉(zhuǎn)移地址范圍是所有存儲(chǔ)空間。
CALLF !addr11 指令的轉(zhuǎn)移地址范圍在0800H 與0FFFH 之間。
[圖示]
CALL !addr16 和BR !addr16 指令
1.3 表間接尋址
[功能]
通過指令碼第1 位到第5 位的立即數(shù),訪問特定存儲(chǔ)區(qū)中表的內(nèi)容(轉(zhuǎn)移目的地址),并將表的內(nèi)容賦給程序計(jì)數(shù)器(PC),然后轉(zhuǎn)向該地址執(zhí)行程序。
在執(zhí)行CALLT [addr5]指令時(shí),進(jìn)行表間接尋址。
該指令訪問的地址范圍是表40H~7FH 中所存儲(chǔ)的地址,轉(zhuǎn)移地址范圍可以是整個(gè)存儲(chǔ)器空間。
1.4 寄存器尋址
[功能]
將寄存器對(duì)(AX)的內(nèi)容賦給程序計(jì)數(shù)器(PC),然后轉(zhuǎn)向該地址。
“BR AX”指令將執(zhí)行寄存器尋址功能。
評(píng)論