[官方资料] 各种制表查表的方法
1288 查看
3 回复
 楼主 | 发布于 2019-11-20 | 只看楼主
分享到:

汇编制表方法:

1、

 ...
            movar  tbl_data
            call   TBL
            ...
TBL:
            addra   PCL
       
    retai   0x63
            retai   0xdb
            retai   0x17
            retai   0x48
            retai   0xC2
            retai   0xE3
2、


        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};

(0 ) (0 )
回复 举报

回复于 2020-03-05 沙发

谢谢分享
(0 )
评论 (0) 举报

回复于 2020-03-21 2#

感谢分享
(0 )
评论 (0) 举报

回复于 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

(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部