📄 util.lst
字号:
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 + -