这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教一个ARM汇编问题

共4条 1/1 1 跳转至

请教一个ARM汇编问题

菜鸟
2007-11-02 11:14:48     打赏

我在汇编下写的安装中断服务程序,在把中断服务函数的地址拷贝到中断向量表的时候,总是读取中断向量表的地址是错的,具体的程序如下:
----------------------------
;文件名:option.inc
SDRAM_END EQU 0x34000000

;Start address of each stacks
_STACK_BASEADDRESS    EQU (SDRAM_END - 0x8000) ;0x33ff8000
.............
----------------------------
定义了宏_STACK_BASEADDRESS。这个文件被引导程序init.s所包含。在init.s会调用安装中断函数,在testeint0.s 文件中。
----------------------------
;文件名:isr.inc
pISR_RESET        EQU  (_ISR_STARTADDRESS+0x0)
pISR_UNDEF        EQU  (_ISR_STARTADDRESS+0x4)
pISR_SWI               EQU  (_ISR_STARTADDRESS+0x8)
pISR_PABORT       EQU  (_ISR_STARTADDRESS+0xc)
pISR_DABORT       EQU  (_ISR_STARTADDRESS+0x10)
pISR_RESERVED  EQU  (_ISR_STARTADDRESS+0x14)
pISR_IRQ                 EQU  (_ISR_STARTADDRESS+0x18)
pISR_FIQ                  EQU  (_ISR_STARTADDRESS+0x1c)

pISR_EINT0             EQU  (_ISR_STARTADDRESS+0x20) ;0x33ff8020
;pISR_EINT0             EQU  (0x34000000-0x8000+0x20)  ;0x33ff8020
----------------------------
定义了宏pISR_EINT0。
-----------------------------
;文件名:testeint0.s 安装中断的函数
GET option.inc   ;定义了宏_ISR_STARTADDRESS
GET isr.inc         ;定义了中断向量表地址
....................
 IMPORT Eint0Handler ;中断服务函数
 AREA   MainCode, CODE, READONLY
.......................
 ldr    r0, =Eint0Handler
 ldr    r1, =pISR_EINT0 ;<------就是这句
 str    r0, [r1]
.....................
------------------------------
在isr.cin中当我用pISR_EINT0             EQU  (0x34000000-0x8000+0x20)这句的时候
读到r1的地址应该是正确地址(0x33ff8020)。
当我用pISR_EINT0             EQU  (_ISR_STARTADDRESS+0x20) ;0x33ff8020这句的时候读到r1的地址就是(0x33ffff20)。

请问这是什么原因,能否具体的说下。




关键词: 请教     一个     汇编     问题    

菜鸟
2007-11-07 13:36:22     打赏
2楼
LZ可以先用软件仿真试一试,看看结果如何。在实际的调试的时候,LZ可以看看反汇编,看看执行这条指令的时候,数据是从什么地址装载的,确定地址后,确定一下该地址的数据是否是你期望的。简单的分析测试一下,应该能找到问题在那里。

院士
2007-11-14 13:32:42     打赏
3楼
twentyone

你要常来啊

很多问题还需要你的大力支持呢

菜鸟
2007-11-14 13:37:11     打赏
4楼
现在比较自由,一定会常来的。 :- )

共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]