嵌入式系统原理及应用题目要求+程序代码
《嵌入式系统原理与应用》实验报告01-GPIO输出控制实验

硬件:PC机;
软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。
3、实验内容与步骤
实验内容:
LPC2138外接3个按键,4个LED灯,实现不同流水灯的效果。
4、实验结果与数据处理
1.实验连接图
图1 实验原理图
2.程序代码
#include "config.h"
图3.3:模式3下蓝灯亮起
图3.4:模式3下绿灯亮起
5、分析与讨论
在这一次实验中,我学会了通过教程下载并安装了ADS和Proteus软件,同时根据录播,一步一步地熟悉两个软件的时候,同时也完成了利用仿真实验模拟了GPIO输出控制。初步掌握并理解了Proteus仿真软件的使用,对ARM7有了进一步的了解,为之后的学习打下了基础。
}
void LED_3(void)
{
IO0SET = 0x0001;
delay(1000);
IO0CLR = 0x0001;
IO0SET = 0x0040;
delay(1000);
IO0CLR = 0x0040;
IO0SET = 0x0008;
delay(1000);
IO0CLR = 0x0008;
delay(1000);
IO0CLR = 0x0008;
IO0SET = 0x0040;
delay(1000);
IO0CLR = 0x0040;
IO0SET = 0x0200;
delay(1000);
IO0CLR = 0x0200;
}
void LED_2(void)
{
IO0SET = 0x0200;
嵌入式系统的原理及应用.ppt

VIVI 第2阶段介绍
第5步:mtd_dev_init()
mtd_dev_init()用来扫描所使用的NAND Flash的型号,构造 MTD设备,即构造一个mtd_info的数据结构。对于本开发板,它 直接调用mtd_init(),mtd_init又调用smc_init(),此函数在 drivers/mtd/maps/s3c2410_flash.c中。
嵌入式系统的原理及应用
3.3 嵌入式Linux系统的开发
编写BootLoader; 裁减嵌入式Linux内核; 裁减嵌入式Linux文件系统; 烧写BootLoader到目标板; 烧写嵌入式Linux内核和文件系统到目标板。
2
3.3.1 编写BootLoader
一个嵌入式Linux系统从软件角度看可以分为四个层次:
怎样编写BootLoader程序?
初学者最好采用拿来主义,在别人的BootLoader源代码基础上 进行修改、编译、调试。
19
18
VIVI 第2阶段介绍
第7步:misc()和init_builtin_cmds()
这两个函数都是简单地调用add_command函数,给一些命令 增加相应的处理函数。在vivi启动后,可以进去操作界面,这些命 令,就是供用户使用的。
第8步:boot_or_vivi()
此函数根据情况,或者启动“vivi_shell”,进入与用户进行交 互的界面,或者直接启动linux内核。
9
head.S通常完成如下几件事情:
(5) 检查是否从掉电模式唤醒,若是,则调用WakeupStart函数进 行处理——这是一段没用上的代码,vivi不可能进入掉电模式; (6) 点亮所有LED (7) 初始化UART0:
嵌入式系统原理与设计考试试卷

嵌入式系统原理与设计考试试卷(答案见尾页)一、选择题1. 嵌入式系统的核心是什么?A. 中央处理器(CPU)B. 内存(RAM和ROM)C. 输入输出设备D. 操作系统和软件2. 嵌入式系统的基本工作原理是什么?A. 单任务处理B. 多任务并发处理C. 硬件和软件协同工作D. 顺序执行指令3. 嵌入式系统通常用于哪些领域?A. 个人电脑B. 智能手机C. 游戏机D. 以上都是4. 在嵌入式系统中,什么是实时操作系统(RTOS)?A. 一种操作系统,具有严格的时间限制和多任务处理能力B. 一种操作系统,专为嵌入式系统设计,具有高效的内存管理C. 一种操作系统,支持多种硬件平台D. 一种编程语言5. 嵌入式系统设计中,硬件和软件的划分依据是什么?A. 功能B. 性能C. 可维护性6. 在嵌入式系统开发过程中,以下哪个阶段是必不可少的?A. 系统分析B. 系统设计C. 系统实现D. 系统测试7. 嵌入式系统中的程序员需要具备哪些技能?A. 编程语言知识B. 计算机体系结构知识C. 操作系统知识D. 以上都是8. 嵌入式系统的可靠性是指什么?A. 系统在一定时间内无故障运行的能力B. 系统在特定条件下的稳定性C. 系统在长时间运行后的性能保持D. 系统的可扩展性9. 在嵌入式系统开发中,常使用的开发工具包括哪些?A. 集成开发环境(IDE)B. 仿真器C. 调试器D. 以上都是10. 嵌入式系统未来的发展趋势是什么?A. 更高的性能B. 更多的智能化功能C. 更广泛的应用领域D. 以上都是11. 嵌入式系统的特点是?B. 功能单一C. 硬件和软件紧密相关D. 可扩展性差12. 嵌入式系统通常工作在什么频率下?A. 低频B. 中频C. 高频D. 超高频13. 在嵌入式系统中,以下哪个不是常用的操作系统?A. LinuxB. Windows CEC. VxWorksD. Android14. 嵌入式系统设计中,通常会考虑哪些因素?A. 性能B. 成本C. 易用性D. 扩展性15. 嵌入式系统中的任务调度通常基于什么原则?A. 先来先服务B. 最短作业优先C. 时间片轮转D. 优先级16. 在嵌入式系统中,硬件抽象层(HAL)的主要作用是什么?A. 提供设备驱动程序B. 实现操作系统内核C. 抽象硬件逻辑D. 进行系统编程17. 嵌入式系统中的实时性是指什么?A. 系统响应时间短B. 系统错误率低C. 系统资源利用率高D. 系统可维护性好18. 在嵌入式系统开发过程中,以下哪个阶段是硬件平台搭建的关键?A. 系统设计B. 集成测试C. 硬件平台搭建D. 软件开发19. 嵌入式系统与传统计算机的根本区别是什么?A. 微型化B. 便携性C. 嵌入式软件D. 可嵌入性20. 嵌入式系统的基本操作系统中,通常不包括以下哪个组件?A. 内存管理器B. 文件系统C. 设备驱动程序D. 用户应用程序21. 在嵌入式系统中,以下哪种编程语言不是其主要编程语言?A. CB. C++C. JavaD. Assembly22. 嵌入式系统设计中,硬件和软件的紧密关系体现在哪一方面?A. 硬件和软件可以互换B. 硬件和软件必须完全相同C. 硬件和软件需要协同工作以实现特定功能D. 硬件总是比软件复杂23. 下列哪个不是嵌入式系统的特点?A. 低功耗B. 高性能C. 可定制性D. 不可靠24. 在嵌入式系统的开发过程中,以下哪个阶段不是必需的?A. 系统需求分析B. 硬件设计C. 软件开发D. 性能测试25. 在嵌入式系统的调试过程中,以下哪种工具不是常用的?A. 逻辑分析仪B. 示波器C. 编程器D. 调试器26. 嵌入式系统设计中,通常会考虑哪些因素来优化系统性能?A. 硬件性能B. 软件效率C. 系统功耗D. 所有以上因素27. 在嵌入式系统的数据采集和处理中,以下哪种设备不是常用的数据输入设备?A. 键盘B. 鼠标C. 数字相机D. 触摸屏28. 嵌入式系统的基本操作系统中,通常不包括以下哪项功能?A. 进程管理B. 文件管理C. 网络通信D. 安全加密29. 嵌入式系统通常用于控制哪些类型的设备?A. 大型机器B. 小型家电C. 数码产品D. 大型工业设备30. 在嵌入式系统设计中,通常优先考虑的是:A. 性能B. 成本C. 功能性D. 可靠性31. 下列哪个不是嵌入式系统常用的编程语言?A. C语言B. C++C. JavaD. Python32. 在嵌入式系统开发中,硬件通常包括以下哪项?A. 软件B. 外围设备C. 操作系统D. 应用程序33. 嵌入式系统的生命周期包括哪些阶段?A. 设计、开发、测试、部署、维护B. 设计、编码、测试、部署、维护C. 设计、开发、测试、部署、更新D. 设计、编码、测试、部署、优化34. 在嵌入式系统设计中,如何确保系统的可靠性和稳定性?A. 使用高质量的组件B. 提供充分的文档和注释C. 进行彻底的测试和验证D. 选择成熟的开源软件35. 嵌入式系统在现代社会中扮演着什么角色?A. 主要用于大型企业和工业控制B. 主要用于个人计算机和游戏机C. 主要用于消费电子产品和智能家居D. 主要用于军事和航空航天36. 嵌入式系统的硬件通常包括哪些组件?A. CPU、内存、I/O设备B. 仅CPU和内存C. 仅内存和I/O设备D. 仅CPU和I/O设备37. 嵌入式系统的实时性是指什么?A. 系统能够立即响应外部事件B. 系统能够在预定的时间内响应外部事件C. 系统响应时间的长短无关紧要D. 系统不支持多任务处理38. 在嵌入式系统中,通常使用哪种编程语言?A. 汇编语言B. C语言C. JavaD. Python39. 嵌入式系统通常用于哪个领域?A. 云计算B. 大数据C. 物联网(IoT)D. 移动应用40. 嵌入式系统的开发过程通常包括哪些阶段?A. 设计、编码、测试、部署B. 编码、测试、设计、部署C. 测试、设计、编码、部署D. 部署、设计、编码、测试41. 在嵌入式系统的调试过程中,常用的工具有哪些?A. 调试器B. 代码编辑器C. 版本控制系统D. 图形用户界面(GUI)工具42. 在嵌入式系统的安全性方面,通常关注哪些问题?A. 系统的物理安全B. 系统的软件安全C. 系统的网络安全D. 系统的电源安全二、问答题1. 什么是嵌入式系统?请简要描述其特点。
嵌入式系统原理与应用课程教学大纲

《嵌入式系统原理与应用》课程教学大纲一、课程基本信息课程代码:230449课程名称:嵌入式系统原理与应用英文名称:Principle and Application of Embedded System课程类别:专业课学时:72(其中实验18学时)学分:3.5适用对象: 计算机科学与技术业考核方式:考试(平时成绩占总评成绩的30%,期末考试成绩占70%)先修课程:计算机组成原理、操作系统、编译原理二、课程简介嵌入式系统原理与应用是计算机科学技术专业的一门专业课,讲述嵌入式系统的基本理论、原理。
本课程是一门既与硬件关系紧密,又与嵌入式操作系统、嵌入式软件关系十分紧密课程。
它围绕目前流行的32位ARM处理器和源码开放的Linux操作系统,讲述嵌入式系统的概念,软、硬件组成,开发过程以及嵌入式应用程序开发设计方法。
本课程的知识将为学生今后从事嵌入式系统研究与开发打下坚实的基础。
The principle of embedded system is an important course of computer science and technology, which introduce the principles and the theory of embedded system.T his curriculum is tied closely with not only hardware but also embedded operating system and embedded software. It introduce the conception of embedded system, components of software and hardware, developing progresses and designing methods of embedded programming which based on the 32bit arm processor and operating system of opened linux.The knowledge of this course would be solid foundation for the student who would be engaged in researching or developing about embedded system.三、课程性质与教学目的嵌入式系统原理与应用课程的性质:该课程是计算机科学与技术专业的专业课。
嵌入式系统原理及运用课程设计

摘要嵌入式系统开始于20世纪80年代单片机的使用。
嵌入式技术已经渗透到各个领域,且与人们的日常生活密不可分,给人们生活和工业生产带来极大方便。
本文论述了嵌入式系统概念、嵌入式处理器、嵌入操作系统和嵌入软件开发环境,解释了嵌入式系统组成中的各个部分。
嵌入式操作系统具有良好的可移植性,能够用在根据应用要求选择的微处理器中。
嵌入式系统设计带来了与传统系统设计全然不同的挑战。
嵌入式系统已成为计算机领域的一个重要组成部分。
广泛讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。
嵌入式系统可以通过各种无线形式和有线形式的网络连接方式实现它们之间的相互连接。
因此,在网络通信市场上极具生命力。
关键词嵌入式系统,嵌入式操作系统,μC/OS-ⅡABSTRACTThe Embedded system commenced with the use of SCM in 1980’s. The embedded technology has penetrated in every field. It’s inseparable with our daily life and it brings great convenience to people’s life and the industry.This paper discusses the concept of the embedded system, the embedded processor, the embedded operating system and the embedded software developing environment, explains the components of the embedded system.The embedded system has great compatibility. It can be used in MPU selected according to the application. The design of the embedded system brings the challenge witch is different with the traditional design.The embedded system has been an important component of the computer field. Universally speaking, all the private soft-hardware systems with MPU can be named with embedded system. The embedded systems can connect with each other through wireless and cable connecting way. Therefore, it is animate in the market of the communication networks.KEY WORDS Embedded system, Embedded operating system,μC/OS-Ⅱ目录第一章嵌入式系统概述 (1)1.1 嵌入式系统简介 (1)1.2 嵌入式系统的分类 (3)1.3 嵌入式系统设计的特点 (3)第二章嵌入式处理器 (5)2.1 嵌入式处理器简介 (5)2.2 常用嵌入式处理器 (6)第三章嵌入式操作系统 (7)3.1 嵌入式操作系统简介 (7)3.1.1 嵌入式操作系统的机制 (8)3.1.2 嵌入式操作系统的特点: (9)3.1.3 嵌入式操作系统的分类 (10)3.2 μC/OS-Ⅱ嵌入式操作系统 (10)3.2.1 μC/OS-Ⅱ实时操作系统结构 (11)3.2.2 μC/OS-Ⅱ嵌入式操作系统的特点 (11)3.2.3 μC/OS-Ⅱ的移植 (13)第四章嵌入式系统编程语言 (15)4.1 嵌入式系统的高级语言特点 (15)4.2 嵌入式系统高级语言开发过程 (15)4.3 嵌入式系统编程与系统硬件 (17)4.3.1 存储器映射 (17)4.3.2 I/O映射 (18)结束语 (19)参考文献 (20)第一章嵌入式系统概述1.1 嵌入式系统简介何谓嵌入式系统?根据英国电机工程师协会的定义所做的翻译,“嵌入式系统为控制、监视或辅助设备、机器或甚至工厂操作的装置”。
嵌入式Linux实时操作系统及应用编程代码与答案

嵌入式Linux实时操作系统及应用编程嵌入式Linux实时操作系统及应用编程嵌入式Linux实时操作系统及应用编程嵌入式Linux实时操作系统及应用编程附录A 习题参考答案嵌入式Linux实时操作系统及应用编程第1章1.嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。
简单的说就是系统的应用软件与系统的硬件一体化,类似与BIOS的工作方式。
具有软件代码小,高度自动化,响应速度快等特点。
特别适合于要求实时的和多任务的体系。
根据IEEE(国际电气和电子工程师(原文为devices 协会)的定义:嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”used to control,monitor,or assist the operation of equipment,machinery or plants)。
简单地讲就是嵌入到对象体中的专用计算机系统。
嵌入式系统一般有3个主要的组成部分:硬件、实时操作系统以及应用软件。
●硬件:包括处理器、存储器(ROM、RAM)、输入输出设备、其他部分辅助系统等。
●实时操作系统(Real-Time Operating System,RTOS):用于管理应用软件,并提供一种机制,使得处理器分时地执行各个任务并完成一定的时限要求。
●应用软件:实现具体业务逻辑功能。
2.嵌入式系统的三要素是嵌入、专用、计算机;其中嵌入性指的是嵌入到对象体系中,有对象环境要求;专用性是指软、硬件按对象要求裁减;计算机指实现对象的智能化功能。
广义地说一个嵌入式系统就是一个具有特定功能或用途的计算机软硬件集合体。
即以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
3.嵌入式实时操作系统(Real-Time Operating System,RTOS)是指操作系统本身要能在一个固定时限内对程序调用(或外部事件)做出正确的反应,亦即对时序与稳定性的要求十分严格。
单片机嵌入式系统原理及应用课后答案

单片机嵌入式系统原理及应用课后答案【篇一:单片机原理及嵌入式系统设计第一次作业习题】1、用8位二进制数表示出下列十进制数的补码:+65 、—115[+65]补:0100 0001[-115]补:1100 11012 、写出十进制数12.4用的bcd码和二进制数:bcd码:0001 0010.0100 二进制数:1100.0110011001100110(结果保留16位小数) 3 、当采用奇校验时,ascii码1000100和1000110的校验位d7应为何值?这2个代码所代表的字符是什么?答:分别为0和1,代表字符分别是d和f4、计算机由(运算器、控制器、存储器、输入设备、输出设备)五部分组成。
5、画出微机的组成框图,说明三总线的作用。
数据总线db:在控制总线的配合下传递cpu的输入/输出数地址总线ab:选择芯片或选择芯片中的单元,以便cpu通过控制总线让数据总线与该单元之间单独传输信息控制总线cb:配合数据总线与地址总线起作用,负责传递数据总线或地址总线的有效时刻和数据总线的传输方向等信息6、8位微机所表示的无符号数、带符号数、bcd码的范围分别是多少?答:8位微机所表示的无符号数范围:0~255带符号数范围:-128~+127bcd码范围:0~997、1001001b分别被看作补码、无符号数、ascii码、bcd码时,它所表示的十进制数或字符是什么?答:分别是补码73,无符号数73,bcd码498、举例说出单片机的用途。
答:比如马路上红路灯的时间控制;洗衣机的洗涤、甩干过程的自动控制等9、举例说明cpu执行指令的过程。
答:计算机每执行一条指令都可分为三个阶段进行。
即取指令、分析指令、执行指令。
根据程序计数器pc中的值从程序存储器读出现行指令,送到指令寄存器。
将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。
如指令要求操作数,则寻找操作数地址。
计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。
嵌入式单片机STM32原理及应用

嵌入式单片机STM32原理及应用简要介绍嵌入式单片机STM32的基本概念和应用领域。
解释嵌入式单片机的基本原理和构造。
探讨STM32芯片的特点和功能。
介绍搭建嵌入式开发环境所需的软件和硬件工具。
提供逐步指南以完成环境的搭建。
介绍STM32的编程语言和开发工具。
探讨基本的编程概念和语法规则。
提供一些实际的应用案例,展示STM32在各个领域的应用。
包括但不限于智能家居、工业自动化、医疗设备等。
探讨一些与STM32开发相关的工具、调试技巧和在线资源。
提供一些值得参考的书籍、网站和社区。
总结嵌入式单片机STM32的基本原理和应用。
提供进一步研究的方向和建议。
列出所参考的相关文献和资源。
1.简介嵌入式单片机STM32是一种高性能、低功耗的微控制器系列,广泛应用于现代科技领域。
本文将介绍嵌入式单片机STM32的概念以及其在各个领域中的应用。
嵌入式单片机STM32是由___推出的一系列32位ARMCortex-M内核的微控制器。
它具有高性能、低功耗、丰富的外设资源和灵活的扩展能力,适用于各种嵌入式应用。
在现代科技中,嵌入式单片机STM32的应用非常广泛。
它可以用于工业自动化控制系统,如制造业中的机器人控制、流水线控制等。
此外,它还被广泛应用于智能家居系统,如智能门锁、智能灯光控制等。
嵌入式单片机STM32还可以用于交通工具控制系统,如汽车电子控制单元(ECU)、飞机控制系统等。
此外,它还可以用于医疗设备、安防系统、物联网设备等领域。
总之,嵌入式单片机STM32以其强大的功能和广泛的应用领域,成为现代科技中不可或缺的一部分。
通过研究嵌入式单片机STM32的原理和应用,我们能够更好地理解和应用这一领域的技术进展。
本部分将讲解嵌入式单片机STM32的基本原理,包括其构成和工作原理。
嵌入式单片机STM32是一种高性能、低功耗的微控制器,由处理器核、存储器、外设接口和时钟控制等组成。
它通过引脚与外围电路连接,用于控制各种电子设备和系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《嵌入式系统原理及应用》作业题目作业1一、调试下面的程序,并回答问题。
.global _start.text_start:LDR SP, =srcLDMFD SP!,{R0-R6}STMFD SP!,{R0-R6}LDMFD SP!,{R3}LDMFD SP!,{R4}LDMFD SP!,{R5}LDMFD SP!,{R6}LDMFD SP!,{R0}LDMFD SP!,{R1}LDMFD SP!,{R2}stop: b stop.ltorgsrc:.long 1,2,3,4,5,6,7.end问:该程序完成了什么功能?答:该程序完成的功能:先把数据区堆栈中的1~7这七个数据送给R0~R0寄存器,然后又把寄存器列表中的R0~R7存入堆栈,然后又依次把堆栈中的1~7这七个数送给R3~R6,R0~R2,然后程序就结束了,在取数和存数的过程中。
堆栈指针sp由0x0000变到0x8030再到0x804c,然后到0x8030,然后依次加4,最后到0x804c;程序计数器R15(PC)由0x8000地址依次加4 。
二、LDMFD,STMFD伪代码实现的原理。
答:指令STMFD和LDMFD分析:根据ATPCS规则,我们一般使用FD(Full Descending)类型的数据栈!所以经常使用的指令就有STMFD和LDMFD,通过ARM对于栈操作和批量Load/Store指令寻址方式,可以知道指令STMFD和LDMFD的地址计算方法:STMFD指令的寻址方式为事后递减方式(DB)而DB寻址方式实际存地址为:start_address = Rn - (Number_Of_Set_Bits_In(register_list)*4)end_address = Rn - 4STM指令操作的伪代码:if ConditionPassed(cond) thenaddress = start_addressfor i = 0 to 15if register_list[i] == 1Memory[address] = Riaddress = address + 4有上面两个伪代码可以得出STMFD SP!,{R0-R7,LR} 的伪代码如下:SP =SP -9×4;address =SP;for i = 0 to 7Memory[address] = Ri;address= address + 4;Memory[address] = LR;LDMFD指令的寻址方式为事后递增方式(IA)IA存的实际地址的伪代码start_address = Rnend_address = Rn + (Number_of_set_bits_in(register_list)*4) - 4LDM指令操作的伪代码(未考虑PC寄存器):if ConditionPassed(cond) thenaddress = start_addressfor i = 0 to 15if register_list[i] == 1Ri =Memory[address,4]address = address + 4所以LDMFD SP!,{R0-R7,PC}^ (;恢复现场,异常处理返回)伪代码是: address = SP;for i = 0 to 7Ri = Memory[address ,4]address = address + 4;SP = address;作业2一、用移位操作完成(R0)*10运算。
参考程序:.text.global _start_start:mov R0,#10mov R1,R0,LSL #3mov R2,R0,LSL #1add R3,R1,R2stop:B stop.end二、已知数据缓冲池中有两组数据x和y,每组中有3个数据(例如x: 90,60,30,y: 60,40,20),将x中的数据减去y中的数据,最后将两组数相减得到的结果送回到x中去!参考代码:.text.global _start_start:LDR SP,=xLDMFD SP!,{R0-R2}LDMFD SP!,{R3-R5}sub R2,R2,R5Sub R1,R1,R4Sub R0,R0,R3STMFD SP!,{R0-R2}stop:b stop.ltorgx: .long 80,90,100y: .long 10,20,30.end作业3已知R0和R1的值,要求保留R0的低16位,保留R1的高16位状态,最后将这两个值组成一个新的数送给R3.参考代码:.text.global _start_start:LDR R0,=0x12345678LDR R1,=0x87654321ldr R2,=0xffffLDR R4,=0xffff0000AND R0,R0,R2AND R1,R1,R4ORR R3,R0,R1stop: B stop.end作业4在ARM GNU环境下用ARM汇编语言编程序实现,00,0,0x xy x xx x>⎧⎪===⎨⎪-<⎩参考代码:.text.global _start_start:LDR R0,=xLDR R1,=yLDR R2,[R0]CMP R2,#0BEQ ZEROBGT ZHENGBLT FUZERO:MOV R3,#0STR R3,[R1]B stopZHENG:mov R3,R2STR R3,[R1]B stopFU:mvn R3,R2mov R4,#0x1add R3,R3,R4STR R3,[R1]B stopstop:B stop.ltorgx: .long -10y: .long 0作业5求20的阶乘:64位结果放在【R9:R8】中,R9放高32位,R放低32位思路:每轮乘法操作中,低32位(R8)乘以X(R0)后,结果的低32位放在R8中,高32位放在R9中;高32位R1乘以X(R0)后再加上R9,得到64位结果的高32位,存入R9 参考程序:.global _start.text_start:MOV R8 , #20 低32位初始化为20MOV R9 , #0 高位初始化为0SUB R0,R8,#1 初始化计数器Loop:MOV R1 , R9 暂存高位值UMULL R8 , R9 , R0 , R8 [R9:R8]=R0*R8MLA R9 , R1 , R0 , R9 R9=R1*R0+R9SUBS R0 , R0 , #1 计数器递减BNE Loop 计数器不为0继续循环Stop:B stop.end二、已知a=R0,b=R1.while(a< >b) doif(a>b) thena=a-belsea=b-aend ifend whileresult=a根据以上代码写出对应的汇编代码:参考代码:CMP R0,R1CMPNE R0,R1SubGT R0,R0,R1SubLT R0,R1,R0.end作业61.将下面的ADS环境下的程序代码改写成GUN环境下的程序代码。
(调试时使用F11 step into,注意和F10 step over的区别)AREA Jump, CODE, READONLYnum EQU 4 ; 函数地址表容的个数ENTRYCODE32startLDR R0, =choice ; R0指向存储区的choice单元LDR R0, [R0] ; 设置第一个参数:选择执行哪一个函数MOV R1, #16 ; 设置第1个操作数MOV R2, #2 ; 设置第2个操作数BL arithfunc ; 调用子程序arithfuncstopMOV R0, #0x18 ; 程序结束返回编译器调试环境LDR R1, =0x20026SWI 0x123456arithfuncCMP R0, #num ; 比较R0的值是否超过函数地址表的个数MOVHS PC, LR ; 如果大于,那么就返回到标号stop处ADR R3, JumpTable ; 将函数地址表的地址作为基地址LDR PC, [R3, R0, LSL #2] ; 根据R0参数进入对应的子程序JumpTable ; 函数地址表的入口基地址DCD DoAdd ; 加法子程序DCDDoSub ; 减法子程序DCDDoMul ; 乘法子程序DCDDoDiv ; 除法子程序DoAddADD R0, R1, R2 ; R0 = R1 + R2MOV PC, LR ; 返回DoSubSUB R0, R1, R2 ; R0 = R1 - R2MOV PC, LR ; 返回DoMulMOV R0, R1, LSL R2 ; R0 = R1 << R2MOV PC, LR ; 返回DoDivMOV R0, R1, LSR R2 ; R0 = R1 >> R2MOV PC, LR ; 返回AREA NUM, DATA, READWRITEchoice DCD3 ; 0:表示选择加法子程序1:表示选择减法子程序; 2:表示选择乘法子程序3:表示选择除法子程序END参考程序:.equ num,4 函数地址表容的个数.text.global _start_start:LDR R0,=choice R0指向存储区的choice单元LDR R0,[R0] 设置第一个参数:选择执行哪一个函数MOV R1,#16 设置第1个操作数MOV R2,#2 设置第2个操作数Bl arithfunc 调用子程序arithfuncstop:b stoparithfunc:CMP R0,#num 比较R0的值是否超过函数地址表的个数MOVHS PC, LR 如果大于,那么就返回到标号stop处ADR R3, JumpTable 将函数地址表的地址作为基地址LDR PC, [R3, R0, LSL#2] 根据R0参数进入对应的子程序JumpTable: 函数地址表的入口基地址.long DoAdd 加法子程序.long DoSub 减法子程序.long DoMul 乘法子程序.long DoDiv 除法子程序DoAdd:ADD R0, R1, R2 R0 = R1 + R2MOV PC, LR 返回DoSub:SUB R0, R1, R2 R0 = R1 - R2MOV PC, LR 返回DoMul:MOV R0, R1, LSL R2 R0 = R1 << R2MOV PC, LR 返回DoDiv:MOV R0, R1, LSR R2 R0 = R1 >> R2MOV PC, LR 返回.ltorgchoice: .long 3 0:表示选择加法子程序1:表示选择减法子程序2:表示选择乘法子程序:表示选择除法子程序.end2. 改写以下程序,实现从ARM状态切换到thumb状态,最后再切换到ARM状态!#*******************************************************************************************# NAME: ThumbCode.s *# Author: Embest *# Desc: ThumbCode examples *# History: shw.He 2005.02.22 *#*********************************************************************************************/*-----------------------------------------------------------------------------------------------------------*//* constant define *//*-----------------------------------------------------------------------------------------------------------*/.global _start/*-----------------------------------------------------------------------------------------------------------*//* unable to locate source file. code *//*-----------------------------------------------------------------------------------------------------------*/.text_start:.arm /* Subsequent instructions are ARM */header:adr r0, Tstart + 1 /* Processor starts in ARM state, */bx r0 /* so small ARM code header used *//* to call Thumb main program. */ nop.thumbTstart:mov r0, #10 /* Set up parameters */mov r1, #3bl doadd /* Call subroutine */stop:b stop/*------------------------------------------------------------------------------------------*//* Subroutine code:R0 = R0 + R1 and return *//*------------------------------------------------------------------------------------------*/doadd:add r0, r0, r1 /* Subroutine code */mov pc, lr /* Return from subroutine. */.end /* Mark end of file */参考程序:.global _start.text_start:mov r3,#0.armheader:adr r0,Tstart + 1add r3,r3,#1 //设置循环标志,便于从thumb切换到arm后能停止程序cmp r3,#2Beq stopbx r0stop:b stop.thumbTstart:LDR r2,=headermov r0, #10mov r1, #3bl doaddbx r2doadd:add r0, r0, r1mov pc, lr.end作业7已知1,00,01,0xy xx>⎧⎪==⎨⎪-<⎩,若任意给一个定值,假定为-25,存放在x单元,函数值存放在y单元;要求根据x中的值来确定y的值。