|
|
发表于 2026-8-22 17:34:55
|
显示全部楼层
同样的程序,还需要优化。
0000:02 00 BFLJMP 0x00BF
0003:7E 00 00MOV R0, #0x00
0006:7A 03 01 00MOV 0x0100, R0
30if(NULL == str) { return 0; } // 参数检查,为空指针,返回字符串长度为 0。
000A:7E 18 00 00MOV DR4, #0x0000
000E:7E 08 00 00MOV DR0, #0x0000
0012:7A 0C 00 01MOVH DR0, #0x0001
0016:7E 18 00 00MOV DR4, #0x0000
001A:BF 10CMP DR4, DR0
001C:78 11JNE Z=0 +17
001E:7E 24 00 00MOV WR4, #0x0000
0022:CA 29PUSH WR4
0024:DA 08POP R0
0026:7A 01 11MOV 0x11, R0
0029:DA 08POP R0
002B:7A 01 10MOV 0x10, R0
002E:22RET
32str[0] = HEX_ASCII_LUT[(num >> 4) & 0x0FU];
002F:7E 37 00 40MOV WR6, 0x0040
0033:0E 34SRA WR6
0035:0E 34SRA WR6
0037:0E 34SRA WR6
0039:0E 34SRA WR6
003B:5E 34 00 0FANL WR6, #0x000f
003F:75 84 FFMOV 0x84, #0xFF
0042:90 02 00MOV DPTR, #0x0200
0045:7C B7MOV R11, R7
0047:93MOVC A, @A+DPTR
0048:7C 1BMOV R1, R11
004A:7A 11 28MOV 0x28, R1
004D:7E 0F 00 42MOV DR0, 0x0042
0051:7F 10MOV DR4, DR0
0053:BE 24 80 00CMP WR5, #0x8000
0057:50 08JNC CY=0 +8
0059:E5 28 7C 2BMOV R2, 0x28
005D:39 21 00 00MOV @DR4+0x0000, R2
33str[1] = HEX_ASCII_LUT[num & 0x0FU];
0061:7E 27 00 40MOV WR4, 0x0040
0065:5E 24 00 0FANL WR4, #0x000f
0069:75 84 FFMOV 0x84, #0xFF
006C:90 02 00MOV DPTR, #0x0200
006F:7C B5MOV R11, R5
0071:93MOVC A, @A+DPTR
0072:7C 3BMOV R3, R11
0074:7A 31 28MOV 0x28, R3
0077:7E 1F 00 42MOV DR4, 0x0042
007B:7E 08 00 01MOV DR0, #0x0001
007F:2F 10ADD DR4, DR0
0081:BE 24 80 00CMP WR5, #0x8000
0085:50 08JNC CY=0 +8
0087:E5 28 7C 0BMOV R0, 0x28
008B:39 01 00 00MOV @DR4+0x0000, R0
34str[2] = '\0'; // 添加字符串结束符
008F:7E 10 00MOV R1, #0x00
0092:75 28 00MOV 0x28, #0x00
0095:7E 1F 00 42MOV DR4, 0x0042
0099:7E 08 00 02MOV DR0, #0x0002
009D:2F 10ADD DR4, DR0
009F:BE 24 80 00CMP WR5, #0x8000
00A3:50 08JNC CY=0 +8
00A5:E5 28 7C 2BMOV R2, 0x28
00A9:39 21 00 00MOV @DR4+0x0000, R2
36return 2; // 返回字符串长度 (不包含结束符'\0')
00AD:7E 34 00 02MOV WR6, #0x0002
00B1:CA 39PUSH WR6
00B3:DA 08POP R0
00B5:7A 01 11MOV 0x11, R0
00B8:DA 08POP R0
00BA:7A 01 10MOV 0x10, R0
00BD:22RET
00BE:22RET
00BF:43 BA 80ORL 0xBA, #0x80
00C2:75 81 00MOV 0x81, #0x00
00C5:75 85 01MOV 0x85, #0x01
00C8:90 00 00MOV DPTR, #0x0000
00CB:E4CLR A
00CC:75 84 01MOV 0x84, #0x01
00CF:7E 24 00 0AMOV WR4, #0x000A
00D3:BE 24 00 00CMP WR4, #0x0000
00D7:68 06JE Z=1 +6
00D9:F0MOVX @DPTR, A
00DA:A3INC DPTR
00DB:1B 24DEC WR4, #1
00DD:80 F4SJMP -12
41num = uint8_to_hex_string(0x5a, string1);
00DF:7E 24 00 5AMOV WR4, #0x005A
00E3:7A 27 00 40MOV 0x0040, WR4
00E7:7E 18 00 00MOV DR4, #0x0000
00EB:7A 1C 00 01MOVH DR4, #0x0001
00EF:7A 1F 00 42MOV 0x0042, DR4
00F3:CA B8PUSH R11
00F5:E5 08 7C 0BMOV R0, 0x08
00F9:DA B8POP R11
00FB:CA 08PUSH R0
00FD:11 03ACALL 0x003
00FF:E5 10 7C 3BMOV R3, 0x10
0103:7A 31 20MOV 0x20, R3
0106:E5 11 7C 0BMOV R0, 0x11
010A:7A 01 21MOV 0x21, R0
010D:DA 08POP R0
010F:7A 01 08MOV 0x08, R0
43while(1)
0112:80 FESJMP -2
编译成功 · 代码 276 BROM 0.22% · edata 0B · xdata 10B
|
-
|