在存储器映射寄存器(MMR)寻址方式中,修改存储器映射寄存器的值,而不影响当前数据页指针DP或当前堆栈指针SP的值,以存储器映射寄存器中的修改值去寻址。寻址范围为0000h~007Fh。因为这种寻址方式不需要修改DP和SP,所以对寄存器进行写操作的附加开销最小,寻址速度快。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中使用。
在直接寻址方式中,高9位数据存储器地址被置0(不管当前DP或SP为何值),利用指令中的低7位地址直接访问MMR,相当于基地址为0的直接寻址方式。
在间接寻址方式中,使用当前辅助寄存器ARx的低7位作为地址访问存储器映射寄存器,并在指令执行后,将辅助寄存器ARx的高9位强制清0。例如,在存储器映射寄存器寻址方式中,用AR1指向一个存储器映射寄存器,AR1的值为FF25h,那么AR1的低7位为25h,所指示的数据存储器地址为0025h。由于定时器周期寄存器PRD的地址为0025h,那么AR1就指向了定时器周期寄存器。指令执行后存放在AR1中的值改变为0025h。
共有以下8条能够使用存储器映射寄存器寻址的指令:
(1)LDM MMR,dst
(2)MVDM dmad,MMR
(3)MVMD MMR,dmad
(4)MVMM MMRx,MMRy(www.xing528.com)
(5)POPM MMR
(6)PSHM MMR
(7)STLM src,MMR
(8)STM #1k,MMR
【例4-14】 存储器映射寄存器寻址示例。
需要注意的是,在存储器映射寄存器寻址方式下,不能采用下列间接寻址的句法:*ARx(lk)、*+ARx(lk)、*+ARx(lk)%和*(lk)。否则,汇编会产生警告。
需要注意的是,在存储器映射寄存器寻址方式下,不能采用下列间接寻址的句法:*ARx(lk)、*+ARx(lk)、*+ARx(lk)%和*(lk)。否则,汇编会产生警告。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。