首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于查表

关于查表

请问TBL查表指令的索引寻址范围不能大于16吗?
注册不容易!
如果用A、B或D寄存器的值做偏移量,应该可以得到更大的寻址范围。
海纳百川  有容乃大
为什么我用A寄存器的值做偏移量结果就不对了呢
注册不容易!
程序中寄存器A的值是否改变?
海纳百川  有容乃大
值改变了,可是结果不对,不知道为什么
注册不容易!
把你的程序贴出来看看?
海纳百川  有容乃大
明白了,我的表里是字数据,得把A寄存器里的值乘2再作为偏移地址,不过这样的话A寄存器的偏移地址必须小于128,否则乘2会溢出,可是我想寻址偏移量256的表该怎么办?
注册不容易!
用寄存器D作偏址。
海纳百川  有容乃大
那样不是会改寄存器B了吗?
注册不容易!
是的。可以先压栈保存一下,然后再释放。
海纳百川  有容乃大
没有明白,不是得先把B寄存器设置好吗?如果压栈再出栈的话还是会把B的值改为原来的值啊,版主能不能再解释一下呢?
这是我的程序
asm{
LDD #33639
ASLA
LDX $3002
ETBL A,X
}
注册不容易!
对,用TBL或ETBL时不能再用B寄存器进行寻址了。应该用查表的起始地址直接寻址,而不能采用大于128的偏址寻址。这应该是可以做到的。
海纳百川  有容乃大
返回列表