当前位置: 代码迷 >> 汇编语言 >> 哪位大侠能帮小弟我看看这段程序是什么意思啊多谢了!
  详细解决方案

哪位大侠能帮小弟我看看这段程序是什么意思啊多谢了!

热度:7509   发布时间:2013-02-26 00:00:00.0
哪位大侠能帮我看看这段程序是什么意思啊?谢谢了!!!
这段程序是关于ARM中的中断的,我看不太懂是什么意思!哪位高手帮我解释一下啊!谢谢了
哪位朋友能帮我看看这段程序是什么意思啊!!!
IsrIRQ
      sub   sp,sp,#4
      stmfd   sp!,{r8-r9}
      ldr   r9,=I_ISPR
      ldr   r9,[r9]
      mov   r8,#0x00
0
      movs   r9,r9,lsr   #1
      Bcs   %F1
      Add   r8,r8,#4
      B   %B0
1
      ldr   r9,=HandleADC
      add   r9,r9,r8
      ldr   r9,[r9]
      str   r9,[sp,#8]
      ldmfd   sp!,{r8-r9,pc)  


------解决方案--------------------------------------------------------
ldr r9,=I_ISPR
ldr r9,[r9]
mov r8,#0x00
sub sp,sp,#4
stmfd sp!,{r8-r9}
ldr r9,=I_ISPR
ldr r9,[r9]
mov r8,#0x00
0
movs r9,r9,lsr #1
; I_ISPR=I_ISPR < <1;
Bcs %F1 跳转到1
Add r8,r8,#4
B %B0
1
ldr r9,=HandleADC
add r9,r9,r8
ldr r9,[r9]
str r9,[sp,#8]
ldmfd sp!,{r8-r9,pc)

其等价的c代码大约如下

void IsrIRQ(void)
{
count=0;
do{
I_ISPR < <=1;
count+=4;
}while(I_ISPR);
HandleADC+=count;
}
  相关解决方案