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

📄 ser_ir.asm

📁 很少见的源码公开的msc51和z80的c编译器。
💻 ASM
字号:
;--------------------------------------------------------; File Created by SDCC : FreeWare ANSI-C Compiler; Version 2.3.0 Thu Sep 20 10:57:18 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)_rbuf:	.ds 10_xbuf:	.ds 10_rcnt:	.ds 1_xcnt:	.ds 1_rpos:	.ds 1_xpos:	.ds 1_busy:	.ds 1_ser_gets_PARM_2::	.ds 1;--------------------------------------------------------; overlayable items in internal ram ;--------------------------------------------------------	.area _DUMMY	.area	OSEG    (OVR,DATA)	.area _DUMMY	.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);------------------------------------------------------------;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	_xpos,#0x00	mov	_rpos,#0x00	mov	_xcnt,#0x00	mov	_rcnt,#0x00;	ser_ir.c 53	mov	_busy,#0x00;	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	ar0	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	clr	c	mov	a,_rcnt	subb	a,#0x0A; Peephole 108   removed ljmp by inverse jump logic	jnc  00104$00119$:;	ser_ir.c 68	mov	r2,_rcnt	inc	_rcnt	mov	a,r2	add	a,_rpos	mov	r2,a	mov	b,#0x0A	mov	a,r2	div	ab	mov	r2,b	mov	a,r2	add	a,#_rbuf	mov	r0,acc	mov	@r0,_SBUF00104$:;	ser_ir.c 70; Peephole 111   removed ljmp by inverse jump logic	jnb  _TI,00111$00120$:;	ser_ir.c 71	clr	_TI;	ser_ir.c 72	mov	_busy,_xcnt	mov	a,_xcnt; Peephole 110   removed ljmp by inverse jump logic	jz  00111$00121$:;	ser_ir.c 73	dec	_xcnt;	ser_ir.c 74	mov	r2,_xpos	inc	_xpos	mov	a,r2	add	a,#_xbuf	mov	r0,a	mov	_SBUF,@r0;	ser_ir.c 75	clr	c	mov	a,_xpos	subb	a,#0x0A; Peephole 132   changed ljmp to sjmp; Peephole 160   removed sjmp by inverse jump logic	jc   00111$00122$:;	ser_ir.c 76	mov	_xpos,#0x0000111$:	pop	psw	pop	ar0	pop	ar2	pop	dph	pop	dpl	pop	b	pop	acc	reti;------------------------------------------------------------;Allocation info for local variables in function 'ser_putc';------------------------------------------------------------;	ser_ir.c 81;	-----------------------------------------;	 function ser_putc;	-----------------------------------------_ser_putc:;	ser_ir.c 92	mov	r2,dpl;	ser_ir.c 8300101$:	clr	c	mov	a,_xcnt	subb	a,#0x0A; Peephole 108   removed ljmp by inverse jump logic	jnc  00101$00112$:;	ser_ir.c 85	clr	_ES;	ser_ir.c 86	mov	a,_busy; Peephole 110   removed ljmp by inverse jump logic	jz  00105$00113$:;	ser_ir.c 87	mov	r3,_xcnt	inc	_xcnt	mov	a,r3	add	a,_xpos	mov	r3,a	mov	b,#0x0A	mov	a,r3	div	ab	mov	r3,b	mov	a,r3	add	a,#_xbuf	mov	r0,acc	mov	@r0,ar2; Peephole 132   changed ljmp to sjmp	sjmp 00106$00105$:;	ser_ir.c 89	mov	_SBUF,r2;	ser_ir.c 90	mov	_busy,#0x0100106$:;	ser_ir.c 92	setb	_ES00107$:	ret;------------------------------------------------------------;Allocation info for local variables in function 'ser_getc';------------------------------------------------------------;	ser_ir.c 95;	-----------------------------------------;	 function ser_getc;	-----------------------------------------_ser_getc:;	ser_ir.c 9800101$:	mov	a,_rcnt; Peephole 110   removed ljmp by inverse jump logic	jz  00101$00111$:;	ser_ir.c 100	clr	_ES;	ser_ir.c 101	dec	_rcnt;	ser_ir.c 102	mov	r2,_rpos	inc	_rpos	mov	a,r2	add	a,#_rbuf	mov	r0,a	mov	ar2,@r0;	ser_ir.c 103	clr	c	mov	a,_rpos	subb	a,#0x0A; Peephole 132   changed ljmp to sjmp; Peephole 160   removed sjmp by inverse jump logic	jc   00105$00112$:;	ser_ir.c 104	mov	_rpos,#0x0000105$:;	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 registers r2 r3 r4 ;c                         Allocated to registers r6 ;	ser_ir.c 110;	-----------------------------------------;	 function ser_puts;	-----------------------------------------_ser_puts:;	ser_ir.c 0	mov	r2,dpl	mov	r3,dph	mov	r4,b;	ser_ir.c 11300103$:	mov	dpl,r2	mov	dph,r3	mov	b,r4	lcall	__gptrget	mov	r5,a	inc	dptr	mov	r2,dpl	mov	r3,dph	mov	ar6,r5	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 r6,#0x0A,00102$;00112$:; Peephole 200   removed redundant sjmp00113$:	mov	dpl,#0x0D	push	ar2	push	ar3	push	ar4	push	ar6	lcall	_ser_putc	pop	ar6	pop	ar4	pop	ar3	pop	ar200102$:;	ser_ir.c 115	mov	dpl,r6	push	ar2	push	ar3	push	ar4	lcall	_ser_putc	pop	ar4	pop	ar3	pop	ar2; 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 registers r2 r3 r4 ;pos                       Allocated to registers ;c                         Allocated to registers r6 ;	ser_ir.c 119;	-----------------------------------------;	 function ser_gets;	-----------------------------------------_ser_gets:;	ser_ir.c 130	mov	r2,dpl	mov	r3,dph	mov	r4,b;	ser_ir.c 124	mov	r5,#0x0000105$:	clr	c	mov	a,_ser_gets_PARM_2	subb	a,r5; 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	lcall	_ser_getc	mov	r6,dpl	pop	ar5	pop	ar4	pop	ar3	pop	ar2;	ser_ir.c 126	cjne	r6,#0x0D,00114$; Peephole 132   changed ljmp to sjmp	sjmp 00105$00114$:;	ser_ir.c 127	mov	ar7,r5	inc	r5	mov	a,r7	add	a,r2	mov	dpl,a; Peephole 180   changed mov to clr	clr  a	addc	a,r3	mov	dph,a	mov	b,r4	mov	a,r6	lcall	__gptrput;	ser_ir.c 128; Peephole 132   changed ljmp to sjmp; Peephole 199   optimized misc jump sequence	cjne r6,#0x0A,00105$;00115$:; Peephole 200   removed redundant sjmp00116$:00107$:;	ser_ir.c 130	mov	a,r5	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	clr	c	mov	a,#0x0A	subb	a,_xcnt	mov	dpl,a00101$:	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	dpl,_rcnt00101$:	ret	.area CSEG    (CODE)

⌨️ 快捷键说明

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