📄 printf_large.asm
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:42 2001;-------------------------------------------------------- .module printf_large .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 _printf .globl _sprintf;--------------------------------------------------------; 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);--------------------------------------------------------; global & static initialisations;-------------------------------------------------------- .area GSINIT (CODE) .area GSFINAL (CODE) .area GSINIT (CODE);--------------------------------------------------------; Home;-------------------------------------------------------- .area HOME (CODE) .area CSEG (CODE);--------------------------------------------------------; code;-------------------------------------------------------- .area CSEG (CODE); printf_large.c 28; genFunction ; -----------------------------------------; function printf; -----------------------------------------_printf: ar2 = 0x02 ar3 = 0x03 ar4 = 0x04 ar5 = 0x05 ar6 = 0x06 ar7 = 0x07 ar0 = 0x00 ar1 = 0x01 push _bp mov _bp,sp mov a,sp add a,#0x04 mov sp,a; printf_large.c 33; genAddrOf mov a,_bp add a,#0xf9 mov r2,a mov r3,#0x00 mov r4,#0x40; genCast mov a,_bp add a,#0x01 mov dpx,#0x40 mov dph,#0x00 mov dpl, a mov a,r2 movx @dptr,a inc dptr mov a,r3 movx @dptr,a inc dptr mov a,r4 movx @dptr,a inc dptr mov a,#0x01 movx @dptr,a; printf_large.c 34; genAssign mov a,_bp add a,#0xf9 mov dpx,#0x40 mov dph,#0x00 mov dpl, a; genAssign: resultIsFar = FALSE movx a,@dptr mov r6,a inc dptr movx a,@dptr mov r7,a inc dptr movx a,@dptr mov r2,a inc dptr movx a,@dptr mov r3,a; genAssign mov a,_bp add a,#0x01 mov dpx,#0x40 mov dph,#0x00 mov dpl, a; genAssign: resultIsFar = TRUE; genFarFarAssign (390 auto-toggle fun) mov dps, #0x21 mov dptr,#_vprintf_PARM_2 movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a mov dps, #0; genCall mov dpl,r6 mov dph,r7 mov dpx,r2 mov b,r3 lcall _vprintf mov r2,dpl mov r3,dph; genAssign ; genAssign: resultIsFar = TRUE; printf_large.c 37; genRet mov dpl,r2 mov dph,r3; genLabel 00101$:; genEndFunction mov sp,_bp pop _bp ret; printf_large.c 40; genFunction ; -----------------------------------------; function sprintf; -----------------------------------------_sprintf: push _bp mov _bp,sp mov a,sp add a,#0x08 mov sp,a; printf_large.c 45; genAddrOf mov a,_bp add a,#0xf5 mov r2,a mov r3,#0x00 mov r4,#0x40; genCast mov a,_bp add a,#0x01 mov dpx,#0x40 mov dph,#0x00 mov dpl, a mov a,r2 movx @dptr,a inc dptr mov a,r3 movx @dptr,a inc dptr mov a,r4 movx @dptr,a inc dptr mov a,#0x01 movx @dptr,a; printf_large.c 46; genAssign mov a,_bp add a,#0xf9 mov dpx,#0x40 mov dph,#0x00 mov dpl, a; genAssign: resultIsFar = FALSE movx a,@dptr mov r6,a inc dptr movx a,@dptr mov r7,a inc dptr movx a,@dptr mov r2,a inc dptr movx a,@dptr mov r3,a; genAssign mov a,_bp add a,#0xf5 mov dpx,#0x40 mov dph,#0x00 mov dpl, a; genAssign: resultIsFar = TRUE; genFarFarAssign mov a,_bp add a,#0x05 mov dpx1,#0x40 mov dph1,#0x00 mov dpl1, a movx a,@dptr inc dps movx @dptr,a dec dps inc dptr movx a,@dptr inc dps inc dptr movx @dptr,a dec dps inc dptr movx a,@dptr inc dps inc dptr movx @dptr,a dec dps inc dptr movx a,@dptr inc dps inc dptr movx @dptr,a mov dps, #0x00; genAssign mov a,_bp add a,#0x05 mov dpx,#0x40 mov dph,#0x00 mov dpl, a; genAssign: resultIsFar = TRUE; genFarFarAssign (390 auto-toggle fun) mov dps, #0x21 mov dptr,#_vsprintf_PARM_2 movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a mov dps, #0; genAssign mov a,_bp add a,#0x01 mov dpx,#0x40 mov dph,#0x00 mov dpl, a; genAssign: resultIsFar = TRUE; genFarFarAssign (390 auto-toggle fun) mov dps, #0x21 mov dptr,#_vsprintf_PARM_3 movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a inc dptr inc dptr movx a,@dptr movx @dptr,a mov dps, #0; genCall mov dpl,r6 mov dph,r7 mov dpx,r2 mov b,r3 lcall _vsprintf mov r2,dpl mov r3,dph; genAssign ; genAssign: resultIsFar = TRUE; printf_large.c 49; genRet mov dpl,r2 mov dph,r3; genLabel 00101$:; genEndFunction mov sp,_bp pop _bp ret .area CSEG (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -