MSR CPSR_C,R0 MOV PC,LR
程序清单4.4禁能IRQ中断 DISABLE_IRQ
MRS R0 CPSR
ORR R0,R0,#0x80 MSR CPSR_C,R0 MOV PC,LR
程序清单4.5堆栈指令初始化 INTSTACK
WOV R0,LR ;保存返回地址 ;设置管理模式堆栈 MSR CPSR_C,#0xD3 LDR SP,stacksvc ;设置中断模式堆栈
MSR CPSR_C,#0xD2 LDR SP,Stacklrq ……
程序清单4.6小范围地址的加载 ……
ADR R0,DISP_TAB ;加载转换表地址
LDRB R1,[R0,R2] ;使用R2作为参数,进行查表 …… DISP_TAB
DCB 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90 程序清单4.7中等范围地址的加载 ……
ADR LR,RETURNI ADRL R1,Thumb_sub+1 BX R1 RETURNI …… CODE 16 Thumb_sub
MOV R1,#10 ……
程序清单4.8加载32位立即数 ……
LDR R0,=IOPIN ;加载GPIO的寄存器IOPIN的地址 LDR R1,[R0] ;读取IOPIN寄存器的值 ……
LDR R0,=IOSET
LDR R1,=0x00500500
STR R1,[R0] ;IOSET=0x00500500 ……
程序清单4.9软件延时 …… DELAYI NOP NOP
NOP
SUBS R1,R1,#1 BNE DELAYI ……
程序清单4.10 ARM到Thumb的状态切换 ;文件名:TEST8.S
;功能:使用BX指令切换处理器状态 ;说明:使用ARMulate软件仿真调试 AREA Example8,CODE,READONLY ENTRY
CODE32
ARM_CODE ADR R0,THUMB_CODE+1
BX R0 ;跳转并切换处理器状态 CODE16 THUMB_CODE
MOV R0,#10 ;R0=10 MOV R1,#20 ;R1=20 ADD R0,R1 ;R0=R0+R1 B
END
相关推荐: