📄 printfl.asm
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:18 2001;-------------------------------------------------------- .module printfl ;--------------------------------------------------------; Public variables in this module;-------------------------------------------------------- .globl _printf_small;--------------------------------------------------------; special function registers;--------------------------------------------------------_P0 = 0x0080_SP = 0x0081_DPL = 0x0082_DPH = 0x0083_PCON = 0x0087_TCON = 0x0088_TMOD = 0x0089_TL0 = 0x008a_TL1 = 0x008b_TH0 = 0x008c_TH1 = 0x008d_P1 = 0x0090_SCON = 0x0098_SBUF = 0x0099_P2 = 0x00a0_IE = 0x00a8_P3 = 0x00b0_IP = 0x00b8_PSW = 0x00d0_ACC = 0x00e0_B = 0x00f0;--------------------------------------------------------; special function bits ;--------------------------------------------------------_P0_0 = 0x0080_P0_1 = 0x0081_P0_2 = 0x0082_P0_3 = 0x0083_P0_4 = 0x0084_P0_5 = 0x0085_P0_6 = 0x0086_P0_7 = 0x0087_IT0 = 0x0088_IE0 = 0x0089_IT1 = 0x008a_IE1 = 0x008b_TR0 = 0x008c_TF0 = 0x008d_TR1 = 0x008e_TF1 = 0x008f_P1_0 = 0x0090_P1_1 = 0x0091_P1_2 = 0x0092_P1_3 = 0x0093_P1_4 = 0x0094_P1_5 = 0x0095_P1_6 = 0x0096_P1_7 = 0x0097_RI = 0x0098_TI = 0x0099_RB8 = 0x009a_TB8 = 0x009b_REN = 0x009c_SM2 = 0x009d_SM1 = 0x009e_SM0 = 0x009f_P2_0 = 0x00a0_P2_1 = 0x00a1_P2_2 = 0x00a2_P2_3 = 0x00a3_P2_4 = 0x00a4_P2_5 = 0x00a5_P2_6 = 0x00a6_P2_7 = 0x00a7_EX0 = 0x00a8_ET0 = 0x00a9_EX1 = 0x00aa_ET1 = 0x00ab_ES = 0x00ac_EA = 0x00af_P3_0 = 0x00b0_P3_1 = 0x00b1_P3_2 = 0x00b2_P3_3 = 0x00b3_P3_4 = 0x00b4_P3_5 = 0x00b5_P3_6 = 0x00b6_P3_7 = 0x00b7_RXD = 0x00b0_TXD = 0x00b1_INT0 = 0x00b2_INT1 = 0x00b3_T0 = 0x00b4_T1 = 0x00b5_WR = 0x00b6_RD = 0x00b7_PX0 = 0x00b8_PT0 = 0x00b9_PX1 = 0x00ba_PT1 = 0x00bb_PS = 0x00bc_P = 0x00d0_F1 = 0x00d1_OV = 0x00d2_RS0 = 0x00d3_RS1 = 0x00d4_F0 = 0x00d5_AC = 0x00d6_CY = 0x00d7;--------------------------------------------------------; internal ram data;-------------------------------------------------------- .area DSEG (DATA)_ch: .ds 1_radix: .ds 1_str: .ds 3_val: .ds 4_pval_sp_1_1:: .ds 1_printf_small_sloc0_1_0: .ds 1_printf_small_sloc2_1_0: .ds 1;--------------------------------------------------------; overlayable items in internal ram ;-------------------------------------------------------- .area OSEG (OVR,DATA);--------------------------------------------------------; indirectly addressable internal ram data;-------------------------------------------------------- .area ISEG (DATA);--------------------------------------------------------; bit data;-------------------------------------------------------- .area BSEG (BIT)_long_flag: .ds 1_string_flag: .ds 1_char_flag: .ds 1_sign: .ds 1;--------------------------------------------------------; external ram data;-------------------------------------------------------- .area XSEG (XDATA);--------------------------------------------------------; global & static initialisations;-------------------------------------------------------- .area GSINIT (CODE) .area GSFINAL (CODE) .area GSINIT (CODE); printfl.c 52 clr _long_flag; printfl.c 53 clr _string_flag; printfl.c 54 clr _char_flag;--------------------------------------------------------; Home;-------------------------------------------------------- .area HOME (CODE) .area CSEG (CODE);--------------------------------------------------------; code;-------------------------------------------------------- .area CSEG (CODE);------------------------------------------------------------;Allocation info for local variables in function 'pval';------------------------------------------------------------;sp Allocated to in memory with name '_pval_sp_1_1';lval Allocated to registers r3 r4 r5 r6 ; printfl.c 59; -----------------------------------------; function pval; -----------------------------------------_pval: ar2 = 0x02 ar3 = 0x03 ar4 = 0x04 ar5 = 0x05 ar6 = 0x06 ar7 = 0x07 ar0 = 0x00 ar1 = 0x01; printfl.c 63 mov _pval_sp_1_1,_SP; printfl.c 65 mov a,(_val + 3); Peephole 111 removed ljmp by inverse jump logic jnb acc.7,00102$00132$: mov a,_radix cjne a,#0x10,00133$; Peephole 132 changed ljmp to sjmp sjmp 00102$00133$:; printfl.c 67 clr c clr a subb a,_val mov r3,a clr a subb a,(_val + 1) mov r4,a clr a subb a,(_val + 2) mov r5,a clr a subb a,(_val + 3) mov r6,a; printfl.c 68 setb _sign; Peephole 132 changed ljmp to sjmp sjmp 00103$00102$:; printfl.c 70 clr _sign mov r3,_val mov r4,(_val + 1) mov r5,(_val + 2) mov r6,(_val + 3)00103$:; printfl.c 72; Peephole 112 removed ljmp by inverse jump logic jb _long_flag,00106$00134$:; printfl.c 73 mov r5,#0x00 mov r6,#0x0000106$:; printfl.c 75; Peephole 111 removed ljmp by inverse jump logic jnb _char_flag,00127$00135$:; printfl.c 76 mov r4,#0x00 mov r5,#0x00 mov r6,#0x00; printfl.c 7900127$:00112$:; printfl.c 82 mov a,_radix cjne a,#0x10,00136$; Peephole 132 changed ljmp to sjmp sjmp 00110$00136$: mov __modulong_PARM_2,_radix mov a,_radix rlc a subb a,acc mov (__modulong_PARM_2 + 1),a mov (__modulong_PARM_2 + 2),a mov (__modulong_PARM_2 + 3),a mov dpl,r3 mov dph,r4 mov b,r5 mov a,r6 push ar3 push ar4 push ar5 push ar6 lcall __modulong mov r7,dpl mov r0,dph mov r1,b mov r2,a pop ar6 pop ar5 pop ar4 pop ar3 mov a,#0x30 add a,r7 mov r7,a; Peephole 180 changed mov to clr clr a addc a,r0 mov r0,a; Peephole 180 changed mov to clr clr a addc a,r1 mov r1,a; Peephole 180 changed mov to clr clr a addc a,r2 mov r2,a mov _ch,r7; Peephole 132 changed ljmp to sjmp sjmp 00111$00110$:; printfl.c 83 mov ar2,r3 anl ar2,#0x0F mov a,r2; Peephole 180 changed mov to clr; Peephole 186 optimized movc sequence mov dptr,#__str_0 movc a,@a+dptr mov _ch,a00111$:; printfl.c 84 push _ch ; printfl.c 85 mov __divulong_PARM_2,_radix mov a,_radix rlc a subb a,acc mov (__divulong_PARM_2 + 1),a mov (__divulong_PARM_2 + 2),a mov (__divulong_PARM_2 + 3),a mov dpl,r3 mov dph,r4 mov b,r5 mov a,r6 push ar3 push ar4 push ar5 push ar6 lcall __divulong mov r2,dpl mov r7,dph mov r0,b mov r1,a pop ar6 pop ar5 pop ar4 pop ar3 mov ar3,r2 mov ar4,r7 mov ar5,r0 mov ar6,r1; printfl.c 94 mov a,r3 orl a,r4 orl a,r5 orl a,r6 jz 00137$ ljmp 00112$00137$:; printfl.c 96; Peephole 111 removed ljmp by inverse jump logic jnb _sign,00117$00138$:; printfl.c 97 mov _ch,#0x2D; printfl.c 98 push _ch ; printfl.c 10100117$: mov r2,_pval_sp_1_1 mov a,r2 cjne a,_SP,00139$; Peephole 132 changed ljmp to sjmp sjmp 00120$00139$:; printfl.c 102 pop _ch ; printfl.c 103 mov dpl,_ch lcall _putchar; Peephole 132 changed ljmp to sjmp sjmp 00117$00120$: ret;------------------------------------------------------------;Allocation info for local variables in function 'printf_small';------------------------------------------------------------;fmt Allocated to stack - offset -5;ap Allocated to stack - offset 1;sloc1 Allocated to stack - offset 2;sloc0 Allocated to in memory with name '_printf_small_sloc0_1_0';sloc2 Allocated to in memory with name '_printf_small_sloc2_1_0'; printfl.c 107; -----------------------------------------; function printf_small; -----------------------------------------_printf_small: push _bp mov _bp,sp inc sp inc sp; printfl.c 111; Peephole 212 reduced add sequence to inc mov r0,_bp inc r0 mov a,_bp add a,#0xfb mov @r0,a00127$:; printfl.c 113 mov a,_bp add a,#0xfb mov r0,a mov ar3,@r0 inc r0 mov ar4,@r0 inc r0 mov ar5,@r0 mov dpl,r3 mov dph,r4 mov b,r5 mov a,_bp add a,#0x02 mov r0,a lcall __gptrget mov @r0,a mov a,_bp add a,#0x02 mov r0,a mov a,@r0 jnz 00149$ ljmp 00131$00149$:; printfl.c 114 mov a,_bp add a,#0x02 mov r0,a cjne @r0,#0x25,00150$ sjmp 00151$00150$: ljmp 00125$00151$:; printfl.c 115 clr _char_flag clr _string_flag clr _long_flag; printfl.c 116 inc r3 cjne r3,#0x00,00152$ inc r400152$: mov a,_bp add a,#0xfb mov r0,a mov @r0,ar3 inc r0 mov @r0,ar4 inc r0 mov @r0,ar5; printfl.c 117 mov dpl,r3 mov dph,r4 mov b,r5 lcall __gptrget mov r7,a cjne r7,#0x68,00153$; Peephole 132 changed ljmp to sjmp sjmp 00102$00153$:; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne r7,#0x6C,00103$;00154$:; Peephole 200 removed redundant sjmp00155$:; printfl.c 119 setb _long_flag; printfl.c 120 mov a,_bp add a,#0xfb mov r0,a mov a,#0x01 add a,r3 mov @r0,a; Peephole 180 changed mov to clr clr a addc a,r4 inc r0 mov @r0,a inc r0 mov @r0,ar5; printfl.c 121; printfl.c 123; Peephole 132 changed ljmp to sjmp sjmp 00103$00102$: setb _char_flag; printfl.c 124 mov a,_bp add a,#0xfb mov r0,a mov a,#0x01 add a,r3 mov @r0,a; Peephole 180 changed mov to clr clr a addc a,r4 inc r0 mov @r0,a inc r0 mov @r0,ar5; printfl.c 12500103$:; printfl.c 127 mov a,_bp add a,#0xfb mov r0,a mov dpl,@r0 inc r0 mov dph,@r0 inc r0 mov b,@r0 lcall __gptrget mov r3,a cjne r3,#0x63,00156$; Peephole 132 changed ljmp to sjmp sjmp 00107$00156$: cjne r3,#0x64,00157$; Peephole 132 changed ljmp to sjmp sjmp 00105$00157$: cjne r3,#0x6F,00158$; Peephole 132 changed ljmp to sjmp sjmp 00108$00158$: cjne r3,#0x73,00159$; Peephole 132 changed ljmp to sjmp sjmp 00104$00159$:; Peephole 132 changed ljmp to sjmp; printfl.c 129; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne r3,#0x78,00109$ sjmp 00106$;00160$:00104$: setb _string_flag; printfl.c 130; printfl.c 132; Peephole 132 changed ljmp to sjmp sjmp 00109$00105$: mov _radix,#0x0A; printfl.c 133; printfl.c 135; Peephole 132 changed ljmp to sjmp sjmp 00109$00106$: mov _radix,#0x10; printfl.c 136; printfl.c 138; Peephole 132 changed ljmp to sjmp sjmp 00109$00107$: mov _radix,#0x00; printfl.c 139; printfl.c 141; Peephole 132 changed ljmp to sjmp sjmp 00109$00108$: mov _radix,#0x08; printfl.c 14300109$:; printfl.c 145 jb _string_flag,00161$ ljmp 00114$00161$:; printfl.c 146; Peephole 212 reduced add sequence to inc mov r1,_bp inc r1 mov a,@r1 add a,#0xfd mov r0,a; Peephole 212 reduced add sequence to inc mov r1,_bp inc r1 mov @r1,ar0 mov _str,@r0 inc r0 mov (_str + 1),@r0 inc r0 mov (_str + 2),@r0 dec r0 dec r0; printfl.c 14700110$: mov dpl,_str mov dph,(_str + 1) mov b,(_str + 2) lcall __gptrget; Peephole 105 removed redundant mov mov _printf_small_sloc0_1_0,a jnz 00162$ ljmp 00129$00162$: mov dpl,_str mov dph,(_str + 1) mov b,(_str + 2) mov a,#0x01 add a,_str mov r4,a; Peephole 180 changed mov to clr clr a addc a,(_str + 1) mov r5,a mov r7,(_str + 2) mov ar2,r4 mov ar3,r5 mov ar6,r7 mov _str,r2 mov (_str + 1),r3 mov (_str + 2),r6 lcall __gptrget mov _printf_small_sloc2_1_0,a mov dpl,_printf_small_sloc2_1_0 push ar2 push ar3 push ar4 push ar5 push ar6 push ar7 lcall _putchar pop ar7 pop ar6 pop ar5 pop ar4 pop ar3 pop ar2; printfl.c 148; Peephole 132 changed ljmp to sjmp sjmp 00110$00114$:; printfl.c 151; Peephole 111 removed ljmp by inverse jump logic jnb _long_flag,00119$00163$:; printfl.c 152; Peephole 212 reduced add sequence to inc mov r1,_bp inc r1 mov a,@r1 add a,#0xfc mov r0,a; Peephole 212 reduced add sequence to inc mov r1,_bp inc r1 mov @r1,ar0 mov _val,@r0 inc r0 mov (_val + 1),@r0 inc r0 mov (_val + 2),@r0 inc r0 mov (_val + 3),@r0 dec r0 dec r0 dec r0; Peephole 132 changed ljmp to sjmp sjmp 00120$00119$:; printfl.c 154; Peephole 111 removed ljmp by inverse jump logic jnb _char_flag,00116$00164$:; printfl.c 155; Peephole 212 reduced add sequence to inc mov r1,_bp inc r1 mov a,@r1 dec a mov r0,a; Peephole 212 reduced add sequence to inc mov r1,_bp inc r1 mov @r1,ar0 mov ar2,@r0 mov _val,r2 mov a,r2 rlc a subb a,acc mov (_val + 1),a mov (_val + 2),a mov (_val + 3),a; Peephole 132 changed ljmp to sjmp sjmp 00120$00116$:; printfl.c 157; Peephole 212 reduced add sequence to inc mov r1,_bp inc r1 mov a,@r1 add a,#0xfe mov r0,a; Peephole 212 reduced add sequence to inc mov r1,_bp inc r1 mov @r1,ar0 mov ar2,@r0 inc r0 mov ar3,@r0 dec r0 mov _val,r2 mov (_val + 1),r3 mov a,r3 rlc a subb a,acc mov (_val + 2),a mov (_val + 3),a00120$:; printfl.c 159 mov a,_radix; Peephole 110 removed ljmp by inverse jump logic jz 00122$00165$: lcall _pval; Peephole 132 changed ljmp to sjmp sjmp 00129$00122$:; printfl.c 160 mov dpl,_val lcall _putchar; Peephole 132 changed ljmp to sjmp sjmp 00129$00125$:; printfl.c 163 mov a,_bp add a,#0x02 mov r0,a mov dpl,@r0 lcall _putchar00129$:; printfl.c 113 mov a,_bp add a,#0xfb mov r0,a inc @r0 cjne @r0,#0x00,00166$ inc r0 inc @r000166$: ljmp 00127$00131$: mov sp,_bp pop _bp ret .area CSEG (CODE)__str_0: .ascii "0123456789ABCDEF" .db 0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -