嵌入式_实验告实验一.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式_实验告实验一

嵌入式系统 实验报告 实验名称: 汇编指令实验2   班 级: 姓 名: 学 号: 实验地点: 日 期: 一、实验目的: 1. 掌握ARM数据处理指令的使用方法; 2. 了解ARM指令灵活的第2个操作数。 二、实验环境: 硬件:PC机 一台 软件:Windows98/XP/2000系统,ADS 1.2集成开发环境 三、实验内容和要求: 1. 使用MOV和MVN指令访问ARM通用寄存器; 2. 使用ADD、SUB、AND、ORR、CMP、TST等指令完成数据加减运算及逻辑运算。 四、实验步骤: 1. 启动ADS 1.2,使用ARM Executable Image工程模板建立一个工程Instruction2。 2. 建立汇编源文件TEST3.S,编写实验程序,然后添加到工程中。 3. 设置工程连接地址RO Base为0RW Base为0设置调试入 口地址Image entry point为0 4. 编译连接工程,选择【Project】-【Debug】,启动AXD进行软件仿真调试。 5. 打开寄存器窗口(Processor Registers),选择Current项监视各寄存器的值。 6. 单步运行程序,观察寄存器值的变化。 实验结果与分析(含程序、数据记录及分析和实验总结等): X EQU 11 ; 定义X的值为11 Y EQU 8 ; 定义Y的值为8 BIT23 EQU (123) ; 定义BIT23的值为0 AREA Example3,CODE,READONLY ; 声明代码段Example3 ENTRY ; 标识程序入口 CODE32 ; 声明32位ARM指令 START ; 使用MOV、ADD指令实现:R8 = R3 = X + Y MOV R0,#X ; R0 = X,X的值必须是8位图数据 MOV R1,#Y ; R1 = Y,Y的值必须是8位图数据 ADD R3,R0,R1 ; 即是R3 = X + Y MOV R8,R3 ; R8 = R3 ; 使用MOV、MVN、SUB指令实现:R5 = 0x5FFFFFF8 - R8 * 8 MVN R0,#0xA0000007 ; 0xA0000007的反码为0x5FFFFFF8 SUB R5,R0,R8,LSL #3 ; R8左移3位,结果即是 R8 * 8 ; 使用CMP指令判断(5*Y/2)(2*X)吗?若大于则R5 = R50xFFFF0000,否则R5 = R5|0x000000FF MOV R0,#Y ADD R0,R0,R0,LSL #2 ; 计算R0 = Y + 4*Y = 5*Y MOV R0,R0,LSR #1 ; 计算R0 = 5*Y/2 MOV R1,#X MOV R1,R1,LSL #1 ; 计算R1 = 2*X CMP R0,R1 ; 比较R0和R1,即(5*Y/2)和(2*X)进行比较 LDRHI R2,=0xFFFF0000 ; 若(5*Y/2)(2*X),则R2 = 0xFFFF0000 ANDHI R5,R5,R2 ; 若(5*Y/2)(2*X),则R5 = R5R2 ORRLS R5,R5,#0x000000FF ; 若(5*Y/2)≤(2*X),则R5 = R5|0x000000FF ; 使用TST指令测试R5的bit23是否为1,若是则将bit6位清零(使用BIC指令) TST R5,#BIT23 BICNE R5,R5,#0 B START END 实验截图: 六、教师评语: 实验成绩: 教师:(签名要全称) 年 月 日

文档评论(0)

sm80033 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档