首页 理论教育 绝对寻址的4种类型与示例

绝对寻址的4种类型与示例

更新时间:2025-01-09 工作计划 版权反馈
【摘要】:在绝对寻址方式中,指令中包含所要寻址的存储单元的16位地址。绝对寻址有以下4种类型。 数据存储器地址寻址示例。当使用这种绝对寻址方式时,指令的长度扩展一个字,原来一个单字长的指令要变成双字长指令,而原来双字长的指令要变成三字长指令。 长立即数寻址示例。其中,BUFFER是一个16位的符号常数,括号前的“*”符号表示绝对寻址。

在绝对寻址方式中,指令中包含所要寻址的存储单元的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】 长立即数寻址示例。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈