嵌入式开发 (2)

1、编绎执行下列汇编程序sy1.S,要在开发板上执行。程序执行后返回到调用处,使用uboot的md 0x20009000 1命令查看0x20009000处的值。理解程序如何返回的调用处的,程序调用要做哪些工作。如果省去最后mov pc,lr指令,则会出现什么结果,为什么?

.text
.global _start
_start:mov r0,#0x04mov r1,#0x03add r2,r0,r1Ldr r3,=0x20009000str r2,[r3]mov pc,lr
.end

答案:

.text
.global _start
_startmov r0,#3mov r1,#4add r2,r0,r1ldr r0,=0x20009000str r2,[r0]mov pc,lr
.end

2、将sy1程序下载到0x20007000处,编写汇编程序sy2.S,调用sy1,并能正确返回。

Tftp 20007000 sy1.binTftp 20008000 sy2.binGo 20008000

答案:

3、编写程序sy3.S,功能:开中断,禁止快速中断。
答案:

.text
.global _start
_start:mrs r0,cpsrorr r0,#0x40msr cpsr,r0mov pc,lr

4、编写程序sy4.S,读取内存地址为0x20008000处的值入r0,修改r0低8位为0x1f,其他位保持不变。并将r0的值存入内存单元0x20009000处。

.text
.global _start
_start:ldr r0,=0x20008000orr r0,#0x1fldr r1,=0x20009000str r0,[r1]mov pc,lr
.end

5、Sy5.S使用循环计算1+2+…+100 并将结果存入0x20009000处(答案:0x13ba)

.text
.global _start
_start:mov r1,#1mov r0,#0
for:cmp r1,#100bgt endforadd r0,r0,r1add r1,r1,#1b for
endfor:ldr r2,=0x20009000str r0,[r2]mov pc,lr
.end 

6、编写程序sy6.S计算 1+(1+2)+(1+2+3)+….+(1+2+…+20),并将结果存入0x20009000处,要编写子程序addn 计算1+2+…n,主程序调用该子程序最终完成计算( 结果: 0x604 )。

.text
.global _start
_start:stmfd sp!,{lr}mov R4,#0mov R5,#1
for2:cmp R5,#20bgt endfor2mov R0,R5bl addnadd R4,R4,R0add R5,R5,#1b for2
endfor2:ldr R0,=0x20009000str R4,[R0]ldmfd sp!,{lr}mov pc,lr
addn:mov R1,#0
for:cmp R0,#1blt endforadd R1,R1,R0 sub R0,R0,#1b for
endfor:mov R0,R1mov pc,lr 

7、Sy7.S使用循环计算1到100之间能被4整除的所有数的和,并将结果存入0x20009000处。(结果:0x514)

.text
.global _start
_start:
mov r0,#1
MOV r1,#0
myloop:cmp r0,#100bgt exittst r0,#0X3addeq r1,r1,r0add r0,r0,#1b myloop
exit:ldr r0,=0x20009000str r1,[r0]mov pc,lr 

8、编写程序sy8.S, 将内存0x20008000开始的5个数据(每个数据4个字节)复制到内存0x20009000这个位置。(要求使用ldm,stm指令)

.text
.global _start
_start:stmfd sp!,{r0,r1-r4,r5}ldr r0,=0x20008000ldmfd r0! ,{r0,r1-r4,r5}ldr r0,=0x20009000stmea r0!, {r0,r1-r4,r5}ldmfd sp!,{r0,r1-r4,r5}mov pc,lr
.end 

ARM:嵌入式系统之ARM指令相关推荐

  1. ARM嵌入式系统malloc的实现(C源码)

    在ARM嵌入式系统实现malloc内存分配机制. 在ARM cpu上验证通过. ps:也可在pc ubuntu linux进行验证 #include "include/lib_replace ...

  2. 8、ARM嵌入式系统:UART初始化

    一.UART概述 百度上UART的定义:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART.它将要传输的资料在串行通信与并行 ...

  3. 7、ARM嵌入式系统:LCD/数码管/OLED初始化

    一.LCD/数码管模块在板子上的位置 LCD和数码管在板子上都分别有一个插槽. 二.LCD/数码管初始化代码 //SMG init void SMG_Init() { /* PORTB and POR ...

  4. 嵌入式系统Linux Arm安装net6运行环境

    嵌入式系统Linux Arm安装net6运行环境 1.环境介绍 2.详细步骤 2.1 根据手册进行设备通电,系统启动. 2.2 网络连接及设置本机IP 2.2 使用Telnet访问Arm系统 2.3 ...

  5. 网络上所谓的《ARM嵌入式系统入门最好的文章》

    一 首先说说ARM的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位. 广义的嵌入式无非几种:传统的什么51.AVR.PIC称做嵌入式微控制器:ARM是嵌入式微处理器 ...

  6. ARM嵌入式系统开发:软件设计与优化--第二章ARM处理器基础

    注:本文资料全部来源于网络或书籍,同时加上个人理解.若有侵权,告知即删.若有错误,留言商讨. 1.寄存器: 总共有37个寄存器,最多可以有17个活动寄存器(16个数据寄存器,2个状态寄存器:CPSR和 ...

  7. [ARM嵌入式系统开发]第一章之嵌入式系统的软硬件

    本章的最后,通过描述ARM为核心的嵌入式系统,来介绍了嵌入式系统的软件和硬件构成和结构.这里根据这部分的介绍以及其他的文章,描述下通用的嵌入式系统的软件和硬件.     首先来说下硬件,书中说,包含有 ...

  8. 嵌入式:ARM嵌入式系统开发流程概述

    文章目录 嵌入式开发的具体过程 开发流程图 嵌入式软件开发环境 交叉开发环境 远程调试结构图 嵌入式应用软件开发的基本流程 软件模拟环境 目标板与评估板 嵌入式软件开发的可移植性和可重用性 嵌入式开发 ...

  9. 移植tcpdump到ARM嵌入式系统

    移植tcpdump到嵌入式系统 tcpdump和libpcap的下载链接:Home | TCPDUMP & LIBPCAP 百度网盘下载链接:https://pan.baidu.com/s/1 ...

最新文章

  1. UI设计培训:UI构思创意技巧和方法
  2. Java笔记-ReadWriteLock与Condition的使用
  3. pandas读写csv
  4. 大数据之-Hadoop源码编译_编译hadoop源码前_需要准备的软件_以及编译步骤---大数据之hadoop工作笔记0045
  5. Haxe东游记(上)part1.5:roadmap
  6. visual studio可以开发app吗_郑州app开发价格是怎么定得呢?预约理发app好做吗
  7. 我的最爱Lambda演算——开篇
  8. 从小白创建自己的CSND
  9. android投屏小米盒子,Mibox S 小米盒子国际版:可能是 2019 新年最值的原生 AndroidTV...
  10. 百度地图javascriptAPI点击地图得到坐标(拾取坐标)
  11. 两个月面试30+公司,我得到了这些经验教训
  12. 【面试题】15.项目相关
  13. [转] 一个女生写给男朋友的!!!~~有点现实、冷静的语言,却让人感觉很温暖!!!
  14. Spring Boot + Spring-Security实现前后端分离双重身份认证初学者指南(手机号密码JWT + 短信验证码)
  15. 【DBA100人】Payso张耀辉:学材料专业出身的他转身做了“码农”
  16. 【luogu P2071 座位安排】 题解
  17. Python实现桌面宠物
  18. netsh - Windows自带的端口转发/端口映射工具
  19. 2008服务器注销设置,windows-server-2008 – 终端服务器在5分钟后注销用户
  20. 越权漏洞(IDOR)测试技巧

热门文章

  1. 目标检测与YOLO算法(用Python实现目标检测)
  2. ggplot2-为可视化建模2
  3. 无法打开到主机的连接。 在端口 23: 连接失败
  4. YOLOv7默默更新了Anchor-Free | 无痛再涨1.4mAP
  5. 超融合走向红海,下一代超融合是新蓝海?
  6. 实现广电宽带电视网关单线复用IPTV的设置
  7. 超详细的C++冒泡排序(升降)的两种实现方式
  8. [黑群晖]DSM7.1 ds3617xs 志强e3 1265lv3 b85保姆级安装教程
  9. 自媒体的推广方式有哪些(自媒体推广的10种方法)
  10. LVS均衡负载(三) LVS后端服务健康状态检查