⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _ser.asm

📁 很少见的源码公开的msc51和z80的c编译器。
💻 ASM
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:38 2001;--------------------------------------------------------	.module _ser	.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 _ser_rxBuffer	.globl _ser_txBuffer	.globl _ser_rxIndexOut	.globl _ser_rxIndexIn	.globl _ser_txIndexOut	.globl _ser_txIndexIn	.globl _ser_init	.globl _ser_interrupt_handler	.globl _ser_putc	.globl _ser_getc	.globl _ser_printString	.globl _ser_charAvail;--------------------------------------------------------; 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_T2CON	=	0x00c8_RCAP2L	=	0x00ca_RCAP2H	=	0x00cb_TL2	=	0x00cc_TH2	=	0x00cd;--------------------------------------------------------; 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_ET2	=	0x00ad_T2CON_0	=	0x00c8_T2CON_1	=	0x00c9_T2CON_2	=	0x00ca_T2CON_3	=	0x00cb_T2CON_4	=	0x00cc_T2CON_5	=	0x00cd_T2CON_6	=	0x00ce_T2CON_7	=	0x00cf_CP_RL2	=	0x00c8_C_T2	=	0x00c9_TR2	=	0x00ca_EXEN2	=	0x00cb_TCLK	=	0x00cc_RCLK	=	0x00cd_EXF2	=	0x00ce_TF2	=	0x00cf;--------------------------------------------------------; 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)_ser_txBusy:	.ds 1;--------------------------------------------------------; external ram data;--------------------------------------------------------	.area XSEG    (XDATA)_ser_txIndexIn::	.ds 1_ser_txIndexOut::	.ds 1_ser_rxIndexIn::	.ds 1_ser_rxIndexOut::	.ds 1_ser_txBuffer::	.ds 256_ser_rxBuffer::	.ds 256;--------------------------------------------------------; global & static initialisations;--------------------------------------------------------	.area GSINIT  (CODE)	.area GSFINAL (CODE)	.area GSINIT  (CODE);--------------------------------------------------------; Home;--------------------------------------------------------	.area HOME	 (CODE)	.area CSEG    (CODE);--------------------------------------------------------; code;--------------------------------------------------------	.area CSEG    (CODE);	_ser.c 49;	genFunction ;	-----------------------------------------;	 function ser_init;	-----------------------------------------_ser_init:	ar2 = 0x02	ar3 = 0x03	ar4 = 0x04	ar5 = 0x05	ar6 = 0x06	ar7 = 0x07	ar0 = 0x00	ar1 = 0x01;	_ser.c 51;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_ES;	_ser.c 53;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_ser_txBusy;	_ser.c 55;	genAssign ;	genAssign: resultIsFar = TRUE	mov	dptr,#_ser_txIndexIn; Peephole 180   changed mov to clr;	_ser.c 56;	genAssign ;	genAssign: resultIsFar = TRUE; Peephole 180   changed mov to clr; Peephole 219 removed redundant clear;	_ser.c 57;	genAssign ;	genAssign: resultIsFar = TRUE; Peephole 180   changed mov to clr;	_ser.c 58;	genAssign ;	genAssign: resultIsFar = TRUE; Peephole 180   changed mov to clr; Peephole 219 removed redundant clear; Peephole 219a removed redundant clear	clr   a	movx  @dptr,a	mov   dptr,#_ser_txIndexOut	movx  @dptr,a	mov   dptr,#_ser_rxIndexIn	movx  @dptr,a	mov   dptr,#_ser_rxIndexOut	movx  @dptr,a;	_ser.c 60;	genAssign ;	genAssign: resultIsFar = FALSE	mov	_T2CON,#0x30;	_ser.c 63;	genAssign ;	genAssign: resultIsFar = FALSE	mov	_RCAP2H,#0xFF;	_ser.c 64;	genAssign ;	genAssign: resultIsFar = FALSE	mov	_RCAP2L,#0xDD;	_ser.c 67;	genAssign ;	genAssign: resultIsFar = FALSE	mov	_T2CON,#0x34;	_ser.c 69;	genAssign ;	genAssign: resultIsFar = FALSE	mov	_SCON,#0x50;	_ser.c 71;	genIfx ;	genIfxJump ; Peephole 111   removed ljmp by inverse jump logic	jnb  _TI,00102$00109$:;	_ser.c 72;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_TI;	genLabel 00102$:;	_ser.c 74;	genIfx ;	genIfxJump ; Peephole 111   removed ljmp by inverse jump logic	jnb  _RI,00104$00110$:;	_ser.c 75;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_RI;	genLabel 00104$:;	_ser.c 78;	genAssign ;	genAssign: resultIsFar = FALSE	setb	_ES;	genLabel 00105$:;	genEndFunction 	ret;	_ser.c 82;	genFunction ;	-----------------------------------------;	 function ser_interrupt_handler;	-----------------------------------------_ser_interrupt_handler:	ar2 = 0x0a	ar3 = 0x0b	ar4 = 0x0c	ar5 = 0x0d	ar6 = 0x0e	ar7 = 0x0f	ar0 = 0x08	ar1 = 0x09	push	acc	push	b	push	dpl	push	dph	push	dpx	push	dps	mov	dps, #0x00	push	dpl1	push	dph1	push	dpx1	push	ap	push	psw	mov	psw,#0x08;	_ser.c 84;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_ES;	_ser.c 86;	genIfx ;	genIfxJump ; Peephole 111   removed ljmp by inverse jump logic	jnb  _TI,00105$00113$:;	_ser.c 87;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_TI;	_ser.c 88;	genCmpEq 	mov	dptr,#_ser_txIndexOut;	gencjneshort; Peephole 220a removed bogus DPS set	mov     dps, #0x01	mov     dptr, #_ser_txIndexIn	movx	a,@dptr	mov	dps, #0x00	mov	b,a	movx	a,@dptr; Peephole 132   changed ljmp to sjmp; Peephole 199   optimized misc jump sequence	cjne a,b,00102$;00114$:; Peephole 200   removed redundant sjmp00115$:;	_ser.c 89;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_ser_txBusy;	genGoto ;	genLabel ; Peephole 132   changed ljmp to sjmp	sjmp 00105$00102$:;	_ser.c 92;	genAssign 	mov	dptr,#_ser_txIndexOut;	genAssign: resultIsFar = FALSE	movx	a,@dptr	mov	r2,a;	genPlus 	mov	dptr,#_ser_txIndexOut	mov	a,#0x01	add	a,r2	movx	@dptr,a;	genPlus 	mov	a,r2	add	a,#_ser_txBuffer	mov	r2,a; Peephole 180   changed mov to clr	clr  a	addc	a,#(_ser_txBuffer >> 8)	mov	r3,a; Peephole 180   changed mov to clr	clr  a	addc	a,#(_ser_txBuffer >> 16)	mov	r4,a;	genPointerGet ;	genFarPointerGet	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	movx	a,@dptr	mov	_SBUF,a;	genLabel 00105$:;	_ser.c 96;	genIfx ;	genIfxJump ; Peephole 111   removed ljmp by inverse jump logic	jnb  _RI,00107$00116$:;	_ser.c 97;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_RI;	_ser.c 98;	genAssign 	mov	dptr,#_ser_rxIndexIn;	genAssign: resultIsFar = FALSE	movx	a,@dptr	mov	r2,a;	genPlus 	mov	dptr,#_ser_rxIndexIn	mov	a,#0x01	add	a,r2	movx	@dptr,a;	genPlus 	mov	a,r2	add	a,#_ser_rxBuffer	mov	r2,a; Peephole 180   changed mov to clr	clr  a	addc	a,#(_ser_rxBuffer >> 8)	mov	r3,a; Peephole 180   changed mov to clr	clr  a	addc	a,#(_ser_rxBuffer >> 16)	mov	r4,a;	genPointerSet 	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	mov	a,_SBUF	movx	@dptr,a;	genLabel 00107$:;	_ser.c 101;	genAssign ;	genAssign: resultIsFar = FALSE	setb	_ES;	genLabel 00108$:;	genEndFunction 	pop	psw	pop	ap	pop	dpx1	pop	dph1	pop	dpl1	pop	dps	pop	dpx	pop	dph	pop	dpl	pop	b	pop	acc	reti;	_ser.c 105;	genFunction ;	-----------------------------------------;	 function ser_putc;	-----------------------------------------_ser_putc:	ar2 = 0x02	ar3 = 0x03	ar4 = 0x04	ar5 = 0x05	ar6 = 0x06	ar7 = 0x07	ar0 = 0x00	ar1 = 0x01;	_ser.c 117;	genReceive 	mov	r2,dpl;	_ser.c 107;	genAssign ;	genAssign: resultIsFar = FALSE	clr	_ES;	_ser.c 109;	genIfx ;	genIfxJump ; Peephole 111   removed ljmp by inverse jump logic	jnb  _ser_txBusy,00102$00107$:;	_ser.c 110;	genAssign 	mov	dptr,#_ser_txIndexIn;	genAssign: resultIsFar = FALSE	movx	a,@dptr	mov	r3,a;	genPlus 	mov	dptr,#_ser_txIndexIn	mov	a,#0x01	add	a,r3	movx	@dptr,a;	genPlus 	mov	a,r3	add	a,#_ser_txBuffer	mov	r3,a; Peephole 180   changed mov to clr	clr  a	addc	a,#(_ser_txBuffer >> 8)	mov	r4,a; Peephole 180   changed mov to clr	clr  a	addc	a,#(_ser_txBuffer >> 16)	mov	r5,a;	genPointerSet 	mov	dpl,r3	mov	dph,r4	mov	dpx,r5	mov	a,r2	movx	@dptr,a;	genGoto ;	genLabel ; Peephole 132   changed ljmp to sjmp	sjmp 00103$00102$:;	_ser.c 113;	genAssign ;	genAssign: resultIsFar = FALSE	setb	_ser_txBusy;	_ser.c 114;	genAssign ;	genAssign: resultIsFar = FALSE	mov	_SBUF,r2;	genLabel 00103$:;	_ser.c 117;	genAssign ;	genAssign: resultIsFar = FALSE	setb	_ES;	genLabel 00104$:;	genEndFunction 	ret;	_ser.c 121;	genFunction ;	-----------------------------------------;	 function ser_getc;	-----------------------------------------_ser_getc:;	_ser.c 126;	genCmpEq 	mov	dptr,#_ser_rxIndexOut;	gencjneshort; Peephole 220a removed bogus DPS set	mov     dps, #0x01	mov     dptr, #_ser_rxIndexIn	movx	a,@dptr	mov	dps, #0x00	mov	b,a	movx	a,@dptr	cjne	a,b,00107$; Peephole 132   changed ljmp to sjmp	sjmp 00102$00107$:;	_ser.c 127;	genAssign 	mov	dptr,#_ser_rxIndexOut;	genAssign: resultIsFar = FALSE	movx	a,@dptr	mov	r2,a;	genPlus 	mov	dptr,#_ser_rxIndexOut	mov	a,#0x01	add	a,r2	movx	@dptr,a;	genPlus 	mov	a,r2	add	a,#_ser_rxBuffer	mov	r2,a; Peephole 180   changed mov to clr	clr  a	addc	a,#(_ser_rxBuffer >> 8)	mov	r3,a; Peephole 180   changed mov to clr	clr  a	addc	a,#(_ser_rxBuffer >> 16)	mov	r4,a;	genPointerGet ;	genFarPointerGet	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	movx	a,@dptr	mov	r2,a;	genAssign ;	genAssign: resultIsFar = TRUE;	genGoto ;	genLabel ; Peephole 132   changed ljmp to sjmp	sjmp 00103$00102$:;	_ser.c 130;	genAssign ;	genAssign: resultIsFar = TRUE	mov	r2,#0x00;	genLabel 00103$:;	_ser.c 134;	genAssign ;	genAssign: resultIsFar = TRUE;	genRet 	mov	dpl,r2;	genLabel 00104$:;	genEndFunction 	ret;	_ser.c 138;	genFunction ;	-----------------------------------------;	 function ser_printString;	-----------------------------------------_ser_printString:;	_ser.c 0;	genReceive 	mov	r2,dpl	mov	r3,dph	mov	r4,dpx	mov	r5,b;	_ser.c 140;	genAssign ;	genAssign: resultIsFar = TRUE;	genLabel 00101$:;	genPointerGet ;	genGenPointerGet 	mov	dpl,r2	mov	dph,r3	mov	dpx,r4	mov	b,r5	lcall	__gptrget;	genIfx ; Peephole 105   removed redundant mov	mov  r6,a;	genIfxJump ; Peephole 110   removed ljmp by inverse jump logic	jz  00104$00108$:;	_ser.c 141;	genPlus 	inc	r2	cjne	r2,#0x00,00109$	inc	r3	cjne	r3,#0x00,00109$	inc	r400109$:;	did genPlusIncr;	genAssign ;	genAssign: resultIsFar = FALSE;	genCall 	push	ar2	push	ar3	push	ar4	push	ar5	mov	dpl,r6	lcall	_ser_putc	pop	ar5	pop	ar4	pop	ar3	pop	ar2;	genGoto ;	genLabel ; Peephole 132   changed ljmp to sjmp	sjmp 00101$00104$:;	genEndFunction 	ret;	_ser.c 146;	genFunction ;	-----------------------------------------;	 function ser_charAvail;	-----------------------------------------_ser_charAvail:;	_ser.c 148;	genAssign ;	genAssign: resultIsFar = TRUE	mov	r2,#0x00;	_ser.c 150;	genCmpEq 	mov	dptr,#_ser_rxIndexOut;	gencjneshort; Peephole 220a removed bogus DPS set	mov     dps, #0x01	mov     dptr, #_ser_rxIndexIn	movx	a,@dptr	mov	dps, #0x00	mov	b,a	movx	a,@dptr	cjne	a,b,00106$; Peephole 132   changed ljmp to sjmp	sjmp 00102$00106$:;	_ser.c 151;	genAssign ;	genAssign: resultIsFar = TRUE	mov	r2,#0x01;	genLabel 00102$:;	_ser.c 154;	genRet 	mov	dpl,r2;	genLabel 00103$:;	genEndFunction 	ret	.area CSEG    (CODE)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -