1,语句(段)选择执行,实例
MOV R0,#1
[ {false}
MOV R0,#2
|
MOV R0,#3
上面的语句执行 MOV R0,#3,不执行MOV R0,#2。]
如果将{false}改成{true}
上面的语句执行 MOV R0,#2,不执行MOV R0,#3。
说明:{false},{true}是汇编器内置的boolean常量。
2,内存映射,实例
MAP,FIELD指示符具体格式参见汇编助手手册。
MAP与^含义相同。
FIELD与#含义相同。
STACK_TOP EQU 0x203000
^ STACK_TOP
FIELD 4;保留4字节,向上增长。
GG # 4
MAP (STACK_TOP-0X100)
YY # 4
假设STATCK_TOP的地址为0x203000,则GG的地址为0x203004,
YY的地址为0x202F00。
程序对GG的引用,就是对地址0x203004的引用。
//测试源代码:start.s
STACK_TOP EQU 0x203000
STARTAREA RESET, CODE, READONLY
ARM
ENTRY
MOV R0,#1
[ {false}
MOV R0,#2
|
MOV R0,#3
]
LDR R0,=GG
LDR R1,=0X1
STR R1,[R0]
LDR R0,=YY
STR R1,[R0]
B .
AREA MYDATA,DATA,READWRITE
^ STACK_TOP
FIELD 4
GG# 4
MAP (STACK_TOP-0X100)
YY# 4
END