📄 ser_ir.asm
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:29 2001;-------------------------------------------------------- .module ser_ir ;--------------------------------------------------------; Public variables in this module;-------------------------------------------------------- .globl _ser_gets_PARM_2 .globl _ser_init .globl _ser_handler .globl _ser_putc .globl _ser_getc .globl _ser_puts .globl _ser_gets .globl _ser_can_xmt .globl _ser_can_rcv;--------------------------------------------------------; 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);--------------------------------------------------------; overlayable items in internal ram ;-------------------------------------------------------- .area OSEG (OVR,DATA);--------------------------------------------------------; indirectly addressable internal ram data;-------------------------------------------------------- .area ISEG (DATA);--------------------------------------------------------; bit data;-------------------------------------------------------- .area BSEG (BIT);--------------------------------------------------------; external ram data;-------------------------------------------------------- .area XSEG (XDATA)_rbuf: .ds 10_xbuf: .ds 10_rcnt: .ds 1_xcnt: .ds 1_rpos: .ds 1_xpos: .ds 1_busy: .ds 1_ser_putc_c_1_1:: .ds 1_ser_puts_s_1_1:: .ds 3_ser_gets_PARM_2:: .ds 1_ser_gets_s_1_1:: .ds 3;--------------------------------------------------------; global & static initialisations;-------------------------------------------------------- .area GSINIT (CODE) .area GSFINAL (CODE) .area GSINIT (CODE);--------------------------------------------------------; Home;-------------------------------------------------------- .area HOME (CODE) .area CSEG (CODE);--------------------------------------------------------; code;-------------------------------------------------------- .area CSEG (CODE);------------------------------------------------------------;Allocation info for local variables in function 'ser_init';------------------------------------------------------------; ser_ir.c 49; -----------------------------------------; function ser_init; -----------------------------------------_ser_init: ar2 = 0x02 ar3 = 0x03 ar4 = 0x04 ar5 = 0x05 ar6 = 0x06 ar7 = 0x07 ar0 = 0x00 ar1 = 0x01; ser_ir.c 51 clr _ES; ser_ir.c 52 mov dptr,#_xpos; Peephole 180 changed mov to clr; Peephole 180 changed mov to clr; Peephole 219 removed redundant clear; Peephole 180 changed mov to clr; Peephole 180 changed mov to clr; Peephole 219 removed redundant clear; Peephole 219a removed redundant clear clr a movx @dptr,a mov dptr,#_rpos movx @dptr,a mov dptr,#_xcnt movx @dptr,a mov dptr,#_rcnt movx @dptr,a; ser_ir.c 53 mov dptr,#_busy; Peephole 180 changed mov to clr clr a movx @dptr,a; ser_ir.c 54 mov _SCON,#0x50; ser_ir.c 55 orl _PCON,#0x80; ser_ir.c 56 anl _TMOD,#0x0F; ser_ir.c 57 orl _TMOD,#0x20; ser_ir.c 58 mov _TL1,#0xFD mov _TH1,#0xFD setb _TR1; ser_ir.c 59 setb _ES00101$: ret;------------------------------------------------------------;Allocation info for local variables in function 'ser_handler';------------------------------------------------------------; ser_ir.c 62; -----------------------------------------; function ser_handler; -----------------------------------------_ser_handler: push acc push b push dpl push dph push ar2 push ar3 push psw mov psw,#0x00; ser_ir.c 64; Peephole 111 removed ljmp by inverse jump logic jnb _RI,00104$00118$:; ser_ir.c 65 clr _RI; ser_ir.c 67 mov dptr,#_rcnt movx a,@dptr mov r2,a cjne r2,#0x0A,00119$00119$:; Peephole 108 removed ljmp by inverse jump logic jnc 00104$00120$:; ser_ir.c 68 mov dptr,#_rcnt mov a,#0x01 add a,r2 movx @dptr,a mov dptr,#_rpos movx a,@dptr; Peephole 214 reduced some extra movs mov r3,a add a,r2 mov r2,a mov b,#0x0A mov a,r2 div ab mov r2,b mov a,r2 add a,#_rbuf mov dpl,a; Peephole 180 changed mov to clr clr a addc a,#(_rbuf >> 8) mov dph,a mov a,_SBUF movx @dptr,a00104$:; ser_ir.c 70; Peephole 111 removed ljmp by inverse jump logic jnb _TI,00111$00121$:; ser_ir.c 71 clr _TI; ser_ir.c 72 mov dptr,#_xcnt movx a,@dptr; Peephole 100 removed redundant mov mov r2,a mov dptr,#_busy movx @dptr,a mov a,r2; Peephole 110 removed ljmp by inverse jump logic jz 00111$00122$:; ser_ir.c 73 mov a,r2 dec a mov dptr,#_xcnt movx @dptr,a; ser_ir.c 74 mov dptr,#_xpos movx a,@dptr; Peephole 214 reduced some extra movs mov r2,a add a,#0x01 ; Peephole 100 removed redundant mov mov r3,a mov dptr,#_xpos movx @dptr,a mov a,r2 add a,#_xbuf mov dpl,a; Peephole 180 changed mov to clr clr a addc a,#(_xbuf >> 8) mov dph,a movx a,@dptr mov _SBUF,a; ser_ir.c 75 cjne r3,#0x0A,00123$00123$:; Peephole 132 changed ljmp to sjmp; Peephole 160 removed sjmp by inverse jump logic jc 00111$00124$:; ser_ir.c 76 mov dptr,#_xpos; Peephole 180 changed mov to clr clr a movx @dptr,a00111$: pop psw pop ar3 pop ar2 pop dph pop dpl pop b pop acc reti;------------------------------------------------------------;Allocation info for local variables in function 'ser_putc';------------------------------------------------------------;c Allocated to in memory with name '_ser_putc_c_1_1'; ser_ir.c 81; -----------------------------------------; function ser_putc; -----------------------------------------_ser_putc:; ser_ir.c 92 push dpl mov dptr,#_ser_putc_c_1_1 pop acc movx @dptr,a; ser_ir.c 8300101$: mov dptr,#_xcnt movx a,@dptr mov r2,a cjne r2,#0x0A,00112$00112$:; Peephole 108 removed ljmp by inverse jump logic jnc 00101$00113$:; ser_ir.c 85 clr _ES; ser_ir.c 86 mov dptr,#_busy movx a,@dptr; Peephole 105 removed redundant mov mov r3,a; Peephole 110 removed ljmp by inverse jump logic jz 00105$00114$:; ser_ir.c 87 mov dptr,#_xcnt mov a,#0x01 add a,r2 movx @dptr,a mov dptr,#_xpos movx a,@dptr; Peephole 214 reduced some extra movs mov r3,a add a,r2 mov r2,a mov b,#0x0A mov a,r2 div ab mov r2,b mov a,r2 add a,#_xbuf mov r2,a; Peephole 180 changed mov to clr clr a addc a,#(_xbuf >> 8) mov r3,a mov dptr,#_ser_putc_c_1_1 movx a,@dptr; Peephole 136 removed redundant moves mov r4,a mov dpl,r2 mov dph,r3 movx @dptr,a; Peephole 132 changed ljmp to sjmp sjmp 00106$00105$:; ser_ir.c 89 mov dptr,#_ser_putc_c_1_1 movx a,@dptr mov _SBUF,a; ser_ir.c 90 mov dptr,#_busy mov a,#0x01 movx @dptr,a00106$:; ser_ir.c 92 setb _ES00107$: ret;------------------------------------------------------------;Allocation info for local variables in function 'ser_getc';------------------------------------------------------------;c Allocated to in memory with name '_ser_getc_c_1_1'; ser_ir.c 95; -----------------------------------------; function ser_getc; -----------------------------------------_ser_getc:; ser_ir.c 9800101$: mov dptr,#_rcnt movx a,@dptr; Peephole 105 removed redundant mov mov r2,a; Peephole 110 removed ljmp by inverse jump logic jz 00101$00111$:; ser_ir.c 100 clr _ES; ser_ir.c 101 mov a,r2 dec a mov dptr,#_rcnt movx @dptr,a; ser_ir.c 102 mov dptr,#_rpos movx a,@dptr; Peephole 214 reduced some extra movs mov r2,a add a,#0x01 ; Peephole 100 removed redundant mov mov r3,a mov dptr,#_rpos movx @dptr,a mov a,r2 add a,#_rbuf mov dpl,a; Peephole 180 changed mov to clr clr a addc a,#(_rbuf >> 8) mov dph,a movx a,@dptr mov r2,a; ser_ir.c 103 cjne r3,#0x0A,00112$00112$:; Peephole 132 changed ljmp to sjmp; Peephole 160 removed sjmp by inverse jump logic jc 00105$00113$:; ser_ir.c 104 mov dptr,#_rpos; Peephole 180 changed mov to clr clr a movx @dptr,a00105$:; ser_ir.c 105 setb _ES; ser_ir.c 106 mov dpl,r200106$: ret;------------------------------------------------------------;Allocation info for local variables in function 'ser_puts';------------------------------------------------------------;s Allocated to in memory with name '_ser_puts_s_1_1';c Allocated to in memory with name '_ser_puts_c_1_1'; ser_ir.c 110; -----------------------------------------; function ser_puts; -----------------------------------------_ser_puts:; ser_ir.c 0 push b push dph push dpl mov dptr,#_ser_puts_s_1_1 pop acc movx @dptr,a pop acc inc dptr movx @dptr,a pop acc inc dptr movx @dptr,a; ser_ir.c 11300103$: mov dptr,#_ser_puts_s_1_1 movx a,@dptr mov r2,a inc dptr movx a,@dptr mov r3,a inc dptr movx a,@dptr mov r4,a mov dpl,r2 mov dph,r3 mov b,r4 lcall __gptrget mov r5,a mov dptr,#_ser_puts_s_1_1 mov a,#0x01 add a,r2 movx @dptr,a; Peephole 180 changed mov to clr clr a addc a,r3 inc dptr movx @dptr,a inc dptr mov a,r4 movx @dptr,a mov a,r5; Peephole 110 removed ljmp by inverse jump logic jz 00106$00111$:; ser_ir.c 114; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne r5,#0x0A,00102$;00112$:; Peephole 200 removed redundant sjmp00113$: mov dpl,#0x0D push ar5 lcall _ser_putc pop ar500102$:; ser_ir.c 115 mov dpl,r5 lcall _ser_putc; Peephole 132 changed ljmp to sjmp sjmp 00103$00106$: ret;------------------------------------------------------------;Allocation info for local variables in function 'ser_gets';------------------------------------------------------------;len Allocated to in memory with name '_ser_gets_PARM_2';s Allocated to in memory with name '_ser_gets_s_1_1';pos Allocated to in memory with name '_ser_gets_pos_1_1';c Allocated to in memory with name '_ser_gets_c_1_1'; ser_ir.c 119; -----------------------------------------; function ser_gets; -----------------------------------------_ser_gets:; ser_ir.c 130 push b push dph push dpl mov dptr,#_ser_gets_s_1_1 pop acc movx @dptr,a pop acc inc dptr movx @dptr,a pop acc inc dptr movx @dptr,a; ser_ir.c 124 mov dptr,#_ser_gets_PARM_2 movx a,@dptr mov r2,a mov dptr,#_ser_gets_s_1_1 movx a,@dptr mov r3,a inc dptr movx a,@dptr mov r4,a inc dptr movx a,@dptr mov r5,a mov r6,#0x0000105$: mov ar7,r6 clr c mov a,r2 subb a,r6; Peephole 132 changed ljmp to sjmp; Peephole 160 removed sjmp by inverse jump logic jc 00107$00113$:; ser_ir.c 125 push ar2 push ar3 push ar4 push ar5 push ar6 push ar7 lcall _ser_getc mov r0,dpl pop ar7 pop ar6 pop ar5 pop ar4 pop ar3 pop ar2; ser_ir.c 126 cjne r0,#0x0D,00114$; Peephole 132 changed ljmp to sjmp sjmp 00105$00114$:; ser_ir.c 127 inc r6 mov a,r7 add a,r3 mov dpl,a; Peephole 180 changed mov to clr clr a addc a,r4 mov dph,a mov b,r5 mov a,r0 lcall __gptrput; ser_ir.c 128; Peephole 132 changed ljmp to sjmp; Peephole 199 optimized misc jump sequence cjne r0,#0x0A,00105$;00115$:; Peephole 200 removed redundant sjmp00116$:00107$:; ser_ir.c 130 mov dptr,#_ser_gets_s_1_1 movx a,@dptr mov r2,a inc dptr movx a,@dptr mov r3,a inc dptr movx a,@dptr mov r4,a mov a,r6 add a,r2 mov dpl,a; Peephole 180 changed mov to clr clr a addc a,r3 mov dph,a mov b,r4; Peephole 180 changed mov to clr clr a lcall __gptrput00108$: ret;------------------------------------------------------------;Allocation info for local variables in function 'ser_can_xmt';------------------------------------------------------------; ser_ir.c 133; -----------------------------------------; function ser_can_xmt; -----------------------------------------_ser_can_xmt:; ser_ir.c 135 mov dptr,#_xcnt movx a,@dptr mov r2,a clr c mov a,#0x0A subb a,r2 mov r2,a mov dpl,r200101$: ret;------------------------------------------------------------;Allocation info for local variables in function 'ser_can_rcv';------------------------------------------------------------; ser_ir.c 138; -----------------------------------------; function ser_can_rcv; -----------------------------------------_ser_can_rcv:; ser_ir.c 140 mov dptr,#_rcnt movx a,@dptr mov r2,a mov dpl,r200101$: ret .area CSEG (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -