嵌入式汇编实验二

嵌入式汇编实验二

环境:ADS
软件:Metrowerks CodeWarrior for ARM Developer Suite v1.2

一、复制数据

要求:用汇编语言编程实现:将存储器中起始地址M1处的4个字数据复制到地址M2处。

	AREA SCopy,CODE,READONLY
M1 DCD 0x0001,0x0002,0x0003,0x0004
M2 DCD 0x0000,0x0000,0x0000,0x0000
	ENTRY
	CODE32

START

	LDR R0,=M1		;M1的地址
	LDR R1,=M2		;M2的地址
	LDMIA R0!,{R4-R7}
	STMIA R1!,{R4-R7}
	
	END

二、累加

要求:用汇编语言编程实现:100+101+102+…+200,其和存于R0。

	AREA Test,CODE,READONLY
	ENTRY
	CODE32

START

	MOV R0,#0
	MOV R1,#100
	
LOOP
	
	ADD R0,R0,R1
	ADD R1,R1,#1
	CMP R1,#201
	BNE LOOP
	
	END

三、寻找最小值

要求:用汇编语言编程实现:从存储器中起始地址M1处的20个字节数据中,找出一个最小数存放在R0中。

	AREA TEST2,DATA,READWRITE
M1 DCB 0x20,0x19,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11
   DCB 0x10,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01
	
	AREA TEST1,CODE,READONLY
	ENTRY
	CODE32

START

	LDR R1,=M1
	LDRB R0,[R1],#1		;存放最小值
	MOV R3,#1			;次数
	
FIND

	LDRB R2,[R1],#1		
	CMP R0,R2
	MOVHS R0,R2
	ADD R3,R3,#1
	CMP R3,#20
	BNE FIND
	
	END

四、跳转表

要求:利用跳转表的思想编写一个汇编子程序,根据键入的值(存放在R0中)不同来完成不同的子程序跳转(假设有四个子程序SUB0、SUB1、SUB2、SUB3)。

	AREA Test,CODE,READONLY
	ENTRY
	CODE32

START

	MOV R0,#1
	BL JUMPTAB
	B Stop
	
JUMPTAB

	ADR R1,SUBTAB
	LDR PC,[R1,R0,LSL #2]	;R0 * 4 + R1 -> PC
	
SUBTAB
	
	DCD SUB0
	DCD SUB1
	DCD SUB2
	DCD SUB3
	
SUB0

	;要执行的代码
	MOV PC,LR
	
SUB1

	MOV R3,#1
	MOV PC,LR

SUB2
	
	;要执行的代码
	MOV PC,LR
	
SUB3
	
	;要执行的代码
	MOV PC,LR

Stop	

	MOV R0,#0x18
	LDR R1,= &20026
	SWI 0x123456
	
	END

说明:

SUBTAB下面的四个DCD:分配4个连续字地址,假如是0x00008014、0x00008018、0x0000801C、0x00008020,这四个地址中存放的值就是各个SUB段的地址,例如上面的代码,SUB0,SUB2,SUB3只有一行代码,SUB1有两行代码,那么SUB[i] 对应的地址为:

[0x00008014] -> 0x00008024 ; SUB0的地址
[0x00008018] -> 0x00008028 ; SUB1的地址
[0x0000801C] -> 0x00008030 ; SUB2的地址
[0x00008020] -> 0x00008034 ; SUB3的地址

SUB1有两行代码,所以SUB2的地址需要 +8

所以这条指令 LDR PC,[R1,R0,LSL #2] 相当于 取SUB[i] 的地址赋值给PC,实现了跳转

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嵌入式开发工具 ARM Developer Suite v1.2 ARM Developer Suite? ADS 是全套的实时开发软件工具包编译器生成的代码密度和执行速度优异可快速低价地创建ARM 结构应用ADS包括三种调试器ARM eXtended Debugger AXD 向下兼容的ARMDebugger for Windows/ARM Debugger for UNIX 和ARM 符号调试器其中AXD 不仅拥有低版本ARM 调试器的所有功能还新添了图形用户界麵更方便的视窗管理数据显示格式化和编辑以及全套的命令行界麵该產品还包括RealMonitor? 可以在前台调试的同时断点续存并且在不中断应用的情况下读写内存跟踪调试工具 ARM 的Real-Time Trace? 和RealMonitor 均為重要的实时调试解决方案能够缩短开发周期提供特殊软件调试功能可运行於带深度嵌入处理器内核的高集成系统芯片SoC ARM 的Real-Time Trace 產品包括跟踪调试工具MultiTrace 嵌入式跟踪宏单元和Multi-ICE ARM 的RealMonitor包括RMTarget? RMHost? 是ARM Developer Suite (ADS) 的补充硬件 Integrator? Integrator 系列是灵活高效的系统芯片开发平台集成ARM PrimeCell?外设和相关驱动器等软件和硬件能够缩短產品开发周期降低生產总成本固件 ARM Firmware Suite? ARM 固件组是跟底层硬件相关的应用封装能在ARM 开发平台上迅速建立基於Integrator 或其它ARM内核的应用和操作系统模型工具 ModelGen ModelGen 是在模拟器上开发和支持复杂半导体器件保留模块的先进建模工具為ARM 独家拥有ARM 的合作伙伴采用ModelGen 在各种仿真器和计算平台上实现信号传输质量和时序模拟 操作可看http://blog.163.com/haoshida_nanjing/blog/static/213358122009622111013200/

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值