我本来是想实验一下里面的宏展开的情况,可是ads里面编译不过,郁闷?<br />;汇编指令实验 <br />WTCON EQU 0x4a000008 ;Interrupt mask control<br />INTMSK EQU 0x4a000008 ;Interrupt mask control<br />SVCMODE EQU 0x13<br />ABORTMODE EQU 0x17<br />UNDEFMODE EQU 0x1B<br />MODEMASK EQU 0x1F<br />I_BIT EQU 0x80<br />F_BIT EQU 0x40<br />T_BIT EQU 0x20<br />NOINT EQU 0xc0<br /><br />AREA Init,CODE,READONLY ;该伪指令定义了一个代码段段名为Init属性只读<br /> ENTRY ;程序的入口点标识<br />ResetEntry<br /> b SYS_RST_HANDLER<br /> b HandlerUndef ;handler for Undefined mode<br /> b HandlerSWI ;handler for SWI interrupt<br /> <br /> MACRO<br /> $HandlerLabel HANDLER $HandleLabel<br /> $HandlerLabel<br /> sub sp,sp,#4 ;decrement sp(to store jump address)<br /> stmfd sp!,{r0} ;PUSH the work register to stack<br /> ldr r0,=$HandleLabel;load the address of HandleXXX to r0<br /> ldr r0,[r0] ;load the contents<br /> str r0,[sp,#4] ;store the contents(ISR)HandleXXX <br /> ldmfd sp!,{r0,pc} ;POP the work register and pc<br /> MEND<br /><br />SYS_RST_HANDLER<br /> mrs r0, cpsr ;enter svc mode and disable irq,fiq<br /> bic r0, r0, #MODEMASK<br /> orr r0, r0, #(SVCMODE :OR: I_BIT :OR: F_BIT)<br /> msr cpsr_c, r0<br /> <br /> LTORG ;声明一个数据缓冲池的开始<br /> HandlerUndef HANDLER HandleUndef<br /> HandlerSWI HANDLER HandleSWI<br /><br /> ^(0x800)<br /> HandleUndef #4<br /> HandleSWI # 4 <br /> <br /> END ;程序结束符<br />请教上面的有什么问题? |
|