请教大虾,帮我看一个小的汇编程序,谢谢了!!!
SYS_WRITEC EQU &3AREA STR_OUT,CODE,READONLY
ENTRY
START MOV SP,#0xD000
MOV R1,#0xB000
ADR R2,TEXT
BL STROUT
MOV R0,#0x18
LDR R1,=0x20026
SWI 0x123456
STROUT
STMFD SP!,{R0-R3,LR}
CHROUT LDRB R3,,#1
CMP R3,#0
STR R3,
MOV R0,#SYS_WRITEC
SWINE 0x123456
BNE CHROUT
LDMFD SP!,{R0-R3,PC}
LTORG
TEXT DCB "Hello World!",0x0a,0x0d,0x0
END
现在我不明白这句 SWINE 0x123456是怎么执行的,这句第一次执行完的结果是在AXD的Console中显示“H“字符,为什么啊?
ps:START段中的SWI 0x123456的作用是什么啊,执行的话的结果是什么啊? 表示R3不为0时执行SWI指令,SWINE = SWI if not equal
SWI 0x123456表示请求编号为0x123456的系统服务,执行后会触发SVC异常
建议学习一下ARM的基础知识
页:
[1]