请教个问题:为什么是用'MOV + 字寄存器'指令间接读写STC32的XFR
请教个问题:在学习mcu STC32的存储空间映射时,突然有个问题想不通了:
已知,STC32的XFR位于XDATA区域的7E:0000H ~ 7E:FFFFH范围,扩展RAM位于01:0000H ~ 01:1FFFH范围,访问扩展RAM用 ‘MOVX +@Ri’或 'MOVX + @DPTR'等形式间接访问,而同为XDATA区域的XFR们用的是'MOV+@DRk'间接访问。
问题:
XFR为什么用的是'MOV+@DRk'形式访问,而不是'MOVX' 形式?
访问扩展RAM也可用'MOV+@DRk'间接访问,XFR也可用MOVX指令,只不过效率太低,要先设置DPXL为7EH 查看80251的datasheet, MOV @DRk , Rm的指令周期是4个时钟。STC32给出的是1个个时钟。 80251的datasheet, MOV Rm , dir8(i/o) 的读IO指令的执行周期是2+1,共3个时钟周期。
STC32的这个指令周期是1个时钟周期。经过反复验证确认,确实是1个时钟周期。 社区闲人 发表于 2024-3-11 09:50
查看80251的datasheet, MOV @DRk , Rm的指令周期是4个时钟。STC32给出的是1个个时钟。 ...
STC的MOV@DRk , Rm指令周期看DRk指向的位置,如果是EDATA区域1个时钟,其他区域3个时钟 谢谢楼上网友的提醒。 zxcv1973 发表于 2024-3-10 23:47
访问扩展RAM也可用'MOV+@DRk'间接访问,XFR也可用MOVX指令,只不过效率太低,要先设置DPXL为7EH ...
学习了,思路一下子打开了
感谢指导 感谢楼上各位的指导,不胜感激。
祝各位,工作顺利! zxcv1973 发表于 2024-3-10 23:47
访问扩展RAM也可用'MOV+@DRk'间接访问,XFR也可用MOVX指令,只不过效率太低,要先设置DPXL为7EH ...
今天验证了一下,是这样测试读的:
MOV DPXL, #7EH
MOV DPTR, #WORD0 CHIPID7
MOVX A, @DPTRbuild 没问题,结果也读取正确{:4_250:}
想多问下,从哪里才能获取到这样的知识
BeHappy 发表于 2024-3-12 22:41
今天验证了一下,是这样测试读的:
build 没问题,结果也读取正确
想多问下,从哪里才能获取到这样的知识 ...
看何宾老师那个视频
页:
[1]