在绝对寻址方式中,指令中包含所要寻址的存储单元的16位地址。这个存储单元的16位地址可以用其所在单元的地址标号或者16位符号常数来表示。由于绝对寻址指令中所要寻址的存储单元地址长度总是16位,因此所有绝对寻址指令的长度至少为两个字长。绝对寻址有以下4种类型。
1.数据存储器地址寻址
数据存储器地址(dmad)寻址是用一个符号(符号地址)或一个表示16位地址的立即数来指明寻址的数据存储单元的16位绝对地址。
使用数据存储器寻址的指令有:
(1)MVDK Smem,dmad
(2)MVDM dmad,MMR
(3)MVKD dmad,Smem
(4)MVMD MMR,dmad
例如,把数据存储器SAMPLE地址单元的数据传送到由AR5指向的数据存储单元中去,指令可写为
其中,符号SAMPLE是程序中的标号或已经定义好的符号常数,代表数据存储单元的地址。
【例4-2】 数据存储器地址寻址示例。
其中,符号SAMPLE是程序中的标号或已经定义好的符号常数,代表数据存储单元的地址。
【例4-2】 数据存储器地址寻址示例。
2.程序存储器地址寻址
程序存储器地址(pmad)寻址是用一个符号(符号地址)或一个表示16位地址的立即数来指明寻址的程序空间的地址。
使用程序存储器寻址的指令有:
(1)FIRS Xmem,Ymem,pmad
(2)MACD Smem,pmad,src
(3)MACP Smem,pmad,src
(4)MADP Smem,pmad
(5)MVPD pmad,Smem
例如,把程序存储器中标号为TABLE地址单元中的数据传送到由AR3寄存器所指向的数据存储器单元中去,指令可写为
2.程序存储器地址寻址
程序存储器地址(pmad)寻址是用一个符号(符号地址)或一个表示16位地址的立即数来指明寻址的程序空间的地址。
使用程序存储器寻址的指令有:
(1)FIRS Xmem,Ymem,pmad
(2)MACD Smem,pmad,src
(3)MACP Smem,pmad,src
(4)MADP Smem,pmad
(5)MVPD pmad,Smem
例如,把程序存储器中标号为TABLE地址单元中的数据传送到由AR3寄存器所指向的数据存储器单元中去,指令可写为
其中,TABLE指示的地址就是程序存储器地址,它也可以用常数表示的地址取代。
【例4-3】 程序存储器地址寻址示例。
其中,TABLE指示的地址就是程序存储器地址,它也可以用常数表示的地址取代。(www.xing528.com)
【例4-3】 程序存储器地址寻址示例。
3.端口地址寻址
端口地址(PA)寻址是用一个符号或一个数值来指明其外部I/O口地址。
使用端口地址寻址的指令有:
(1)PORTR PA,Smem
(2)PORTW Smem,PA
实际上使用端口地址寻址方式的指令也仅有以上两条,其中PORTR为端口读指令,PORTW为端口写指令。
例如,把端口地址为FIFO的I/O口的值复制到由AR5寄存器所指向的数据存储器单元中去,指令可写为
3.端口地址寻址
端口地址(PA)寻址是用一个符号或一个数值来指明其外部I/O口地址。
使用端口地址寻址的指令有:
(1)PORTR PA,Smem
(2)PORTW Smem,PA
实际上使用端口地址寻址方式的指令也仅有以上两条,其中PORTR为端口读指令,PORTW为端口写指令。
例如,把端口地址为FIFO的I/O口的值复制到由AR5寄存器所指向的数据存储器单元中去,指令可写为
其中,FIFO指示端口地址,同样它也可以用常数表示的端口地址取代。
【例4-4】 端口地址寻址示例。
其中,FIFO指示端口地址,同样它也可以用常数表示的端口地址取代。
【例4-4】 端口地址寻址示例。
4.长立即数寻址
长立即数*(lk)寻址是用一个符号或一个数值来指明寻址的数据存储空间的地址。这种寻址方式可以用在所有支持单数据存储器(Smem)操作数的指令中。
例如,把数据空间中地址为BUFFER的单元中的内容装载到累加器A中,指令可写为
4.长立即数寻址
长立即数*(lk)寻址是用一个符号或一个数值来指明寻址的数据存储空间的地址。这种寻址方式可以用在所有支持单数据存储器(Smem)操作数的指令中。
例如,把数据空间中地址为BUFFER的单元中的内容装载到累加器A中,指令可写为
其中,BUFFER是一个16位的符号常数,括号前的“*”符号表示绝对寻址。
长立即数*(lk)寻址允许所有使用单数据存储器(Smem)寻址的指令去访问数据空间的任意单元,而不会改变数据页指针DP的值,也不会对任何一个ARx进行初始化。当使用这种绝对寻址方式时,指令的长度扩展一个字,原来一个单字长的指令要变成双字长指令,而原来双字长的指令要变成三字长指令。
注意:使用长立即数寻址方式的指令不能与单循环指令RPT和RPTZ一起使用。
【例4-5】 长立即数寻址示例。
其中,BUFFER是一个16位的符号常数,括号前的“*”符号表示绝对寻址。
长立即数*(lk)寻址允许所有使用单数据存储器(Smem)寻址的指令去访问数据空间的任意单元,而不会改变数据页指针DP的值,也不会对任何一个ARx进行初始化。当使用这种绝对寻址方式时,指令的长度扩展一个字,原来一个单字长的指令要变成双字长指令,而原来双字长的指令要变成三字长指令。
注意:使用长立即数寻址方式的指令不能与单循环指令RPT和RPTZ一起使用。
【例4-5】 长立即数寻址示例。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。