实验二ARM汇编语言编程实验.doc.pdf





《实验二ARM汇编语言编程实验.doc.pdf》由会员分享,可在线阅读,更多相关《实验二ARM汇编语言编程实验.doc.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验二:ARM 汇编语言编程实验一、实验目的1、掌握 ADT IDE ARM 开发环境中基本的工程设置以及程序编译方法。2、掌握 ADT IDE ARM 开发环境中基本的程序调试方法。3、掌握基本的 ARM 汇编语言编程方法。二、实验内容用汇编语言编写一个程序实现如下目的:从源地址拷贝num 个字(num*4 个字节)的数据到目的地址 dst 中。三、预备知识1、ARM 汇编语言的基础知识。2、程序调试的基础知识和方法。四、实验设备1、硬件:JXARM9-2440 教学实验箱、PC机。2、软件:PC机操作系统 Windows 98(2000、XP)+ADT IDE开发环境。五、基础知识ADT
2、IDE集成了 GNU 汇编器 arm-elf-as、编译器 arm-elf-gcc和链接器 arm-elf-ld。在ADT IDE中编写的程序必须符合GNU 的语法规则。下面介绍一些基本的GNU 汇编知识以及本实验用到的 ARM 汇编指令。1、GUN 汇编语言语法及规则1)_start _start为程序默认入口点,代码段默认起始地址为0 x800,如果需要修改可以在链接脚本文件中指定。2)标号语法:symbol:symbol 为定义的符号。说明:上述代码定义一个标号,它表示程序中当前的指令或数据地址。如果在程序中出现两个相同的标号,汇编器将会产生一个警告,且只有第一个标号有效。课程名称ARM
3、 体系结构实验成绩指导教师冯灵霞实 验 报 告院系信息工程学院班级计算机科学与技术(嵌入式)学号姓名日期2、GNU 汇编语言伪操作1).equ 伪操作语法:.equ symbol,expr expr 为基于寄存器的地址值、程序中的标号、32位的地址常量或位的常量。symbol 为.equ伪操作为 expr 定义的字符名称。说明:该操作符为数字常量、基于寄存器的值和程序中的标号定义一个字符名称,相当于 C语言中的宏定义。示例:.equ USERMODE,0 x10 2).global伪操作符语法:.global symbol symbol 为声明的符号的名称。它是区分大小写的。说明:该操作符声明
4、一个可以被其它文件引用的全局符号,相当于 C语言中的全局变量。示例:.global Main 3).text伪操作符语法:.text subsection subsection为代码段子段,可选参数。说明:该操作符将操作符开始的代码编译到代码段或代码段子段中。示例:.text 4).end 伪操作符语法:.end 说明:该操作符标记当前汇编文件的结束行,即标号后的代码不作处理。示例:.end 5).ltorg伪操作符语法:.ltorg 说明:该操作符用于在当前段的当前地址产生一个文字池。示例:.ltorg 3、存储器访问指令1)LDR和 STR指令说明:LDR/STR指令用于加载寄存器和存储寄
5、存器。它们的使用比较复杂,现仅列举本实验用到的一些使用方法。示例:LDR r3,r0,#4/*从 r0 表示的地址中读取数据到r3 中,然后将 r0 加 4*/STR r3,r1,#4/*将 r3 中的数据保存到 r1 表示的地址中,然后将r1 加 4*/2)LDMIA和 STMIA指令说明:LDMIA/STMIA 指令用于加载多个寄存器和存储多个寄存器。它们的使用比较复杂,现仅列举本实验用到的一些使用方法。示例:LDMIA r0!,r4-r11/*从 r0 表示的地址中取出8 个数据分别放到到r4-r11 中*/STMIA r1!,r4-r11/*将 r4-r11 中的数据保存到 r1 表示
6、的起始地址中*/4、程序分支指令1)B指令说明:B指令为 ARM 分支指令,将引起处理器转移到指定标号处执行。示例:B Label/*处理器转移到 Label 标号处执行*/BEQ stop/*Z 标志置位则转移到stop 标号处执行,否则继续执行下一条指令*/BNE octcopy/*Z标志清零则转移到octcopy 标号处执行,否则继续执行下一条指令*/5、其它指令1)SUBS 指令说明:该指令由SUB指令加上 S后缀组成,S后缀标志根据执行结果更新条件标志码。示例:SUBS r3,r3,#1 2)MOVS 指令说明:该指令由MOV 指令加上 S后缀组成,S后缀标志根据执行结果更新条件标志
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 ARM 汇编语言 编程 doc

限制150内