(3)AR间接寻址I/O空间 ●访问/O空间使用16位的地址; ●当使用AR间接寻址I/O空间时,被使用的ARn包括 完整的/O空间地址。 例:MOV port(*AR4),T2 ARn /O空间 0000000000000000 ● ● 0000h~FFFFh 1111111111111111 图4-10AR间接寻址I/O空间 39
(3)AR间接寻址I/O空间 ⚫ 访问I/O空间使用16位的地址; ⚫ 当使用AR间接寻址I/O空间时, 被使用的ARn包括 完整的I/O空间地址。 图4-10 AR间接寻址I/O空间 ARn I/O 空间 0000 0000 0000 0000 . . . 1111 1111 1111 1111 0000h~FFFFh 39 例:MOV port(*AR4), T2
例4-16,*ARn用于对I/O空间的寻址, 设AR4=FF80h,AR5=FFFFh。 (1)MOV port(*AR4),T2 ;CPU从FF80h读取数据进T2 (2)MOV T2,port(*AR5) CPU把T2的数据输出到I/O地址0 FFFFh 40
(1) MOV port(*AR4), T2 (2) MOV T2, port(*AR5) ;CPU从FF80h读取数据进T2 ;CPU把T2的数据输出到I/O 地址0FFFFh 例4-16, *ARn 用于对I/O空间的寻址. 设AR4= FF80h, AR5= FFFFh。 40 ;CPU从FF80h读取数据进T2
(4)ARMS位对AR间接操作数的影响 。AR间接寻址方式的寻址操作数类型受ST255状态寄 存器中ARMS位的影响: ARMS DSP模式和控制模式选择 DSP模式:该模式用于高效的数字信号处理 控制模式:该模式优化代码长度,用于控制系统 女注意: ARnLC,CDPLC √指针修改和地址产生即可线性也可循环,根据ST255寄 存器的指针配置而定。当使用循环寻址时,16位的缓冲区 起始地址寄存器(BSA01,BSA23,BSA45,BSA67)的内容被加 到相应的指针上; √指针间的加法和减法以64K为模,不改变XARn,则不能 跨主数据页寻址数据。 41
(4) ARMS位对AR间接操作数的影响 ⚫ AR间接寻址方式的寻址操作数类型受ST2_55状态寄 存器中ARMS位的影响: ARMS DSP模式和控制模式选择 0 DSP模式:该模式用于高效的数字信号处理 1 控制模式:该模式优化代码长度, 用于控制系统 ☼ 注意: ✓指针修改和地址产生即可线性也可循环, 根据ST2_55寄 存器的指针配置而定。当使用循环寻址时, 16位的缓冲区 起始地址寄存器(BSA01,BSA23,BSA45,BSA67)的内容被加 到相应的指针上; ✓指针间的加法和减法以64K为模,不改变XARn,则不能 跨主数据页寻址数据。 41 ARnLC, CDPLC
表4-9DSP模式下的AR间接寻址模式(1) (共15种) 操作数 指针修改方式 访问数据类型 *ARn ARn值不变 Smem,Lmem,Baddr 地址产生(寻址)后,指针的值自增: *ARn+ 对于16位/1位操作数,有ARn=AR+1 Smem,Lmem,Baddr 对于32位/2位操作数,有AR=ARt2 地址产生(寻址)后,指针的值自减: *ARn- 对于16位/1位操作数,有ARn=ARn1 Smem,Lmem,Baddr 对于32位/2位操作数,有ARn=ARn-2 寻址地址产生前,指针的值自增: *+ARn 对于16位/1位操作数,有ARn=ARn+1 Smem,Lmem,Baddr 虚框内DSP模式特有对于32位/2位操作数,有ARn=ARt2 控制模式无 寻址地址产生前,指针的值自减: *-ARn 对于16位1位操作数,有ARn=ARn-1 Smem,Lmem,Baddr 对于32位/2位操作数有ARn=ARn-2 地址产生后,指针的值变化: *(ARn+TO/ARO) 如果C54CM-0,有ARF=AR+T0, Smem,Lmem,Baddr 如果C54CM=L,有AR=ARn+ARO: 地址产生后,指针的值变化: *(ARn-TO/ARO) 如果C54CM=0,有ARn-ARn-T0, Smem,Lmem,Baddr 如果CS4CM=L,有ARn=ARn-ARO 42
表4-9 DSP模式下的AR间接寻址模式(1)(共15种) 操作数 指针修改方式 访问数据类型 *ARn ARn值不变 Smem, Lmem, Baddr *ARn+ 地址产生(寻址)后, 指针的值自增: 对于16位/1位操作数, 有ARn=ARn+1 对于32位/2位操作数, 有ARn=ARn+2 Smem, Lmem, Baddr *ARn- 地址产生(寻址)后, 指针的值自减: 对于16位/1位操作数, 有ARn=ARn-1 对于32位/2位操作数, 有ARn=ARn-2 Smem, Lmem, Baddr *+ARn 寻址地址产生前, 指针的值自增: 对于16位/1位操作数, 有ARn=ARn+1 对于32位/2位操作数, 有ARn=ARn+2 Smem, Lmem, Baddr *-ARn 寻址地址产生前, 指针的值自减: 对于16位/1位操作数, 有ARn=ARn-1 对于32位/2位操作数, 有ARn=ARn-2 Smem, Lmem, Baddr *(ARn+T0/AR0) 地址产生后, 指针的值变化: 如果C54CM=0, 有ARn=ARn+T0; 如果C54CM=1, 有ARn=ARn+AR0; Smem, Lmem, Baddr *(ARn-T0/AR0) 地址产生后, 指针的值变化: 如果C54CM=0, 有ARn=ARn-T0; 如果C54CM=1, 有ARn=ARn-AR0; Smem, Lmem, Baddr 42 虚框内DSP模式特有 控制模式无
表4-9DSP模式下的AR间接寻址模式(2) (共15种) 操作数 指针修改方式 访问数据类型 ARn作为基地址不变,TO或AR0的值 *ARn(TO/ARO) 作为偏移地址,寻址ARn+TO(ARO) Smem Lmem Baddr 加T0还是AR0? 地址产生后,指针的值变化: 取决于C54CM 若C54CM-O,有ARn=ARn+T0; *(ARn+TOB/AROB Smem,Lmem,Baddr 若℃54CM=1,有ARn-ARn+AR0:- 虚框内DSP模式特有 上述加法按位倒序进位规律进行 加TO还是AR0 取决于C54C 控制模式无 地址产生后,指针的值变化: 若C54CM=O,有ARn=ARn-T0; (ARn-TOB/AROB) Smem,Lmem,Baddr 若C54CM=1,有ARn=ARn-AR0; : : 上述加法按位倒序借位规律进行 *(ARn+T1 地址产生后,指针值ARn=ARn+T1 Smem,Lmem,Baddr *(ARn-T1 地址产生后,指针值ARn=ARn-T1 Smem,Lmem,Baddr *ARn(T1) ARn基地址不变,T1值为偏移地址 Smem,Lmem,Baddr *ARn(#K16) ARn基地址不变,K16值为偏移地址 Smem,Lmem,Baddr *+ARn(#K16) 地址产生前,指针值ARn=ARn+K16Smem,Lmem,Baddr 43
表4-9 DSP模式下的AR间接寻址模式(2)(共15种) 操作数 指针修改方式 访问数据类型 *ARn(T0/AR0) ARn作为基地址不变, T0或AR0的值 作为偏移地址,寻址ARn+T0(AR0) Smem, Lmem, Baddr *(ARn+T0B/AR0B) 地址产生后, 指针的值变化: 若C54CM=0, 有ARn=ARn+T0; 若C54CM=1,有ARn=ARn+AR0; 上述加法按位倒序进位规律进行 Smem, Lmem, Baddr *(ARn-T0B/AR0B) 地址产生后, 指针的值变化: 若C54CM=0, 有ARn=ARn-T0; 若C54CM=1, 有ARn=ARn-AR0; 上述加法按位倒序借位规律进行 Smem, Lmem, Baddr *(ARn+T1 ) 地址产生后, 指针值ARn= ARn+T1 Smem, Lmem, Baddr *(ARn-T1 ) 地址产生后, 指针值ARn= ARn-T1 Smem, Lmem, Baddr *ARn(T1) ARn基地址不变,T1值为偏移地址 Smem, Lmem, Baddr *ARn(#K16) ARn基地址不变,K16值为偏移地址 Smem, Lmem, Baddr *+ARn(#K16) 地址产生前, 指针值ARn=ARn+K16 Smem, Lmem, Baddr 43 虚框内DSP模式特有 控制模式无 加T0还是AR0? 取决于C54CM 加T0还是AR0? 取决于C54CM