zbzb12345 发表于 2012-9-8 00:29:25

UPD78F9211/9212/9210 CPU 指令地址寻址

UPD78F9211UPD78F9211/9212/9210 CPU 指令地址寻址

一条指令的地址是由程序计数器(PC)决定的。根据执行指令时所获取的下一条指令的字节数,程序计数器(PC)的内容自动增加(每字节+1)。在执行分支指令时,将程序计数器(PC)的内容设置为分支的目的地址,并按以下方式确定地址。(想要了解每条指令的详细信息,请参考78K/0S 系列指令用户手册(U11047E))。

1.1 相对寻址
[功能]
将一条指令的8 位立即数(偏移量:jdisp8)与下一条指令的起始地址相加,结果赋给程序计数器(PC),然后转向相加结果指向的地址。这个偏移量是带符号位的补码(-128 到+127),其中第7 位是符号位。换句话说,在相对寻址中,分支的范围是从下一条指令起始地址的-128 ~ +127 之间。
当执行“BR $addr16”指令或条件转移指令时,将实现上述功能。
http://www.originic.hk/UploadFiles/2012-08/admin/2012828102140636.jpg
当S=O ,α的所有位都是0
                               当S=1 ,α的所有位都是1

1.2 立即寻址
[功能]
将指令中的立即数赋给程序计数器(PC),然后转向该地址。在执行“CALL !addr16”指令和“BR !addr16”指令时,实现此功能。
“CALL !addr16” 和“ BR !addr16”指令的转移地址范围是所有内存空间。

CALL !addr16 指令和BR !addr16 指令
http://www.originic.hk/UploadFiles/2012-08/admin/201282810200008.jpg
1.3 表间接寻址
[功能]
通过指令码低5 位的立即数(从第1 位到第5 位),访问特定存储单元的表的内容(转移目的地址),并将表的内容赋给程序计数器(PC),然后转向该地址。在执行“CALLT ”指令时,进行表间接寻址。
该指令访问的地址范围是内存表中的40H ~ 7FH 之间所存储的地址,转移地址范围可以是整个存储器空间。
http://www.originic.hk/UploadFiles/2012-08/admin/2012828101252606.jpg
1.4 寄存器寻址
[功能]
将一条指令的寄存器对(AX)的内容赋值给程序计数器(PC),然后转向该地址。
当执行“BR AX”指令时,实现此功能。
http://www.originic.hk/UploadFiles/2012-08/admin/2012828104152815.jpg
页: [1]
查看完整版本: UPD78F9211/9212/9210 CPU 指令地址寻址