电 子 科 技 大 学
实 验 报 告
五、实验内容:本实验由 6 段汇编代码构成。每段功能类似,即首先利用 MRS 指令将当前 的 CPSR 寄存器内容读出,然后更改其中模式位为相应的值,最后利用 MSR 指令 将更改后的值重新 写入 CPSR 寄存器以实现处理器的工作模式的更改
六、实验器材(设备、元器件) :PC 机一台,arm 芯片,Jlinkarm
七、实验步骤及操作:
八、实验数据及结果分析:AREA Test2,CODE,READONLY CODE32 ENTRY START B Reset_Handler Undefined_Handler B Undefined_Handler SWI_Handler B SWI_Handler Prefetch_Handler B Prefetch_Handler Abort_Handler B Abort_Handler IRQ_Handler B IRQ_Handler FIQ_Handler
B FIQ_Handler Reset_Handler ;进入 System 模式 MRS R0,CPSR BIC R0,R0,#0x1F ORR R0,R0,#0x1F MSR CPSR_c,R0 MOV R0,#1 MOV R1,#2 MOV R2,#3 MOV R3,#4 MOV R4,#5 MOV R5,#6 MOV R6,#7 MOV R7,#8 MOV R8,#9 MOV R9,#10 MOV R10,#11 MOV R11,#12 MOV R12,#13 MOV R13,#14 MOV R14,#15 ;进入 FIQ 模式 MRS R0,CPSR BIC R0,R0,#0x1F ORR R0,R0,#0x11 MSR CPSR_c,R0 MOV R8,#16 MOV R9,#17 MOV R10,#18 MOV R11,#19 MOV R12,#20 MOV R13,#21 MOV R14,#22 ;进入 IRQ 模式 ;复制 CPSR 到 R0 ;清除 R0 的后 5 位 ;设定 R0 的最
后 5 位为 11111 ;把 R0 装载到 CPSR,切换到系统模式 ;对系统模式下的 R0 赋值,下面的 R1~R14 一样
;设定 R0 的最后 5 位为 10001 ;把 R0 装载到 CPSR,切换到 Fiq 模式 ;给 Fiq 模式的特有缓存器 R8 赋值,下面的 R9~R14 一样
MRS R0,CPSR BIC R0,R0,#0x1F ORR R0,R0,#0x12 MSR CPSR_c,R0 MOV R13,#23 MOV R14,#24 ;进入 SVC 模式 MRS R0,CPSR BIC R0,R0,#0x1F ORR R0,R0,#0x13 MSR CPSR_c,R0 MOV R13,#25 MOV R14,#26 ;进入 Abort 模式 MRS R0,CPSR BIC R0,R0,#0x1F ORR R0,R0,#0x17 MSR CPSR_c,R0 MOV R13,#27 样 MOV R14,#28 ;进入 UNDEF 模式 MRS R0,CPSR BIC R0,R0,#0x1F ORR R0,R0,#0x1b MSR CPSR_c,R0 MOV R13, #29 MOV R14, #30 B Reset_Handler END
;设定 R0 的最后 5 位为 10010 ;把 R0 装载到 CPSR,切换到 IRQ 模式 ;给 IRQ 模式的特有缓存器 R13 赋值,下面的 R14 一样
;设定 R0 的最后 5 位为 10011 ;把 R0 装载到 CPSR,切换到 Svc 模式 ;给 SVC 模式的特有缓存器 R13 赋值, 下面的 R14 一样
;设定 R0 的最后 5 位为 10111 ;把 R0 装载到 CPSR,切换到 Abort 模式 ;给 Abort 模式的特有缓存器 R13 赋值, 下面的 R14 一
;设定 R0 的最后 5 位为 11011 ;把 R0 装载到 CPSR,切换到 UNDEF 模式 ;给 UNDEF 模式的特有缓存器 R13 赋值, 下面的 R14 一样
;跳移到 Reset_Handler 循环
实验结果截图:
九、实验结论:
十、总结及心得体会:
十一、对本实验过程及方法、手段的改进建议:
报告评分: 指导教师签字: