本帖最后由 2012CMD 于 2013-4-23 22:24 编辑  
 
 
如图,一个原来已经编译好的运行正常的程序,为了好看,我将汇编启动代码中的每一步写成标号,然后在主程序中进行调用,使用BX lr返回,可是不知为什么:仿真是OK,但实际运行时却不对啦,不知怎么回事, 
  
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 
比如我修改后有这样一段: 
    bl     disable_watch_dog  
    bl     disable_intterrupt 
    bl     cpu_clock_init 
    bl     memsetup 
    bl    initstacks 
 
    bl boot_flash_select;检查启动方式并进行相应操作 
     
    bl IRQ_setup        ;调用宏定义安装中断向量表 
     
    b    Main            ;跳转到Main函数,此处可修改为除main外任何名称 
 
;===========初始化:包括看门狗.中断.时钟.内存.堆栈======================= 
disable_watch_dog 
    ldr    r0,=WTCON        
    ldr    r1,=0x0 
    str    r1,[r0] 
    BX lr                ;返回 
 
disable_intterrupt 
    ldr    r0,=INTMSK 
    ldr    r1,=0xffffffff   
    str    r1,[r0] 
 
    ldr    r0,=INTSUBMSK 
    ldr    r1,=0x7fff         
    str    r1,[r0] 
    BX lr                ;返回 
     
cpu_clock_init 
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 
汇编就懂几句,求各位大神看看这个究竟是什么问题,不这样调用直接顺序写下去是可以的,不知为啥这样调用就不行啦 
 
 
 |