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