嵌入式操作系统实验——简单的汇编程序入门——两个数字的相加

基本操作步骤
重建项目

(1) 在E:\新建一个目录,目录名为armads。启动ADS1.2 IDE集成开发环境,选择[file]->[new…],使用ARM Executable Image 工程模板建立一个工程,工程名称为test,工程目录为E:\armads,在这里插入图片描述

在项目中添加文件

(2) 选择[file]->[new…]建立一个新的文件test1.s,设置直接添加到项目中,见图1.2。输入如程序清单1.1所示的代码,并保存,此时在工程窗口中可以看到test1.s文件,见图1.3。
在这里插入图片描述

修改对应的字体

(3) 由于ADS安装以后默认字体是Courier New,对于中文支持不完善,因此建议修改字体。选择[edit]->[perferrences…],可以看见以下对话框,如图1.4所示。在Font 选项设置字体是Fixedsys,Script是CHINESE_GB2312。由于Tab在不同文本编辑器解释不同,建议在Tab Inserts Spaces前打勾,使Tab键插入的是多个空格。
在这里插入图片描述

设置程序的入口地址和调试入口地址

(4) 选择[edit]->[DebugRel Settings…],在DebugRel Settings对话框的左边选择ARM Linker项,然后在Output页设置链接地址,如图1.5所示,在Options页设置调试入口地址,如图1.6所示。

在这里插入图片描述
在这里插入图片描述

编译整个程序

(5) 选择[project]->[make…],将编译链接整个工程。如果编译成功,见图1.7,Errors&Warnings对话框会报告编译错误为0,那么就可以对工程进行仿真。
在这里插入图片描述

图1.7 编译错误和警告对话框

调试程序

(6) 选择[project]->[debug],或者按下快捷键F5。IDE环境就会启动AXD调试软件,如图1.8所示,接着可以执行单步、全速运行调试。注意,要在AXD的Choose Target窗口中选用ARMUL软件仿真。
在这里插入图片描述

图1.8 AXD调试窗口
(7) 断点调试方法:首先设置断点,只需要在第6行灰色区域双击鼠标即可,如果出现红色实心圆点,那么表示断点设置成功,然后选择[execute]->[go]全速运行,可以发现程序停止在第6行。还有一种比较方便的调试方法就是Run to Cursor,单击鼠标第8行灰色区域,如果AXD将第8行高亮就表示设置成功,然后选择[execute]->[ Run to Cursor]运行到光标,可以发现程序停止在第8行。通过断点调试可以观察ARM寄存器数值变化,具体的操作方法在后面的实验会具体介绍。

出现问题

在这里插入图片描述

  • 并不知道为什么?不兼容对应的文件
源码
实验一
;test1.s file assemble code
		AREA example,CODE,READONLY
		;AREA伪操作指示汇编器汇编新的代码段或数据段
		;指示example段位代码段并且是只读段
		ENTRY
		;声明程序入口点Entry,一个源文件中只能有一个entry
		CODE32
		;下述的程序为32位的arm指令
START	
		MOV R0,#15
		MOV R1,#8
		ADDS R0,R0,R1
		B START
		;B是分支指令,start是程序员开始的入口,跳转到start处重新执行
		;上述程序是一个无限循环程序
		END	
		;源程序结尾标志
实验二
;16-bits dat transfer
;TTL Ch4ex1 - move16 - p.57
 	AREA Program, CODE, READONLY 
 	ENTRY  
Main
	Value DCW &C123 
	Result DCW 0 	
 	LDRH R1, Value 		
 	; 将value半字数据保存到R1寄存器中
 	STRH R1, Result 		
 	; 将result半字结果保存到R1寄存器中 
 	SWI &11  	
	; Value to be moved   
 	ALIGN 		
 	; Need to do this because working with 16bit value  
	; Storage space  
    END
  • LDR系列之令,将右边的数据保存到坐标的地址
    • LDRH指令:半字数据加载指令
    • LDRB:字节数据加载指令
    • LDR:字数据加载指令
  • STR指令:将左侧的地址送到右侧地址指向的存储器中
    • STR:字数据存储指令
    • STRB:字节数据存储指令
    • STRH:板子数据存储指令
  • DCW指令:分配一段半字存储单元,并用表达式的值进行初始化。定义的存储空间是版字对齐的
  • ALIGN指令:对齐方式的设置,什么都不加,默认下述的程序标号是按照字对齐进行保存的。
  • SWI指令:软中断指令,使用swi来访问操作系统实例或者第三方模块。
    • 进入swi处理程序,并传递对应的值,执行编号为你传入标号的值
    • swi &2;处理程序,跳出来,执行编号为2的程序
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值