Board logo

标题: 关于查表 [打印本页]

作者: xueqixuan    时间: 2008-3-7 01:34     标题: 关于查表

请问TBL查表指令的索引寻址范围不能大于16吗?
作者: strongchen    时间: 2008-3-7 10:11

如果用A、B或D寄存器的值做偏移量,应该可以得到更大的寻址范围。
作者: xueqixuan    时间: 2008-3-7 11:14

为什么我用A寄存器的值做偏移量结果就不对了呢
作者: strongchen    时间: 2008-3-7 11:40

程序中寄存器A的值是否改变?
作者: xueqixuan    时间: 2008-3-7 15:07

值改变了,可是结果不对,不知道为什么
作者: strongchen    时间: 2008-3-7 15:38

把你的程序贴出来看看?
作者: xueqixuan    时间: 2008-3-7 15:46

明白了,我的表里是字数据,得把A寄存器里的值乘2再作为偏移地址,不过这样的话A寄存器的偏移地址必须小于128,否则乘2会溢出,可是我想寻址偏移量256的表该怎么办?
作者: strongchen    时间: 2008-3-7 15:49

用寄存器D作偏址。
作者: xueqixuan    时间: 2008-3-7 16:14

那样不是会改寄存器B了吗?
作者: strongchen    时间: 2008-3-7 16:20

是的。可以先压栈保存一下,然后再释放。
作者: xueqixuan    时间: 2008-3-7 16:34

没有明白,不是得先把B寄存器设置好吗?如果压栈再出栈的话还是会把B的值改为原来的值啊,版主能不能再解释一下呢?
这是我的程序
asm{
LDD #33639
ASLA
LDX $3002
ETBL A,X
}
作者: strongchen    时间: 2008-3-10 11:25

对,用TBL或ETBL时不能再用B寄存器进行寻址了。应该用查表的起始地址直接寻址,而不能采用大于128的偏址寻址。这应该是可以做到的。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0