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”指令将执行寄存器寻址功能。