标题:
请教一个关于X寄存器的问题
[打印本页]
作者:
cArlIcon
时间:
2007-3-29 15:55
标题:
请教一个关于X寄存器的问题
所用单片机为MC9S12DG128B
我把有效地址放在X寄存器中,我要怎要操作才能使X寄存器作为指针那样使用?
作者:
seuafu2005
时间:
2007-3-29 17:05
用汇编的话用 LEAX语句
作者:
cArlIcon
时间:
2007-3-29 17:33
LEAX是把有效地址放在X寄存器中,那接下来我想把某个寄存器中的值放到X寄存器所指向的内存单元应该怎么做?
作者:
strongchen
时间:
2007-3-30 09:57
STAA ,X
STAB ,X
STD ,X
作者:
cArlIcon
时间:
2007-3-30 10:26
在单独的汇编或者汇编作为C的子程序中使用没问题,但是在混编即在C语言中插入汇编中用这个会报错,编译过不了啊(C12087:Not a valid operand),应该如何解决?是否需要把这段插入的汇编做成子程序调用?
作者:
strongchen
时间:
2007-3-30 11:01
应该不会呵,是不是格式的问题?
作者:
cArlIcon
时间:
2007-3-30 11:12
#pragma CODE_SEG NON_BANKED //A/D中断
interrupt 22 void ADC_ISR()
{
asm{
LDAA ATD0DR0L; //把ATD0DR0L寄存器的值放到寄存器A中
STAA ,X //把A中的值放到X所指向内存单元
CPX #$1FFF; //判断X中的地址是否到了1FFF
BNE ad; //未到则跳转
LDX #$0502; //给X初赋值
ad:INX //X自加1
}
}
#pragma CODE_SEG DEFAULT
作者:
strongchen
时间:
2007-3-30 14:01
STAA ,X后少了一个分号?
作者:
cArlIcon
时间:
2007-3-30 16:32
不是少了个分号,这样写就通过了
STAA A,X
作者:
cArlIcon
时间:
2007-3-30 17:49
但是这样好像达不到STAA,X的效果了,即X指向的内存单元的值没被改变
作者:
strongchen
时间:
2007-4-2 10:09
X的值是怎么传递给中断的?你的主程序是C写的,并不能保证X的值保持不变。
作者:
cArlIcon
时间:
2007-4-2 12:05
程序以放在我的另一个相关问题中
作者:
strongchen
时间:
2007-4-2 12:07
真要这样用,这样即可:
STAA 0,X
作者:
cArlIcon
时间:
2007-4-2 22:19
知道了
谢谢
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0