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

📄 util.lst

📁 lpc2138读写SD卡的fat文件系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
 00000008  D037      BEQ         L_23  ; T=0x0000007A
 0000000A  3901      SUB         R1,#0x1
 0000000C  D033      BEQ         L_24  ; T=0x00000076
 0000000E  3901      SUB         R1,#0x1
 00000010  D02F      BEQ         L_25  ; T=0x00000072
 00000012  3901      SUB         R1,#0x1
 00000014  D02B      BEQ         L_26  ; T=0x0000006E
 00000016  3901      SUB         R1,#0x1
 00000018  D027      BEQ         L_27  ; T=0x0000006A
 0000001A  3901      SUB         R1,#0x1
 0000001C  D023      BEQ         L_28  ; T=0x00000066
 0000001E  3901      SUB         R1,#0x1
 00000020  D01F      BEQ         L_29  ; T=0x00000062
 00000022  3901      SUB         R1,#0x1
 00000024  D01B      BEQ         L_30  ; T=0x0000005E
 00000026  3901      SUB         R1,#0x1
 00000028  D017      BEQ         L_31  ; T=0x0000005A
 0000002A  3901      SUB         R1,#0x1
 0000002C  D013      BEQ         L_32  ; T=0x00000056
 0000002E  3901      SUB         R1,#0x1
 00000030  D00F      BEQ         L_33  ; T=0x00000052
 00000032  3901      SUB         R1,#0x1
 00000034  D00B      BEQ         L_34  ; T=0x0000004E
 00000036  3901      SUB         R1,#0x1
 00000038  D007      BEQ         L_35  ; T=0x0000004A
 0000003A  3901      SUB         R1,#0x1
ARM COMPILER V2.00d,  util                                                                 23/10/05  18:16:18  PAGE 6   

 0000003C  D003      BEQ         L_36  ; T=0x00000046
 0000003E  3901      SUB         R1,#0x1
 00000040  D11F      BNE         L_21  ; T=0x00000082
   44:   case 15 : return('F');
 00000042          L_37:
 00000042  2046      MOV         R0,#0x46
 00000044  E01E      B           L_38  ; T=0x00000084
   45:   case 14 : return('E');
 00000046          L_36:
 00000046  2045      MOV         R0,#0x45
 00000048  E01C      B           L_38  ; T=0x00000084
   46:   case 13 : return('D');
 0000004A          L_35:
 0000004A  2044      MOV         R0,#0x44
 0000004C  E01A      B           L_38  ; T=0x00000084
   47:   case 12 : return('C');
 0000004E          L_34:
 0000004E  2043      MOV         R0,#0x43
 00000050  E018      B           L_38  ; T=0x00000084
   48:   case 11 : return('B');
 00000052          L_33:
 00000052  2042      MOV         R0,#0x42
 00000054  E016      B           L_38  ; T=0x00000084
   49:   case 10 : return('A');
 00000056          L_32:
 00000056  2041      MOV         R0,#0x41
 00000058  E014      B           L_38  ; T=0x00000084
   50:   case 9 : return('9');
 0000005A          L_31:
 0000005A  2039      MOV         R0,#0x39
 0000005C  E012      B           L_38  ; T=0x00000084
   51:   case 8 : return('8');
 0000005E          L_30:
 0000005E  2038      MOV         R0,#0x38
 00000060  E010      B           L_38  ; T=0x00000084
   52:   case 7 : return('7');
 00000062          L_29:
 00000062  2037      MOV         R0,#0x37
 00000064  E00E      B           L_38  ; T=0x00000084
   53:   case 6 : return('6');
 00000066          L_28:
 00000066  2036      MOV         R0,#0x36
 00000068  E00C      B           L_38  ; T=0x00000084
   54:   case 5 : return('5');
 0000006A          L_27:
 0000006A  2035      MOV         R0,#0x35
 0000006C  E00A      B           L_38  ; T=0x00000084
   55:   case 4 : return('4');
 0000006E          L_26:
 0000006E  2034      MOV         R0,#0x34
 00000070  E008      B           L_38  ; T=0x00000084
   56:   case 3 : return('3');
 00000072          L_25:
 00000072  2033      MOV         R0,#0x33
 00000074  E006      B           L_38  ; T=0x00000084
   57:   case 2 : return('2');
 00000076          L_24:
 00000076  2032      MOV         R0,#0x32
 00000078  E004      B           L_38  ; T=0x00000084
   58:   case 1 : return('1');
 0000007A          L_23:
 0000007A  2031      MOV         R0,#0x31
 0000007C  E002      B           L_38  ; T=0x00000084
   59:   case 0 : return('0');
 0000007E          L_22:
 0000007E  2030      MOV         R0,#0x30
ARM COMPILER V2.00d,  util                                                                 23/10/05  18:16:18  PAGE 7   

 00000080  E000      B           L_38  ; T=0x00000084
   60:   }
 00000082          L_21:
   61:   return('?');      //return an "F" if if digit is grater than 9
 00000082  203F      MOV         R0,#0x3F
   62: }
 00000084          L_38:
 00000084  4770      BX          R14
 00000086          ENDP ; 'htoc?T'


*** CODE SEGMENT '?PR?wr_byte?T?util':
   64: void wr_byte(unsigned char d, unsigned char x)  //d is the number of digits (leading zeros)
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C0D      MOV         R5,R1 ; x
 00000004  ---- Variable 'x' assigned to Register 'R5' ----
 00000004  1C06      MOV         R6,R0 ; d
 00000006  ---- Variable 'd' assigned to Register 'R6' ----
   65: {                            //routine writes a 3 position digit for the
 00000006            ; SCOPE-START
   67:   a = x/100;                //find the 100's
 00000006  0628      LSL         R0,R5,#0x18 ; x
 00000008  0E00      LSR         R0,R0,#0x18 ; x
 0000000A  2164      MOV         R1,#0x64
 0000000C  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 0000000E  FFF8      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 00000012  1C08      MOV         R0,R1
 00000014  1C04      MOV         R4,R0
 00000016  ---- Variable 'a' assigned to Register 'R4' ----
   68:   if (d == 3) putchar(ntoc(a)); //write out ASCII for the 100's
 00000016  0630      LSL         R0,R6,#0x18 ; d
 00000018  0E00      LSR         R0,R0,#0x18 ; d
 0000001A  2803      CMP         R0,#0x3 ; d
 0000001C  D106      BNE         L_39  ; T=0x0000002C
 0000001E  0620      LSL         R0,R4,#0x18 ; a
 00000020  0E00      LSR         R0,R0,#0x18 ; a
 00000022  F7FF      BL          ntoc?T  ; T=0x0001  (1)
 00000024  FFED      BL          ntoc?T  ; T=0x0001  (2)
 00000028  0600      LSL         R0,R0,#0x18 ; ntoc?T
 0000002A  0E00      LSR         R0,R0,#0x18
 0000002C  F7FF      BL          putchar?T  ; T=0x0001  (1)
 0000002E  FFE8      BL          putchar?T  ; T=0x0001  (2)
 00000032          L_39:
   69:   b = x - a*100;            //adjust value to the tens
 00000032  0620      LSL         R0,R4,#0x18 ; a
 00000034  0E00      LSR         R0,R0,#0x18 ; a
 00000036  2164      MOV         R1,#0x64
 00000038  4348      MUL         R0,R1
 0000003A  062D      LSL         R5,R5,#0x18 ; x
 0000003C  0E2D      LSR         R5,R5,#0x18 ; x
 0000003E  1A2D      SUB         R5,R0 ; x
 00000040  ---- Variable 'b' assigned to Register 'R5' ----
   70:   a = b/10;                 //find the number of 10's
 00000040  0628      LSL         R0,R5,#0x18 ; b
 00000042  0E00      LSR         R0,R0,#0x18 ; b
 00000044  210A      MOV         R1,#0xA
 00000046  F7FF      BL          ?C?UDIV?T  ; T=0x0001  (1) ; ?C?UDIV?T
 00000048  FFDB      BL          ?C?UDIV?T  ; T=0x0001  (2) ; ?C?UDIV?T
 0000004C  1C08      MOV         R0,R1
 0000004E  1C04      MOV         R4,R0
   71:   if (d >= 2) putchar(ntoc(a)); //write out the 10's
 00000050  0630      LSL         R0,R6,#0x18 ; d
 00000052  0E00      LSR         R0,R0,#0x18 ; d
 00000054  2802      CMP         R0,#0x2 ; d
 00000056  DB03      BLT         L_40  ; T=0x00000060
 00000058  0620      LSL         R0,R4,#0x18 ; a
 0000005A  0E00      LSR         R0,R0,#0x18 ; a
 0000005C  F7FF      BL          ntoc?T  ; T=0x0001  (1)
ARM COMPILER V2.00d,  util                                                                 23/10/05  18:16:18  PAGE 8   

 0000005E  FFD0      BL          ntoc?T  ; T=0x0001  (2)
 00000062  0600      LSL         R0,R0,#0x18 ; ntoc?T
 00000064  0E00      LSR         R0,R0,#0x18
 00000066  F7FF      BL          putchar?T  ; T=0x0001  (1)
 00000068  FFCB      BL          putchar?T  ; T=0x0001  (2)
 0000006C          L_40:
   72:   a = b - a*10;             //adjust numbers for one's
 0000006C  0620      LSL         R0,R4,#0x18 ; a
 0000006E  0E00      LSR         R0,R0,#0x18 ; a
 00000070  210A      MOV         R1,#0xA
 00000072  4348      MUL         R0,R1
 00000074  062C      LSL         R4,R5,#0x18 ; b
 00000076  0E24      LSR         R4,R4,#0x18 ; b
 00000078  1A24      SUB         R4,R0 ; b
   73:   putchar(ntoc(a));         //write out the one's
 0000007A  0620      LSL         R0,R4,#0x18 ; a
 0000007C  0E00      LSR         R0,R0,#0x18 ; a
 0000007E  F7FF      BL          ntoc?T  ; T=0x0001  (1)
 00000080  FFBF      BL          ntoc?T  ; T=0x0001  (2)
 00000084  0600      LSL         R0,R0,#0x18 ; ntoc?T
 00000086  0E00      LSR         R0,R0,#0x18
 00000088  F7FF      BL          putchar?T  ; T=0x0001  (1)
 0000008A  FFBA      BL          putchar?T  ; T=0x0001  (2)
 0000008E            ; SCOPE-END
   74: }
 0000008E  BC70      POP         {R4-R6}
 00000090  BC08      POP         {R3}
 00000092  4718      BX          R3
 00000094          ENDP ; 'wr_byte?T'


*** CODE SEGMENT '?PR?wr_hex?T?util':
   76: void wr_hex(unsigned char x)    //hex number with leading zeros
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  1C05      MOV         R5,R0 ; x
 00000004  ---- Variable 'x' assigned to Register 'R5' ----
   77: {                            //routine writes a 2 position digit for the
 00000004            ; SCOPE-START
   79:   a = x/16;                 //find the number of 16's
 00000004  0628      LSL         R0,R5,#0x18 ; x
 00000006  0E00      LSR         R0,R0,#0x18 ; x
 00000008  2110      MOV         R1,#0x10
 0000000A  F7FF      BL          ?C?SDIV?T  ; T=0x0001  (1) ; ?C?SDIV?T
 0000000C  FFF9      BL          ?C?SDIV?T  ; T=0x0001  (2) ; ?C?SDIV?T
 00000010  1C08      MOV         R0,R1
 00000012  1C04      MOV         R4,R0 ; a
 00000014  ---- Variable 'a' assigned to Register 'R4' ----
   80:   putchar(htoc(a));         //write out the 16's
 00000014  1C20      MOV         R0,R4
 00000016  F7FF      BL          htoc?T  ; T=0x0001  (1)
 00000018  FFF3      BL          htoc?T  ; T=0x0001  (2)
 0000001C  0600      LSL         R0,R0,#0x18 ; htoc?T
 0000001E  0E00      LSR         R0,R0,#0x18
 00000020  F7FF      BL          putchar?T  ; T=0x0001  (1)
 00000022  FFEE      BL          putchar?T  ; T=0x0001  (2)
   81:   a = x - a*16;             //adjust numbers for one's
 00000026  0121      LSL         R1,R4,#0x4 ; a
 00000028  062C      LSL         R4,R5,#0x18 ; x
 0000002A  0E24      LSR         R4,R4,#0x18 ; x
 0000002C  1A64      SUB         R4,R1 ; x
   82:   putchar(htoc(a));         //write out the one's
 0000002E  1C20      MOV         R0,R4
 00000030  F7FF      BL          htoc?T  ; T=0x0001  (1)
 00000032  FFE6      BL          htoc?T  ; T=0x0001  (2)
 00000036  0600      LSL         R0,R0,#0x18 ; htoc?T
 00000038  0E00      LSR         R0,R0,#0x18
 0000003A  F7FF      BL          putchar?T  ; T=0x0001  (1)
 0000003C  FFE1      BL          putchar?T  ; T=0x0001  (2)
ARM COMPILER V2.00d,  util                                                                 23/10/05  18:16:18  PAGE 9   

 00000040            ; SCOPE-END
   83: }
 00000040  BC30      POP         {R4-R5}
 00000042  BC08      POP         {R3}
 00000044  4718      BX          R3
 00000046          ENDP ; 'wr_hex?T'


*** CODE SEGMENT '?PR?wr_32hex?T?util':
   85: void wr_32hex(unsigned int x)   //hex number for 32 bit value
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  1C05      MOV         R5,R0 ; x
 00000004  ---- Variable 'x' assigned to Register 'R5' ----
   86: {
 00000004            ; SCOPE-START
   89:   for (i=4;i>0;i--) {   // There is a bug in the compiler... for (i=3;i>=0;i--) doesn't work
 00000004  2404      MOV         R4,#0x4
 00000006  ---- Variable 'i' assigned to Register 'R4' ----
 00000006          L_44:
   90:     a = x >> (8*(i-1)); // get next byte
 00000006  1C22      MOV         R2,R4 ; i
 00000008  3A01      SUB         R2,#0x1
 0000000A  00D2      LSL         R2,R2,#0x3 ; i
 0000000C  1C29      MOV         R1,R5 ; x
 0000000E  40D1      LSR         R1,R2
 00000010  ---- Variable 'a' assigned to Register 'R1' ----
   91:     wr_hex(a);          // print ASCII representation of the byte
 00000010  0608      LSL         R0,R1,#0x18 ; a
 00000012  0E00      LSR         R0,R0,#0x18 ; a
 00000014  F7FF      BL          wr_hex?T  ; T=0x0001  (1)
 00000016  FFF4      BL          wr_hex?T  ; T=0x0001  (2)
   92:   }
 0000001A  3C01      SUB         R4,#0x1
 0000001C  2C00      CMP         R4,#0x0 ; i
 0000001E  D8F2      BHI         L_44  ; T=0x00000006
 00000020            ; SCOPE-END
   94: }
 00000020  BC30      POP         {R4-R5}
 00000022  BC08      POP         {R3}
 00000024  4718      BX          R3
 00000026          ENDP ; 'wr_32hex?T'


*** CODE SEGMENT '?PR?read_reg?T?util':
   95: unsigned int read_reg(unsigned int x) {
 00000000  ---- Variable 'x' assigned to Register 'R0' ----
 00000000  4770      BX          R14
 00000002          ENDP ; 'read_reg?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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