|
用的是ZLG的MagicARM2200实验箱 其中有一个实验是地址重映射的实验2.13 用C编的程序很好理解 但是其汇编语言程序就搞不明白了,请高手指点为盼!
文 件 名:main.S
; 功 能:将存储器重映射到片内RAM(0x40000000~0x4000003F)
; 说 明:更改0x40000000~0x4000003F的内容。观察0x00000000~0x0000003F地址上的
; 数据有何变化。
程序如下:前面是容易懂的,但是后面从“; 修改中断向量-----END 就不明白了.” 这里面的SWI 0x123456 指令在本程序中到底起的什么作用?
MEMMAP EQU 0xE01FC040
EXPORT MAIN
IMPORT Reset
CODE32
AREA MainCode,CODE,READONLY
MAIN NOP
; REMAP操作
REMAPS MOV R0,#0x40000000 ; 复制中断向量代码
LDR R1,=Reset
LDMIA R1!,{R2-R9}
STMIA R0!,{R2-R9}
LDMIA R1!,{R2-R9}
STMIA R0!,{R2-R9}
LDR R0,=MEMMAP ; REMAP操作
MOV R1,#0x02
STR R1,[R0]
; 修改中断向量
LDR R0,=0x40000028 ; 修改SWI中断向量,使其指向HALT
LDR R1,=HALT
STR R1,[R0]
; 运行SWI中断
SWI 0x123456
LOOP B LOOP
HALT NOP
B HALT
END |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|