第四章 ARM 程序设计基础 1 汇编语言程序示例 Example1/Example1.DOC ; 例一:数据块拷贝,利用LDR/STR指令 ; 项目名:Example1.mcp,文件名:Example1.s —————————————————————————————————— AREA Block, CODE, READONLY num EQU 10 ENTRY start LDR R0, =src LDR R1, =dst MOV R2, #num blockcopy LDR R3, [R0], #4 STR R3, [R1], #4 SUBS R2, R2, #1 BNE blockcopy B . AREA BlockData, DATA, READWRITE src DCD 0,1,2,3,4,5,6,7,8,9 dst SPACE 10*4 END Example2/Example2.DOC ; 例二:数据块拷贝,利用LDM/STM指令 ; 项目名:Example2.mcp,文件名:Example2.s —————————————————————————————————— AREA Block, CODE, READONLY num EQU 20 ENTRY start LDR R0, =src 第四章 ARM 程序设计基础 2 LDR R1, =dst MOV R2, #num MOV SP, #0x400 blockcopy MOVS R3, R2, LSR #3 BEQ copywords STMFD SP!, {R4-R11} octcopy LDMIA R0!, {R4-R11} STMIA R1!, {R4-R11} SUBS R3, R3, #1 BNE octcopy LDMFD SP!, {R4-R11} copywords ANDS R2, R2, #7 BEQ stop wordcopy LDR R3, [R0], #4 STR R3, [R1], #4 SUBS R2, R2, #1 BNE wordcopy stop B . AREA BlockData, DATA, READWRITE src DCD 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 dst SPACE 20*4 END Example3/Example3.DOC ;例三:ADR伪指令 ;项目名:Example3.mcp,文件名:Example3.s ——————————————————————————————————————— 第四章 ARM 程序设计基础 3 AREA adrlabel1, CODE, READONLY ENTRY start BL func B . LTORG func ADR R0, start ADR R1, DataArea ;ADR R2, DataArea+4300 ADRL R3, DataArea+4300 MOV PC, LR DataArea SPACE 8000 END Example4/Example4.DOC ;例四:LDR伪指令 ;项目名:Example4.mcp,文件名:Example4.s ——————————————————————————————————————— AREA LDRlabel1, CODE, READONLY ENTRY start BL func1 BL func2 B . func1 LDR R0, =start LDR R1, =Darea+12 LDR R2, =Darea+6...