西安交通大学计算机专业嵌入式系统第一次作业

第一次作业

安装ADS1.2,在CodeWarrior 中make(汇编、连接) 该程序,并将映像文件装入AXD中模拟执行

观察映像文件的组织:

  1. 观察各段的安排次序。

西安交通大学计算机专业嵌入式系统第一次作业_第1张图片

西安交通大学计算机专业嵌入式系统第一次作业_第2张图片

  1. 修改RO Base为0x800,汇编后再观察各段的次序、地址。

西安交通大学计算机专业嵌入式系统第一次作业_第3张图片

西安交通大学计算机专业嵌入式系统第一次作业_第4张图片

西安交通大学计算机专业嵌入式系统第一次作业_第5张图片

  1. 修改RW Base为0xC00,汇编后再观察各段的次序、地址。

西安交通大学计算机专业嵌入式系统第一次作业_第6张图片

西安交通大学计算机专业嵌入式系统第一次作业_第7张图片

  1. 观察MyZIData数据段是否存在,为什么?

​ 观察到MyZIData数据段存在,但在仿真阶段仿真器给没有被使用的数据单元赋随机值,故没有被初始化为0

西安交通大学计算机专业嵌入式系统第一次作业_第8张图片

  1. 调整源代码中各段顺序,汇编后再观察各段的次序、地址。

    交换数据段和代码段的位置,汇编后各段次序不变

交换前:

西安交通大学计算机专业嵌入式系统第一次作业_第9张图片

西安交通大学计算机专业嵌入式系统第一次作业_第10张图片

交换后:

西安交通大学计算机专业嵌入式系统第一次作业_第11张图片

西安交通大学计算机专业嵌入式系统第一次作业_第12张图片

  1. 改变各段对齐方式,改变各数据段长度,再进行观察,总结对齐规律。

AREA MyZIData,DATA,READWRITE,NOINIT,ALIGN=4 DateSpace SPACE 40 ;从DateSpace地址开始,分配40个单元并初始化为0

改为

AREA MyZIData,DATA,READWRITE,NOINIT,ALIGN=5 DateSpace SPACE 40 ;从DateSpace地址开始,分配40个单元并初始化为0

ALIGN由4变为5

而ZI数据段的大小有12行变为16行

改变前:40<16 * 3=48=4 *12

​ 40 < 32 * 2 = 64 =16 * 4

西安交通大学计算机专业嵌入式系统第一次作业_第13张图片

西安交通大学计算机专业嵌入式系统第一次作业_第14张图片

观察伪指令“LDR R0,=0x53002345”及其它指令

  1. 有没有文字池,若有,观察文字池的地址及内容。

代码段后面开辟了文字池,并且有最小长度限制

西安交通大学计算机专业嵌入式系统第一次作业_第15张图片

“LDR R0, 0X00000020”实际是基址+变址的寻址方式,带有一个偏移量作为变址。反汇编给出“LDR R0, 0X00000020”像是直接寻址,但ARM指令长度只有32位,不能实现直接寻址,所以实际基址+变址实现。这一点可以在机器指令中看到。汇编后的机器指令是e59f0018,编译地址为18,当前pc=8,所以绝对地址为20.反汇编给出指令“LDR R0, 0X00000020”其实只是示意,因为机器指令中没有地址“20”这个绝对地址;

另外,后几条LDR伪指令的汇编。比如LDR R2,=Str1,虽然str1可以写成8+4的立即数,但仍然采用文字池的汇编方法,而不是采用mov。

  1. 观察这些指令对应的机器指令,说明对应的汇编指令及寻址方式
    ldr  r0,0x00000020  ;  =  #0x53002345
    

    对应

    LDR R0,=0x53002345
    
	mov  r1,#0								  对应                 LDR		R1,=0x0
	str  r1,[r0,#0]							  对应                 STR		R1,[R0]		;红字汇编指令,其它伪指令
	ldr      r2,0x00000024 ; = #0x00000040    对应                 LDR		R2,=Str1
	ldr      r3,0x00000028 ; = #0x00000080    对应                 LDR		R3,=Str2
	ldr      r4,0x0000002c ; = #0x000000a0    对应                 LDR		R4,=Str3
	ldr      r5,0x00000030 ; = #0x000000c0    对应                 LDR		R4,=Str3
	b        0x1c  ; (Image$$RO$$Base + 0x1c) 对应                 B           .           ; . 表示当前地址,死循环
寻址方式均为基址加变址

单步执行,观察寄存器情况。

西安交通大学计算机专业嵌入式系统第一次作业_第16张图片西安交通大学计算机专业嵌入式系统第一次作业_第17张图片西安交通大学计算机专业嵌入式系统第一次作业_第18张图片西安交通大学计算机专业嵌入式系统第一次作业_第19张图片![西安交通大学计算机专业嵌入式系统第一次作业_第20张图片

西安交通大学计算机专业嵌入式系统第一次作业_第21张图片西安交通大学计算机专业嵌入式系统第一次作业_第22张图片

你可能感兴趣的:(嵌入式作业,嵌入式,arm,ads软件)