|
- 1. ; 文件名:TEST4.S
- 2. ; 功能:通过查表实现程序散转
- 3. ; 说明:使用ARMulate软件仿真调试
- 4. NumCon EQU 0x40003001 ; 定义变量NumCn
- 5. AREA Example4,CODE,READONLY
- 6. ENTRY
- 7. MAIN LDR R0,= NumCon
- 8. LDRB R2,[R0] ; 取得跳转控制变量值
- 9. MOV R2,R2,LSL #2 ; 功能号乘上4,以便查表
- 10. LDR PC,[PC,R2] ; 查表取得对应功能子程序地址,并跳转
- 11. NOP
- 12. FUN_TAB DCD FUN_SUB0 ; 跳转表
- 13. DCD FUN_SUB1
- 14. DCD FUN_SUB2
- 15. DCD FUN_SUB3
- 16.; 各功能分支
- 17. FUN_SUB0 B MAIN
- 18. FUN_SUB1 B MAIN
- 19. FUN_SUB2 B MAIN
- 20. FUN_SUB3 B MAIN
- END
- 程序运行到第9行时,PC值是0x0000800c,此时的R2我设的是0x00000004,但当我再往下运行到第10行时,PC变为0x00008028,并且下条指令指向FUN_SUB1,这个PC的变化我不是很理解,请大大帮忙解释下,谢谢
复制代码
|
|