- SinoMCU_FAE_DN
-
32 发帖3 回复291 积分
- 私信他 + 关注
汇编制表方法:
1、
... movar tbl_data call TBL ... TBL: addra PCL retai 0x63 retai 0xdb retai 0x17 retai 0x48 retai 0xC2 retai 0xE32、
RISC汇编指令实现表格定义的最基本指令是“RETAI xx”,表格中的每一个字节数据都以指令“RETAI”的形式出现。
若表格较大,就需要很多“RETAI”指令,比较麻烦,可读性也差。
这时我们可以用“dt”伪指令替代“RETAI”实现很多数据的表格定义。
如例:
dt 0 ; RETAI 0
dt 1, 2, ’3’ ; RETAI 1
; RETAI 2
; RETAI 0x33 (’3’的ASCII 码)
C制表方法:
1、在RAM中制表
uchar Tab[7]={4,2,1,6,5,3,7};
2、在ROM中制表
const uchar Tab_2[7]={4,2,1,6,5,3,7};
3、在指定ROM(0x17)中制表
const uchar __at 0x17 Tab_2[7]={4,2,1,6,5,3,7};
回复于 2020-03-23 3#
MC30系列是采用RTEAI 立即数 的形式 进行查表,如果是MC32系列,则可以采用 INDF3进行间接询址,这样可以一次查16位的数据,分别加载在HIBYTE, ACC里。
例如,要ROM区 0x0120地址的数据 0xaa55
movai 0x20
movra FSR0
movai 0x01
movra FSR1
movar INDF3 ;IND3是一个虚拟地址,专门用于寻址ROM地址
;执行之后结果 HIBYTE=0xaa, ACC=0x55
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖