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

再次问X寄存器的问题,上次的还没解决

再次问X寄存器的问题,上次的还没解决

STAA ,X在C中插入汇编编译不能通过
STAA A,X能通过编译
但是这样达不到STAA,X的效果了,即X指向的内存单元的值没被改变,而是X中的地址加A中的偏移量构成新的地址,并在这个新的地址存放A中偏移量的值,如果我要实现STAA ,X的功能应该怎么做?
做一个最简单的project贴出来看看。
海纳百川  有容乃大
#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
可以看到STAA,X和STAA A,X的不同效果
用“STAA 0,X”即可。这可能是编译器的一个小BUG。
海纳百川  有容乃大
知道了,谢谢
返回列表