Chinaunix首页 | 论坛 | 博客
  • 博客访问: 280072
  • 博文数量: 17
  • 博客积分: 2096
  • 博客等级: 大尉
  • 技术积分: 535
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-28 18:55
文章分类

全部博文(17)

文章存档

2010年(16)

2008年(5)

分类: 嵌入式

2008-05-23 14:13:21

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 is not 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 r0
LOOP LDRB r2, [r1,#1]! ;get next byte 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
;============================================================

阅读(1183) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~