- 论坛徽章:
- 0
|
ARM system-on-chip architecture一书中的汇编源码(在RVDS2.1中调试通过)之 Helloworld.s
;====================================================================================
;Angel code examples
;The following ARM code is the Angel equivalent of the "Hello World" program on page 69 in the book. Note that, although the WriteC macro is defined, it isn't used in the code as it is more efficient to retain the conditional SWI.
AREA HelloW,CODE,READONLY
SWI_ANGEL EQU 0x123456 ;SWI number for Angel semihosting
MACRO
$l Exit ;Angel SWI call to terminate execution
$l MOV r0, #0x18 ;Angel SWIreason_ReportException(0x18)
LDR r1, =0x20026 ;report ADP_Stopped_ApplicationExit
SWI SWI_ANGEL ;ARM semihosting SWI
MEND
; MACRO
;$l WriteC ;Angel SWI call to output char in [r1]
;$l MOV r0, #0x3 ;select Angel SYS_WRITEC function
; SWI SWI_ANGEL
; MEND
ENTRY ;code entry point
ADR r1, TEXT-1 ;r1->"Hello World"
MOV r0, #0x3 ;select Angel SYS_WRITEC Note!! r0
LOOP LDRB r2, [r1,#1]! ;get next byte Note!! r1
CMP r2, #0 ;check for text end
SWINE SWI_ANGEL ;if not end print... Print r1[7,0] byte
BNE LOOP ;..and loop back
Exit ;end of execution
ALIGN ;to ensure ADR works
;TEXT DATA
; = "Hello World",&a,&d,0
TEXT = "Hello World", &0a, &0d, 0
END ;end of program source
;============================================================
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/27204/showart_702360.html |
|