⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nestint.cod

📁 掏美元培训得来的某外国公司推广keil ARM 和LPC2100的源码。
💻 COD
📖 第 1 页 / 共 2 页
字号:
 000001DC  00000128  DD          tc0?A		; POOL-Entry U=1
 000001E0  FFFFF100  DD          0xFFFFF100		; POOL-Entry U=1
 000001E4  FFFFF200  DD          0xFFFFF200		; POOL-Entry U=1
 000001E8  FFFFF010  DD          0xFFFFF010		; POOL-Entry U=1

*** Disassembly of Segment '?PR?delay?T?Intrp':
   51: void delay (void)  {
 000001EC          delay?A PROC ARM   
 000001EC  E59FC000  LDR         R12,[R15]
 000001F0  E12FFF1C  BX          R12
 000001F4  000001F9  DD          delay?T
 000001F8          ENDP      

 000001F8          delay?T:  ; FUNCTION START
 000001F8            ; SCOPE-START
   53:   for (i = 0; i < 0x50000; i++)  {
 000001F8  2000      MOV         R0,#0x0
 000001FA  ---- Variable 'i' assigned to Register 'R0' ----
   55:   }
 000001FA          L_2:
 000001FA  3001      ADD         R0,#0x1
 000001FC  4901      LDR         R1,[R15,#4] ; PoolRef @0x204
 000001FE  4288      CMP         R0,R1 ; i
 00000200  DBFB      BLT         L_2  ; T=0x000001FA
 00000202            ; SCOPE-END
   56: }
 00000202  4770      BX          R14
 00000204            ; END 'delay?T'

 00000204  00050000  DD          0x50000		; POOL-Entry U=1

*** Disassembly of Segment '?PR?eint1_srv?A?Intrp':
 FILE: 'Intrp.c'
   59: void eint1_srv (void) __irq {
 00000208          eint1_srv?A:  ; FUNCTION START
 00000208  E92D5003  STMDB       R13!,{R0-R1,R12,LR}
 0000020C            ; SCOPE-START
LA ARM LINKER/LOCATER V0.21                                                           11/18/2004  14:06:02  PAGE 6


   61:   EXTINT      = 2;                            // Clear EINT1 interrupt flag
 0000020C  E3A01002  MOV         R1,#0x2
 00000210  E59F0048  MOV         R0,[PC,+72] ; PoolRef @0x260
 00000214  E5C01000  STRB        R1,[R0,#0x0]
   62:   IENABLE;                                    // allow nested interrupts
 00000218  E14FE000  MRS         R14,SPSR
 0000021C  E92D4000  STMFD       R13!,{LR}
 00000220  E321F01F  MSR         CPSR_c,#0x1F
 00000224  E92D4000  STMFD       R13!,{LR}
   63:   delay ();                                   // wait a long time
 00000228  EBFFFFEF  BL          delay?A  ; Targ=0x1EC
   64:   ++intrp_count;                              // increment interrupt count
 0000022C  E59F0030  MOV         R0,[PC,+48] ; PoolRef @0x264 ; intrp_count
 00000230  E5901000  LDR         R1,[R0,#0x0] ; intrp_count
 00000234  E2811001  ADD         R1,R1,#0x0001
 00000238  E5801000  STR         R1,[R0,#0x0] ; intrp_count
   65:   IDISABLE;                                   // disable interrupt nesting
 0000023C  E8BD4000  LDMFD       R13!,{LR}
 00000240  E321F092  MSR         CPSR_c,#0x92
 00000244  E8BD4000  LDMFD       R13!,{LR}
 00000248  E16FF00E  MSR         SPSR_cxsf,R14
   66:   VICVectAddr = 0;                            // Acknowledge Interrupt
 0000024C  E3A01000  MOV         R1,#0x0
 00000250  E59F0010  MOV         R0,[PC,+16] ; PoolRef @0x268
 00000254  E5801000  STR         R1,[R0,#0x0]
 00000258            ; SCOPE-END
   67: }
 00000258  E8BD5003  LDMIA       R13!,{R0-R1,R12,LR}
 0000025C  E25EF004  SUBS        R15,R14,#0x0004
 00000260            ; END 'eint1_srv?A'

 00000260  E01FC140  DD          0xE01FC140		; POOL-Entry U=1
 00000264  40000490  DD          intrp_count		; POOL-Entry U=1
 00000268  FFFFF030  DD          0xFFFFF030		; POOL-Entry U=1

*** Disassembly of Segment '?PR?init_eint1?T?Intrp':
 FILE: 'Intrp.c'
   70: void init_eint1 (void) {
 0000026C          init_eint1?T:  ; FUNCTION START
   71: 	EXTMODE      = 2;                           // Edge sensitive mode on EINT1
 0000026C  2102      MOV         R1,#0x2
 0000026E  4809      LDR         R0,[R15,#36] ; PoolRef @0x294
 00000270  7001      STRB        R1,[R0,#0x0]
   72: 	EXTPOLAR     = 2;                           // raising edge sensitive
 00000272  2102      MOV         R1,#0x2
 00000274  4808      LDR         R0,[R15,#32] ; PoolRef @0x298
 00000276  7001      STRB        R1,[R0,#0x0]
   73: 	PINSEL0      = 2 << 28;                     // Enable EINT1 on GPIO_0.14
 00000278  4908      LDR         R1,[R15,#32] ; PoolRef @0x29C
 0000027A  4809      LDR         R0,[R15,#36] ; PoolRef @0x2A0
 0000027C  6001      STR         R1,[R0,#0x0]
   74:   VICVectAddr1 = (unsigned long) eint1_srv;   // set interrupt vector in VIC 0
 0000027E  4809      LDR         R0,[R15,#36] ; PoolRef @0x2A4 ; eint1_srv?A
 00000280  1C01      MOV         R1,R0 ; eint1_srv?A
 00000282  4809      LDR         R0,[R15,#36] ; PoolRef @0x2A8
 00000284  6001      STR         R1,[R0,#0x0]
   75:   VICVectCntl1 = 0x21 | 15;                   // use VIC 1 for EINT1 Interrupt
 00000286  212F      MOV         R1,#0x2F
 00000288  4808      LDR         R0,[R15,#32] ; PoolRef @0x2AC
 0000028A  6001      STR         R1,[R0,#0x0]
   76:   VICIntEnable = 1 << 15;                     // Enable EINT1 Interrupt
 0000028C  4908      LDR         R1,[R15,#32] ; PoolRef @0x2B0
 0000028E  4809      LDR         R0,[R15,#36] ; PoolRef @0x2B4
 00000290  6001      STR         R1,[R0,#0x0]
   77: }
LA ARM LINKER/LOCATER V0.21                                                           11/18/2004  14:06:02  PAGE 7


 00000292  4770      BX          R14
 00000294            ; END 'init_eint1?T'

 00000294  E01FC148  DD          0xE01FC148		; POOL-Entry U=1
 00000298  E01FC14C  DD          0xE01FC14C		; POOL-Entry U=1
 0000029C  20000000  DD          0x20000000		; POOL-Entry U=1
 000002A0  E002C000  DD          0xE002C000		; POOL-Entry U=1
 000002A4  00000208  DD          eint1_srv?A		; POOL-Entry U=1
 000002A8  FFFFF104  DD          0xFFFFF104		; POOL-Entry U=1
 000002AC  FFFFF204  DD          0xFFFFF204		; POOL-Entry U=1
 000002B0  00008000  DD          0x8000		; POOL-Entry U=1
 000002B4  FFFFF010  DD          0xFFFFF010		; POOL-Entry U=1

*** Disassembly of Segment '?PR?main?Intrp':
 FILE: 'Intrp.c'
   79: int main (void) {
 000002B8          ?C?INIT:  ; FUNCTION START
 000002B8  4820      LDR         R0,[R15,#128] ; PoolRef @0x33C ; ?C?CLRTAB
 000002BA          L_20:
 000002BA  C806      LDMIA       R0!,{R1-R2}
 000002BC  1C0B      MOV         R3,R1
 000002BE  4313      ORR         R3,R2
 000002C0  D005      BEQ         L_22  ; T=0x02CE
 000002C2  2300      MOV         R3,#0x0
 000002C4          L_21:
 000002C4  700B      STRB        R3,[R1,#0x0]
 000002C6  1C49      ADD         R1,R1,#0x1
 000002C8  4291      CMP         R1,R2
 000002CA  D1FB      BNE         L_21  ; T=0x02C4
 000002CC  E7F5      B           L_20  ; T=0x000002BA
 000002CE          L_22:
 000002CE  481C      LDR         R0,[R15,#112] ; PoolRef @0x340 ; ?C?INITTAB
 000002D0          L_23:
 000002D0  1CC0      ADD         R0,R0,#0x3
 000002D2  2303      MOV         R3,#0x3
 000002D4  4398      BIC         R0,R3
 000002D6  C806      LDMIA       R0!,{R1-R2}
 000002D8  1C0B      MOV         R3,R1
 000002DA  4313      ORR         R3,R2
 000002DC  D006      BEQ         L_25  ; T=0x02EC
 000002DE          L_24:
 000002DE  7803      LDRB        R3,[R0,#0x0]
 000002E0  1C40      ADD         R0,R0,#0x1
 000002E2  700B      STRB        R3,[R1,#0x0]
 000002E4  1C49      ADD         R1,R1,#0x1
 000002E6  4291      CMP         R1,R2
 000002E8  D1F9      BNE         L_24  ; T=0x02DE
 000002EA  E7F1      B           L_23  ; T=0x000002D0
 000002EC          L_25:
 000002EC          main:
 000002EC  B500      PUSH        {LR}
 000002EE            ; SCOPE-START
   80:   unsigned int LED_out = 0;
 000002EE  2200      MOV         R2,#0x0
 000002F0  ---- Variable 'LED_out' assigned to Register 'R2' ----
   82:   IODIR1 = 0xFF0000;
 000002F0  4914      LDR         R1,[R15,#80] ; PoolRef @0x344
 000002F2  4815      LDR         R0,[R15,#84] ; PoolRef @0x348
 000002F4  6001      STR         R1,[R0,#0x0]
   84:   init_eint1();                               // Enable EINT1
 000002F6  F7FF      BL          init_eint1?T  ; T=0x026D  (1)
 000002F8  FFB9      BL          init_eint1?T  ; T=0x026D  (2)
   85:   init_timer ();
 000002FA  F7FF      BL          init_timer?T  ; T=0x01A5  (1)
 000002FC  FF53      BL          init_timer?T  ; T=0x01A5  (2)
LA ARM LINKER/LOCATER V0.21                                                           11/18/2004  14:06:02  PAGE 8


   87: 	while (1)  {
 000002FE          L_9:
   88: 	  if ((intrp_count & 0xFF) != LED_out)  {		// intrp_count has changed
 000002FE  4813      LDR         R0,[R15,#76] ; PoolRef @0x34C ; intrp_count
 00000300  6800      LDR         R0,[R0,#0x0] ; intrp_count
 00000302  21FF      MOV         R1,#0xFF
 00000304  4008      AND         R0,R1
 00000306  4290      CMP         R0,R2 ; LED_out
 00000308  D00A      BEQ         L_11  ; T=0x00000320
   89: 		  LED_out = (intrp_count & 0x7F);         // set LED out
 0000030A  4810      LDR         R0,[R15,#64] ; PoolRef @0x34C ; intrp_count
 0000030C  6802      LDR         R2,[R0,#0x0] ; intrp_count
 0000030E  207F      MOV         R0,#0x7F
 00000310  4002      AND         R2,R0
   90: 			IOCLR1 = 0x7F0000;                      // clear LED's
 00000312  490F      LDR         R1,[R15,#60] ; PoolRef @0x350
 00000314  480F      LDR         R0,[R15,#60] ; PoolRef @0x354
 00000316  6001      STR         R1,[R0,#0x0]
   91: 			IOSET1 = (LED_out << 16);               // output intrp_count	on LED
 00000318  1C11      MOV         R1,R2 ; LED_out
 0000031A  0409      LSL         R1,R1,#0x10 ; LED_out
 0000031C  480E      LDR         R0,[R15,#56] ; PoolRef @0x358
 0000031E  6001      STR         R1,[R0,#0x0]
   92: 	  }
 00000320          L_11:
   93:     if ((SecondCnt & 1) == 0) IOCLR1 = 0x800000;
 00000320  480E      LDR         R0,[R15,#56] ; PoolRef @0x35C ; SecondCnt
 00000322  6800      LDR         R0,[R0,#0x0] ; SecondCnt
 00000324  2101      MOV         R1,#0x1
 00000326  4208      TST         R0,R1
 00000328  D103      BNE         L_12  ; T=0x00000332
 0000032A  490D      LDR         R1,[R15,#52] ; PoolRef @0x360
 0000032C  4809      LDR         R0,[R15,#36] ; PoolRef @0x354
 0000032E  6001      STR         R1,[R0,#0x0]
 00000330  E7E5      B           L_9  ; T=0x000002FE
 00000332          L_12:
   94:     else                      IOSET1 = 0x800000;
 00000332  490B      LDR         R1,[R15,#44] ; PoolRef @0x360
 00000334  4808      LDR         R0,[R15,#32] ; PoolRef @0x358
 00000336  6001      STR         R1,[R0,#0x0]
   95: 	}
 00000338  E7E1      B           L_9  ; T=0x000002FE
 0000033A            ; SCOPE-END
 0000033A  BD00      POP         {PC}
 0000033C            ; END 'main'

 0000033C  00000110  DD          ?C?CLRTAB		; POOL-Entry U=1
 00000340  00000120  DD          ?C?INITTAB		; POOL-Entry U=1
 00000344  00FF0000  DD          0xFF0000		; POOL-Entry U=1
 00000348  E0028018  DD          0xE0028018		; POOL-Entry U=1
 0000034C  40000490  DD          intrp_count		; POOL-Entry U=2
 00000350  007F0000  DD          0x7F0000		; POOL-Entry U=1
 00000354  E002801C  DD          0xE002801C		; POOL-Entry U=2
 00000358  E0028014  DD          0xE0028014		; POOL-Entry U=2
 0000035C  40000498  DD          SecondCnt		; POOL-Entry U=1
 00000360  00800000  DD          0x800000		; POOL-Entry U=2

*** Disassembly of Segment '?C?FIQ':
 FILE: 'fiq.s'
 00000364            ; SCOPE-START
 00000364  EAFFFFFE  B           $  ; Targ=0x364
 00000368            ; SCOPE-END

*** Disassembly of Segment '?C?IRQ':
 FILE: 'irq.s'
LA ARM LINKER/LOCATER V0.21                                                           11/18/2004  14:06:02  PAGE 9


 00000368            ; SCOPE-START
 00000368  EAFFFFFE  B           $  ; Targ=0x368
 0000036C            ; SCOPE-END

*** Disassembly of Segment '?C?DABT':
 FILE: 'dabt.s'
 0000036C            ; SCOPE-START
 0000036C  EAFFFFFE  B           $  ; Targ=0x36C
 00000370            ; SCOPE-END

*** Disassembly of Segment '?C?PABT':
 FILE: 'pabt.s'
 00000370            ; SCOPE-START
 00000370  EAFFFFFE  B           $  ; Targ=0x370
 00000374            ; SCOPE-END

*** Disassembly of Segment '?C?UNDEF':
 FILE: 'swi.s'
 00000374            ; SCOPE-START
 00000374  EAFFFFFE  B           $  ; Targ=0x374
 00000378            ; SCOPE-END
 00000378            ; SCOPE-START
 00000378  EAFFFFFE  B           $  ; Targ=0x378
 0000037C            ; SCOPE-END

*** Disassembly of Segment '?PR?C?SDIV':
 FILE: 'sdiv.s'
 0000037C            ; SCOPE-START
 0000037C  4778      BX          R15
 0000037E  46C0      NOP         ; MOV R8,R8
 00000380            ; SCOPE-END
 00000380            ; SCOPE-START
 00000380  E2119102  ANDS        R9,R1,#0x80000000
 00000384  42611000  RSBMI       R1,R1,#0x0000
 00000388  E039A040  EORS        R10,R9,R0,ASR #0
 0000038C  22600000  RSBCS       R0,R0,#0x0000
 00000390  E1B08001  MOVS        R8,R1
 00000394  0A00000D  BEQ         DIV_0  ; Targ=0x3D0
 00000398          just_l:
 00000398  E15800A0  CMP         R8,R0,LSR #1
 0000039C  91A08088  MOVLS       R8,R8,LSL #1
 000003A0  3AFFFFFC  BCC         just_l  ; Targ=0x398
 000003A4          div_l:
 000003A4  E1500008  CMP         R0,R8
 000003A8  E0A99009  ADC         R9,R9,R9
 000003AC  20400008  SUBCS       R0,R0,R8
 000003B0  E1380001  TEQ         R8,R1
 000003B4  11A080A8  MOVNE       R8,R8,LSR #1
 000003B8  1AFFFFF9  BNE         div_l  ; Targ=0x3A4
 000003BC  E1A01009  MOV         R1,R9
 000003C0  E1B0A08A  MOVS        R10,R10,LSL #1
 000003C4  22611000  RSBCS       R1,R1,#0x0000
 000003C8  42600000  RSBMI       R0,R0,#0x0000
 000003CC  E12FFF1E  BX          R14
 000003D0          DIV_0:
 000003D0  E3E01000  MVN         R1,#0x0000
 000003D4  E3A00000  MOV         R0,#0x0000
 000003D8  E12FFF1E  BX          R14
 000003DC            ; SCOPE-END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -