Board logo

标题: 再次问X寄存器的问题,上次的还没解决 [打印本页]

作者: cArlIcon    时间: 2007-4-2 09:54     标题: 再次问X寄存器的问题,上次的还没解决

STAA ,X在C中插入汇编编译不能通过
STAA A,X能通过编译
但是这样达不到STAA,X的效果了,即X指向的内存单元的值没被改变,而是X中的地址加A中的偏移量构成新的地址,并在这个新的地址存放A中偏移量的值,如果我要实现STAA ,X的功能应该怎么做?
作者: strongchen    时间: 2007-4-2 09:59

做一个最简单的project贴出来看看。
作者: cArlIcon    时间: 2007-4-2 10:09

#include /* common defines and macros */
#include /* derivative information */

#include "main_asm.h" /* interface to the assembly module */

#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

void main(void) {
/* put your own code here */
EnableInterrupts;
asm_main(); /* call the assembly function */
for(;;) {
asm{

LDAA #0x02;
STAA A,X;
CPX #$050C;
BNE ad;
LDX #$0502;
ad:INX

}} /* wait forever */
}
以下是asm_main中的内容

MY_EXTENDED_RAM: SECTION
ORG $0502


; Insert here your data definition. For demonstration, temp_byte is used.
TT ds.b 10

; code section
MyCode: SECTION
; this assembly routine is called by the C/C++ application
asm_main:
CLI ; enable interrupts

MOVB #1,TT; just some demonstration code
LDAA #0
TFR A,X
LEAX TT,X
LDAA #$f8;
STAA ,X

NOP ; Insert here you own code

RTC ; return to caller

作者: cArlIcon    时间: 2007-4-2 10:11

可以看到STAA,X和STAA A,X的不同效果
作者: strongchen    时间: 2007-4-2 12:12

用“STAA 0,X”即可。这可能是编译器的一个小BUG。
作者: cArlIcon    时间: 2007-4-2 22:19

知道了,谢谢




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