📄 gets.asm
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:44 2001;-------------------------------------------------------- .module gets .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 _gets;--------------------------------------------------------; 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)_gets_count_1_1:: .ds 2;--------------------------------------------------------; global & static initialisations;-------------------------------------------------------- .area GSINIT (CODE) .area GSFINAL (CODE) .area GSINIT (CODE);--------------------------------------------------------; Home;-------------------------------------------------------- .area HOME (CODE) .area CSEG (CODE);--------------------------------------------------------; code;-------------------------------------------------------- .area CSEG (CODE); gets.c 3; genFunction ; -----------------------------------------; function gets; -----------------------------------------_gets: ar2 = 0x02 ar3 = 0x03 ar4 = 0x04 ar5 = 0x05 ar6 = 0x06 ar7 = 0x07 ar0 = 0x00 ar1 = 0x01; gets.c 0; genReceive mov r2,dpl mov r3,dph mov r4,dpx mov r5,b; gets.c 5; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#_gets_count_1_1 clr a movx @dptr,a inc dptr movx @dptr,a; gets.c 7; genLabel 00109$:; gets.c 8; genCall push ar2 push ar3 push ar4 push ar5 lcall _getchar mov r0,dpl pop ar5 pop ar4 pop ar3 pop ar2; genAssign ; genAssign: resultIsFar = TRUE; gets.c 9; genCmpEq ; gencjneshort mov a,r0 cjne a,#0x08,00118$; Peephole 132 changed ljmp to sjmp sjmp 00103$00118$:; genCmpEq ; gencjneshort mov a,r0 cjne a,#0x0A,00119$ ljmp 00104$00119$:; genCmpEq ; gencjneshort mov a,r0 cjne a,#0x0D,00120$ ljmp 00104$00120$:; genGoto ljmp 00106$; gets.c 18; genLabel 00103$:; gets.c 11; genIfx mov dptr,#_gets_count_1_1 push b movx a,@dptr mov b, a inc dptr movx a,@dptr orl b,a mov a,b pop b; genIfxJump ; Peephole 110 removed ljmp by inverse jump logic jz 00109$00121$:; gets.c 12; genIpush push ar0; genCall push ar2 push ar3 push ar4 push ar5 push ar0 mov dpl,#0x08 lcall _putchar pop ar0 pop ar5 pop ar4 pop ar3 pop ar2; gets.c 13; genCall push ar2 push ar3 push ar4 push ar5 push ar0 mov dpl,#0x20 lcall _putchar pop ar0 pop ar5 pop ar4 pop ar3 pop ar2; gets.c 14; genCall push ar2 push ar3 push ar4 push ar5 push ar0 mov dpl,#0x08 lcall _putchar pop ar0 pop ar5 pop ar4 pop ar3 pop ar2; gets.c 15; genMinus mov a,r2 add a,#0xff mov r1,a mov a,r3 addc a,#0xff mov r0,a mov a,r4 addc a,#0xff mov r6,a mov ar7,r5; genAssign ; genAssign: resultIsFar = TRUE mov ar2,r1 mov ar3,r0 mov ar4,r6 mov ar5,r7; gets.c 16; genMinus mov dptr,#_gets_count_1_1 movx a,@dptr add a,#0xff mov r6,a inc dptr movx a,@dptr addc a,#0xff mov r7,a; genAssign ; genAssign: resultIsFar = TRUE mov dptr,#_gets_count_1_1 mov a,r6 movx @dptr,a inc dptr mov a,r7 movx @dptr,a; gets.c 18; genIpop pop ar0; genGoto ljmp 00109$; gets.c 21; genLabel 00104$:; genCall push ar2 push ar3 push ar4 push ar5 push ar0 mov dpl,#0x0D lcall _putchar pop ar0 pop ar5 pop ar4 pop ar3 pop ar2; gets.c 22; genCall push ar2 push ar3 push ar4 push ar5 push ar0 mov dpl,#0x0A lcall _putchar pop ar0 pop ar5 pop ar4 pop ar3 pop ar2; gets.c 23; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5; Peephole 180 changed mov to clr clr a lcall __gptrput; gets.c 24; genRet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5; gets.c 26; genLabel ; Peephole 132 changed ljmp to sjmp sjmp 00111$00106$:; genPointerSet mov dpl,r2 mov dph,r3 mov dpx,r4 mov b,r5 mov a,r0 lcall __gptrput; genPlus inc r2 cjne r2,#0x00,00122$ inc r3 cjne r3,#0x00,00122$ inc r400122$:; did genPlusIncr; gets.c 27; genPlus mov dptr,#_gets_count_1_1; Swapped plus args. movx a,@dptr add a,#0x01 movx @dptr,a inc dptr movx a,@dptr addc a,#0x00 movx @dptr,a; gets.c 28; genCall push ar2 push ar3 push ar4 push ar5 mov dpl,r0 lcall _putchar pop ar5 pop ar4 pop ar3 pop ar2; gets.c 30; genGoto ljmp 00109$; genLabel 00111$:; genEndFunction ret .area CSEG (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -