time.asm
来自「很少见的源码公开的msc51和z80的c编译器。」· 汇编 代码 · 共 3,690 行 · 第 1/4 页
ASM
3,690 行
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:45 2001;-------------------------------------------------------- .module time .flat24 on ; 24 bit flat addressingdpx = 0x93 ; dpx register unknown to assemblerdps = 0x86 ; dps register unknown to assemblerdpl1 = 0x84 ; dpl1 register unknown to assemblerdph1 = 0x85 ; dph1 register unknown to assemblerdpx1 = 0x95 ; dpx1 register unknown to assemblerap = 0x9C ; ap register unknown to assembler;--------------------------------------------------------; Public variables in this module;-------------------------------------------------------- .globl ___day .globl ___month .globl _time .globl _asctime .globl _ctime .globl _localtime .globl _gmtime .globl _mktime;--------------------------------------------------------; special function registers;--------------------------------------------------------_P4 = 0x0080_SP = 0x0081_DPL = 0x0082_DPH = 0x0083_DPL1 = 0x0084_DPH1 = 0x0085_DPS = 0x0086_PCON = 0x0087_TCON = 0x0088_TMOD = 0x0089_TL0 = 0x008a_TL1 = 0x008b_TH0 = 0x008c_TH1 = 0x008d_CKCON = 0x008e_P1 = 0x0090_EXIF = 0x0091_P4CNT = 0x0092_DPX = 0x0093_DPX1 = 0x0095_SCON0 = 0x0098_SBUF0 = 0x0099_ESP = 0x009b_AP = 0x009c_ACON = 0x009d_P2 = 0x00a0_P5 = 0x00a1_P5CNT = 0x00a2_IE = 0x00a8_P3 = 0x00b0_IP = 0x00b8_SCON1 = 0x00c0_SBUF1 = 0x00c1_PMR = 0x00c4_MCON = 0x00c6_TA = 0x00c7_T2CON = 0x00c8_T2MOD = 0x00c9_RCAP2L = 0x00ca_RTL2 = 0x00ca_RCAP2H = 0x00cb_RTH2 = 0x00cb_TL2 = 0x00cc_TH2 = 0x00cd_PSW = 0x00d0_MCNT0 = 0x00d1_MCNT1 = 0x00d2_MA = 0x00d3_MB = 0x00d4_MC = 0x00d5_WDCON = 0x00d8_ACC = 0x00e0_EIE = 0x00e8_MXAX = 0x00ea_B = 0x00f0_EIP = 0x00f8;--------------------------------------------------------; special function bits ;--------------------------------------------------------_IT0 = 0x0088_IE0 = 0x0089_IT1 = 0x008a_IE1 = 0x008b_TR0 = 0x008c_TF0 = 0x008d_TR1 = 0x008e_TF1 = 0x008f_T2 = 0x0090_T2EX = 0x0091_RXD1 = 0x0092_TXD1 = 0x0093_INT2 = 0x0094_INT3 = 0x0095_INT4 = 0x0096_INT5 = 0x0097_RI_0 = 0x0098_TI_0 = 0x0099_RB8_0 = 0x009a_TB8_0 = 0x009b_REN_0 = 0x009c_SM2_0 = 0x009d_SM1_0 = 0x009e_SM0_0 = 0x009f_FE_0 = 0x009f_EX0 = 0x00a8_ET0 = 0x00a9_EX1 = 0x00aa_ET1 = 0x00ab_ES0 = 0x00ac_ET2 = 0x00ad_ES1 = 0x00ae_EA = 0x00af_RXD0 = 0x00b0_TXD0 = 0x00b1_INT0 = 0x00b2_INT1 = 0x00b3_T0 = 0x00b4_T1 = 0x00b5_WR = 0x00b6_RD = 0x00b7_PX0 = 0x00b8_PT0 = 0x00b9_PX1 = 0x00ba_PT1 = 0x00bb_PS0 = 0x00bc_PT2 = 0x00bd_PS1 = 0x00be_RI_1 = 0x00c0_TI_1 = 0x00c1_RB8_1 = 0x00c2_TB8_1 = 0x00c3_REN_1 = 0x00c4_SM2_1 = 0x00c5_SM1_1 = 0x00c6_SM0_1 = 0x00c7_FE_1 = 0x00c7_CP_RL = 0x00c8_C_T = 0x00c9_TR2 = 0x00ca_EXEN2 = 0x00cb_TCLK = 0x00cc_RCLK = 0x00cd_EXF2 = 0x00ce_TF2 = 0x00cf_P = 0x00d0_F1 = 0x00d1_OV = 0x00d2_RS0 = 0x00d3_RS1 = 0x00d4_F0 = 0x00d5_AC = 0x00d6_CY = 0x00d7_RWT = 0x00d8_EWT = 0x00d9_WTRF = 0x00da_PF1 = 0x00db_EPF1 = 0x00dc_POR = 0x00de_SMOD_1 = 0x00df_EX2 = 0x00e8_EX3 = 0x00e9_EX4 = 0x00ea_EX5 = 0x00eb_EWDI = 0x00ec_C1IE = 0x00ed_C0IE = 0x00ee_CANBIE = 0x00ef_PX2 = 0x00f8_PX3 = 0x00f9_PX4 = 0x00fa_PX5 = 0x00fb_PWDI = 0x00fc_C1IP = 0x00fd_C0IP = 0x00fe_CANBIP = 0x00ff;--------------------------------------------------------; 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)_time_now_1_1:: .ds 12_time_t_1_1:: .ds 4_time_sloc0_1_0:: .ds 1_ascTimeBuffer: .ds 32_CheckTime_timeptr_1_1: .ds 4_asctime_sloc0_1_0:: .ds 4_asctime_sloc1_1_0:: .ds 1_asctime_sloc2_1_0:: .ds 4_asctime_sloc3_1_0:: .ds 4_asctime_sloc4_1_0:: .ds 4_asctime_sloc5_1_0:: .ds 3_asctime_sloc6_1_0:: .ds 4_asctime_sloc7_1_0:: .ds 4_lastTime: .ds 12_gmtime_days_1_1:: .ds 4_gmtime_sloc0_1_0:: .ds 2_gmtime_sloc1_1_0:: .ds 4_gmtime_sloc2_1_0:: .ds 4_mktime_year_1_1:: .ds 2_mktime_month_1_1:: .ds 2_mktime_seconds_1_1:: .ds 4_mktime_sloc0_1_0: .ds 3_mktime_sloc1_1_0:: .ds 4;--------------------------------------------------------; global & static initialisations;-------------------------------------------------------- .area GSINIT (CODE) .area GSFINAL (CODE) .area GSINIT (CODE);--------------------------------------------------------; Home;-------------------------------------------------------- .area HOME (CODE) .area CSEG (CODE);--------------------------------------------------------; code;-------------------------------------------------------- .area CSEG (CODE); time.c 48; genFunction ; -----------------------------------------; function time; -----------------------------------------_time: ar2 = 0x02 ar3 = 0x03 ar4 = 0x04 ar5 = 0x05 ar6 = 0x06 ar7 = 0x07 ar0 = 0x00 ar1 = 0x01; time.c 58; genReceive mov r2,dpl mov r3,dph mov r4,dpx mov r5,b; time.c 50; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#_time_t_1_1; Peephole 101 removed redundant mov mov a,#0xFF movx @dptr,a inc dptr movx @dptr,a inc dptr; Peephole 101 removed redundant mov mov a,#0xFF movx @dptr,a inc dptr movx @dptr,a; time.c 52; genCast mov r6,#_time_now_1_1 mov r7,#(_time_now_1_1 >> 8) mov r0,#(_time_now_1_1 >> 16) mov r1,#0x01; genCall push ar2 push ar3 push ar4 push ar5 push ar6 push ar7 push ar0 push ar1 mov dpl,r6 mov dph,r7 mov dpx,r0 mov b,r1 lcall _RtcRead mov a,dpl mov dptr,#_time_sloc0_1_0 movx @dptr,a pop ar1 pop ar0 pop ar7 pop ar6 pop ar5 pop ar4 pop ar3 pop ar2; genIfx mov dptr,#_time_sloc0_1_0 movx a,@dptr; genIfxJump ; Peephole 110 removed ljmp by inverse jump logic jz 00102$00109$:; time.c 53; genCall push ar2 push ar3 push ar4 push ar5 mov dpl,r6 mov dph,r7 mov dpx,r0 mov b,r1 lcall _mktime mov r6,dpl mov r7,dph mov r0,dpx mov r1,b pop ar5 pop ar4 pop ar3 pop ar2; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#_time_t_1_1 mov a,r6 movx @dptr,a inc dptr mov a,r7 movx @dptr,a inc dptr mov a,r0 movx @dptr,a inc dptr mov a,r1 movx @dptr,a; genLabel 00102$:; time.c 55; genIfx ; toBoolean: generic ptr special case. mov a,r2 orl a,r3 orl a,r4; genIfxJump ; Peephole 110 removed ljmp by inverse jump logic jz 00104$00110$:; time.c 56; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 mov dps, #0x01 mov dptr, #_time_t_1_1 movx a,@dptr dec dps lcall __gptrput inc dptr inc dps inc dptr movx a,@dptr dec dps lcall __gptrput inc dptr inc dps inc dptr movx a,@dptr dec dps lcall __gptrput inc dptr inc dps inc dptr movx a,@dptr dec dps lcall __gptrput; genLabel 00104$:; time.c 58; genRet mov dps, #0x01 mov dptr, #_time_t_1_1 movx a,@dptr mov dpl,a inc dptr movx a,@dptr mov dph,a inc dptr movx a,@dptr mov dpx,a inc dptr movx a,@dptr mov b,a mov dps, #0x00; genLabel 00105$:; genEndFunction ret; time.c 71; genFunction ; -----------------------------------------; function CheckTime; -----------------------------------------_CheckTime:; time.c 0; genReceive push b push dpx push dph push dpl mov dptr,#_CheckTime_timeptr_1_1 pop acc movx @dptr,a pop acc inc dptr movx @dptr,a pop acc inc dptr movx @dptr,a pop acc inc dptr movx @dptr,a; time.c 74; genPointerGet ; genGenPointerGet mov dps, #0x01 mov dptr, #_CheckTime_timeptr_1_1 movx a,@dptr dec dps mov dpl,a inc dps inc dptr movx a,@dptr dec dps mov dph,a inc dps inc dptr movx a,@dptr dec dps mov dpx,a inc dps inc dptr movx a,@dptr mov b,a mov dps, #0x00 lcall __gptrget mov r6,a; genCmpLt ; genCmp cjne r6,#0x00,00148$00148$:; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00104$00149$:; genPointerSet mov dps, #0x01 mov dptr, #_CheckTime_timeptr_1_1 movx a,@dptr mov dpl,a inc dptr movx a,@dptr mov dph,a inc dptr movx a,@dptr mov dpx,a inc dptr movx a,@dptr mov b,a; Peephole 3.a changed mov to clr clr a mov dps,a lcall __gptrput; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00105$00104$:; time.c 75; genCmpGt ; genCmp clr c; genCmp #1: 0/0/0 mov a,#0x3B; genCmp #2; genCmp #4; genCmp #4.2 subb a,r6; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00105$00150$:; genPointerSet mov dps, #0x01 mov dptr, #_CheckTime_timeptr_1_1 movx a,@dptr mov dpl,a inc dptr movx a,@dptr mov dph,a inc dptr movx a,@dptr mov dpx,a inc dptr movx a,@dptr mov b,a mov dps, #0x00 mov a,#0x3B lcall __gptrput; genLabel 00105$:; time.c 76; genPlus mov dptr,#_CheckTime_timeptr_1_1; Swapped plus args. movx a,@dptr add a,#0x01 mov r6,a inc dptr movx a,@dptr addc a,#0x00 mov r7,a inc dptr movx a,@dptr addc a,#0x00 mov r0,a inc dptr movx a,@dptr mov r1,a; genPointerGet ; genGenPointerGet mov dpl,r6 mov dph,r7 mov dpx,r0 mov b,r1 lcall __gptrget mov r2,a; genCmpLt ; genCmp cjne r2,#0x00,00151$00151$:; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00109$00152$:; genPointerSet mov dpl,r6 mov dph,r7 mov dpx,r0 mov b,r1; Peephole 180 changed mov to clr clr a lcall __gptrput; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00110$00109$:; time.c 77; genCmpGt ; genCmp clr c; genCmp #1: 0/0/0 mov a,#0x3B; genCmp #2; genCmp #4; genCmp #4.2 subb a,r2; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00110$00153$:; genPointerSet mov dpl,r6 mov dph,r7 mov dpx,r0 mov b,r1 mov a,#0x3B lcall __gptrput; genLabel 00110$:; time.c 78; genPlus mov dptr,#_CheckTime_timeptr_1_1; Swapped plus args. movx a,@dptr add a,#0x02 mov r2,a inc dptr movx a,@dptr addc a,#0x00 mov r3,a inc dptr movx a,@dptr addc a,#0x00 mov r4,a inc dptr movx a,@dptr mov r5,a; genPointerGet ; genGenPointerGet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 lcall __gptrget mov r6,a; genCmpLt ; genCmp cjne r6,#0x00,00154$00154$:; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00114$00155$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5; Peephole 180 changed mov to clr clr a lcall __gptrput; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00115$00114$:; time.c 79; genCmpGt ; genCmp clr c; genCmp #1: 0/0/0 mov a,#0x17; genCmp #2; genCmp #4; genCmp #4.2 subb a,r6; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00115$00156$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 mov a,#0x17 lcall __gptrput; genLabel 00115$:; time.c 80; genPlus mov dptr,#_CheckTime_timeptr_1_1; Swapped plus args. movx a,@dptr add a,#0x07 mov r2,a inc dptr movx a,@dptr addc a,#0x00 mov r3,a inc dptr movx a,@dptr addc a,#0x00 mov r4,a inc dptr movx a,@dptr mov r5,a; genPointerGet ; genGenPointerGet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 lcall __gptrget mov r6,a; genCmpLt ; genCmp cjne r6,#0x00,00157$00157$:; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00119$00158$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5; Peephole 180 changed mov to clr clr a lcall __gptrput; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00120$00119$:; time.c 81; genCmpGt ; genCmp clr c; genCmp #1: 0/0/0 mov a,#0x06; genCmp #2; genCmp #4; genCmp #4.2 subb a,r6; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00120$00159$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 mov a,#0x06 lcall __gptrput; genLabel 00120$:; time.c 82; genPlus mov dptr,#_CheckTime_timeptr_1_1; Swapped plus args. movx a,@dptr add a,#0x03 mov r2,a inc dptr movx a,@dptr addc a,#0x00 mov r3,a inc dptr movx a,@dptr addc a,#0x00 mov r4,a inc dptr movx a,@dptr mov r5,a; genPointerGet ; genGenPointerGet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 lcall __gptrget mov r6,a; genCmpLt ; genCmp cjne r6,#0x01,00160$00160$:; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00124$00161$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 mov a,#0x01 lcall __gptrput; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00125$00124$:; time.c 83; genCmpGt ; genCmp clr c; genCmp #1: 0/0/0 mov a,#0x1F; genCmp #2; genCmp #4; genCmp #4.2 subb a,r6; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00125$00162$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 mov a,#0x1F lcall __gptrput; genLabel 00125$:; time.c 84; genPlus mov dptr,#_CheckTime_timeptr_1_1; Swapped plus args. movx a,@dptr add a,#0x04 mov r2,a inc dptr movx a,@dptr addc a,#0x00 mov r3,a inc dptr movx a,@dptr addc a,#0x00 mov r4,a inc dptr movx a,@dptr mov r5,a; genPointerGet ; genGenPointerGet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 lcall __gptrget mov r6,a; genCmpLt ; genCmp cjne r6,#0x00,00163$00163$:; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00129$00164$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5; Peephole 180 changed mov to clr clr a lcall __gptrput; genGoto ; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00130$00129$:; time.c 85; genCmpGt ; genCmp clr c; genCmp #1: 0/0/0 mov a,#0x0B; genCmp #2; genCmp #4; genCmp #4.2 subb a,r6; genIfxJump ; Peephole 108 removed ljmp by inverse jump logic jnc 00130$00165$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 mov a,#0x0B lcall __gptrput; genLabel 00130$:; time.c 86; genPlus mov dptr,#_CheckTime_timeptr_1_1; Swapped plus args. movx a,@dptr add a,#0x05 mov r2,a inc dptr movx a,@dptr addc a,#0x00 mov r3,a inc dptr movx a,@dptr addc a,#0x00 mov r4,a inc dptr movx a,@dptr mov r5,a; genPointerGet ; genGenPointerGet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 lcall __gptrget mov r6,a inc dptr lcall __gptrget
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?