coreBugZJ

此 blog 已弃。

嵌入式上机之一,我的第一个ARM汇编程序

 1/*
 23.1.7 习题 1
 3
 4编写程序循环对 R4-R11 进行累加 8 次赋值,
 5R4-R11 起始值为1-8,每次加操作后把 R4-R11 的内容放入 SP 栈中,
 6SP 初始设置为0x800。
 7最后把R4-R11 用 LDMFD 指令清空赋值为 0。
 8
 9*/

10
11.equ  stack_top,  0x800
12.equ  loop_time,  0x8
13
14.global _start
15
16.text
17
18_start:
19    /* 设置寄存器初始值 */
20    ldr    r0, =reg_init
21    ldmia  r0!{r4-r11}
22    
23    /* 设置栈顶初始值 */
24    mov    sp, #stack_top
25    
26    /* 循环 8 次 */
27    mov    r0, #loop_time
28loop:
29            /* 累加 */
30    add    r4, r4, #0x1
31    add    r5, r5, #0x1
32    add    r6, r6, #0x1
33    add    r7, r7, #0x1
34    add    r8, r8, #0x1
35    add    r9, r9, #0x1
36    add    r10, r10, #0x1
37    add    r11, r11, #0x1
38            /* 入栈 */
39    stmfd  sp!{r4-r11}
40
41    subs    r0, r0, #0x1
42
43    bne    loop
44    
45loop_out:
46    /* R4-R11 清零 */
47    ldr    r0, =reg_fini
48    ldmfd  r0!{r4-r11}
49
50    /* 结束 */
51stop: b stop
52
53
54.ltorg
55
56    /* 寄存器的最终值 */
57reg_fini:
58    .long  00000000
59
60    /* 寄存器的初始值 */
61reg_init:
62    .long  12345678
63
64.end
65

posted on 2012-03-02 23:49 coreBugZJ 阅读(641) 评论(0)  编辑 收藏 引用 所属分类: AssembleCPUGPU课内作业


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理