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

📄 printfl.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 printfl	;--------------------------------------------------------; Public variables in this module;--------------------------------------------------------	.globl _printf_small;--------------------------------------------------------; 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)_ch:	.ds 1_radix:	.ds 1_str:	.ds 3_val:	.ds 4_pval_sp_1_1::	.ds 1_printf_small_sloc0_1_0:	.ds 1_printf_small_sloc2_1_0:	.ds 1;--------------------------------------------------------; overlayable items in internal ram ;--------------------------------------------------------	.area OSEG    (OVR,DATA);--------------------------------------------------------; indirectly addressable internal ram data;--------------------------------------------------------	.area ISEG    (DATA);--------------------------------------------------------; bit data;--------------------------------------------------------	.area BSEG    (BIT)_long_flag:	.ds 1_string_flag:	.ds 1_char_flag:	.ds 1_sign:	.ds 1;--------------------------------------------------------; external ram data;--------------------------------------------------------	.area XSEG    (XDATA);--------------------------------------------------------; global & static initialisations;--------------------------------------------------------	.area GSINIT  (CODE)	.area GSFINAL (CODE)	.area GSINIT  (CODE);	printfl.c 52	clr	_long_flag;	printfl.c 53	clr	_string_flag;	printfl.c 54	clr	_char_flag;--------------------------------------------------------; Home;--------------------------------------------------------	.area HOME	 (CODE)	.area CSEG    (CODE);--------------------------------------------------------; code;--------------------------------------------------------	.area CSEG    (CODE);------------------------------------------------------------;Allocation info for local variables in function 'pval';------------------------------------------------------------;sp                        Allocated to in memory with name '_pval_sp_1_1';lval                      Allocated to registers r3 r4 r5 r6 ;	printfl.c 59;	-----------------------------------------;	 function pval;	-----------------------------------------_pval:	ar2 = 0x02	ar3 = 0x03	ar4 = 0x04	ar5 = 0x05	ar6 = 0x06	ar7 = 0x07	ar0 = 0x00	ar1 = 0x01;	printfl.c 63	mov	_pval_sp_1_1,_SP;	printfl.c 65	mov	a,(_val + 3); Peephole 111   removed ljmp by inverse jump logic	jnb  acc.7,00102$00132$:	mov	a,_radix	cjne	a,#0x10,00133$; Peephole 132   changed ljmp to sjmp	sjmp 00102$00133$:;	printfl.c 67	clr	c	clr	a	subb	a,_val	mov	r3,a	clr	a	subb	a,(_val + 1)	mov	r4,a	clr	a	subb	a,(_val + 2)	mov	r5,a	clr	a	subb	a,(_val + 3)	mov	r6,a;	printfl.c 68	setb	_sign; Peephole 132   changed ljmp to sjmp	sjmp 00103$00102$:;	printfl.c 70	clr	_sign	mov	r3,_val	mov	r4,(_val + 1)	mov	r5,(_val + 2)	mov	r6,(_val + 3)00103$:;	printfl.c 72; Peephole 112   removed ljmp by inverse jump logic	jb   _long_flag,00106$00134$:;	printfl.c 73	mov	r5,#0x00	mov	r6,#0x0000106$:;	printfl.c 75; Peephole 111   removed ljmp by inverse jump logic	jnb  _char_flag,00127$00135$:;	printfl.c 76	mov	r4,#0x00	mov	r5,#0x00	mov	r6,#0x00;	printfl.c 7900127$:00112$:;	printfl.c 82	mov	a,_radix	cjne	a,#0x10,00136$; Peephole 132   changed ljmp to sjmp	sjmp 00110$00136$:	mov	__modulong_PARM_2,_radix	mov	a,_radix	rlc	a	subb	a,acc	mov	(__modulong_PARM_2 + 1),a	mov	(__modulong_PARM_2 + 2),a	mov	(__modulong_PARM_2 + 3),a	mov	dpl,r3	mov	dph,r4	mov	b,r5	mov	a,r6	push	ar3	push	ar4	push	ar5	push	ar6	lcall	__modulong	mov	r7,dpl	mov	r0,dph	mov	r1,b	mov	r2,a	pop	ar6	pop	ar5	pop	ar4	pop	ar3	mov	a,#0x30	add	a,r7	mov	r7,a; Peephole 180   changed mov to clr	clr  a	addc	a,r0	mov	r0,a; Peephole 180   changed mov to clr	clr  a	addc	a,r1	mov	r1,a; Peephole 180   changed mov to clr	clr  a	addc	a,r2	mov	r2,a	mov	_ch,r7; Peephole 132   changed ljmp to sjmp	sjmp 00111$00110$:;	printfl.c 83	mov	ar2,r3	anl	ar2,#0x0F	mov	a,r2; Peephole 180   changed mov to clr; Peephole 186   optimized movc sequence	mov  dptr,#__str_0	movc a,@a+dptr	mov	_ch,a00111$:;	printfl.c 84	 push _ch ;	printfl.c 85	mov	__divulong_PARM_2,_radix	mov	a,_radix	rlc	a	subb	a,acc	mov	(__divulong_PARM_2 + 1),a	mov	(__divulong_PARM_2 + 2),a	mov	(__divulong_PARM_2 + 3),a	mov	dpl,r3	mov	dph,r4	mov	b,r5	mov	a,r6	push	ar3	push	ar4	push	ar5	push	ar6	lcall	__divulong	mov	r2,dpl	mov	r7,dph	mov	r0,b	mov	r1,a	pop	ar6	pop	ar5	pop	ar4	pop	ar3	mov	ar3,r2	mov	ar4,r7	mov	ar5,r0	mov	ar6,r1;	printfl.c 94	mov	a,r3	orl	a,r4	orl	a,r5	orl	a,r6	jz	00137$	ljmp	00112$00137$:;	printfl.c 96; Peephole 111   removed ljmp by inverse jump logic	jnb  _sign,00117$00138$:;	printfl.c 97	mov	_ch,#0x2D;	printfl.c 98	 push _ch ;	printfl.c 10100117$:	mov	r2,_pval_sp_1_1	mov	a,r2	cjne	a,_SP,00139$; Peephole 132   changed ljmp to sjmp	sjmp 00120$00139$:;	printfl.c 102	 pop _ch ;	printfl.c 103	mov	dpl,_ch	lcall	_putchar; Peephole 132   changed ljmp to sjmp	sjmp 00117$00120$:	ret;------------------------------------------------------------;Allocation info for local variables in function 'printf_small';------------------------------------------------------------;fmt                       Allocated to stack - offset -5;ap                        Allocated to stack - offset 1;sloc1                     Allocated to stack - offset 2;sloc0                     Allocated to in memory with name '_printf_small_sloc0_1_0';sloc2                     Allocated to in memory with name '_printf_small_sloc2_1_0';	printfl.c 107;	-----------------------------------------;	 function printf_small;	-----------------------------------------_printf_small:	push	_bp	mov	_bp,sp	inc	sp	inc	sp;	printfl.c 111; Peephole 212  reduced add sequence to inc	mov  r0,_bp	inc  r0	mov	a,_bp	add	a,#0xfb	mov	@r0,a00127$:;	printfl.c 113	mov	a,_bp	add	a,#0xfb	mov	r0,a	mov	ar3,@r0	inc	r0	mov	ar4,@r0	inc	r0	mov	ar5,@r0	mov	dpl,r3	mov	dph,r4	mov	b,r5	mov	a,_bp	add	a,#0x02	mov	r0,a	lcall	__gptrget	mov	@r0,a	mov	a,_bp	add	a,#0x02	mov	r0,a	mov	a,@r0	jnz	00149$	ljmp	00131$00149$:;	printfl.c 114	mov	a,_bp	add	a,#0x02	mov	r0,a	cjne	@r0,#0x25,00150$	sjmp	00151$00150$:	ljmp	00125$00151$:;	printfl.c 115	clr	_char_flag	clr	_string_flag	clr	_long_flag;	printfl.c 116	inc	r3	cjne	r3,#0x00,00152$	inc	r400152$:	mov	a,_bp	add	a,#0xfb	mov	r0,a	mov	@r0,ar3	inc	r0	mov	@r0,ar4	inc	r0	mov	@r0,ar5;	printfl.c 117	mov	dpl,r3	mov	dph,r4	mov	b,r5	lcall	__gptrget	mov	r7,a	cjne	r7,#0x68,00153$; Peephole 132   changed ljmp to sjmp	sjmp 00102$00153$:; Peephole 132   changed ljmp to sjmp; Peephole 199   optimized misc jump sequence	cjne r7,#0x6C,00103$;00154$:; Peephole 200   removed redundant sjmp00155$:;	printfl.c 119	setb	_long_flag;	printfl.c 120	mov	a,_bp	add	a,#0xfb	mov	r0,a	mov	a,#0x01	add	a,r3	mov	@r0,a; Peephole 180   changed mov to clr	clr  a	addc	a,r4	inc	r0	mov	@r0,a	inc	r0	mov	@r0,ar5;	printfl.c 121;	printfl.c 123; Peephole 132   changed ljmp to sjmp	sjmp 00103$00102$:	setb	_char_flag;	printfl.c 124	mov	a,_bp	add	a,#0xfb	mov	r0,a	mov	a,#0x01	add	a,r3	mov	@r0,a; Peephole 180   changed mov to clr	clr  a	addc	a,r4	inc	r0	mov	@r0,a	inc	r0	mov	@r0,ar5;	printfl.c 12500103$:;	printfl.c 127	mov	a,_bp	add	a,#0xfb	mov	r0,a	mov	dpl,@r0	inc	r0	mov	dph,@r0	inc	r0	mov	b,@r0	lcall	__gptrget	mov	r3,a	cjne	r3,#0x63,00156$; Peephole 132   changed ljmp to sjmp	sjmp 00107$00156$:	cjne	r3,#0x64,00157$; Peephole 132   changed ljmp to sjmp	sjmp 00105$00157$:	cjne	r3,#0x6F,00158$; Peephole 132   changed ljmp to sjmp	sjmp 00108$00158$:	cjne	r3,#0x73,00159$; Peephole 132   changed ljmp to sjmp	sjmp 00104$00159$:; Peephole 132   changed ljmp to sjmp;	printfl.c 129; Peephole 132   changed ljmp to sjmp; Peephole 199   optimized misc jump sequence	cjne r3,#0x78,00109$	sjmp 00106$;00160$:00104$:	setb	_string_flag;	printfl.c 130;	printfl.c 132; Peephole 132   changed ljmp to sjmp	sjmp 00109$00105$:	mov	_radix,#0x0A;	printfl.c 133;	printfl.c 135; Peephole 132   changed ljmp to sjmp	sjmp 00109$00106$:	mov	_radix,#0x10;	printfl.c 136;	printfl.c 138; Peephole 132   changed ljmp to sjmp	sjmp 00109$00107$:	mov	_radix,#0x00;	printfl.c 139;	printfl.c 141; Peephole 132   changed ljmp to sjmp	sjmp 00109$00108$:	mov	_radix,#0x08;	printfl.c 14300109$:;	printfl.c 145	jb	_string_flag,00161$	ljmp	00114$00161$:;	printfl.c 146; Peephole 212  reduced add sequence to inc	mov  r1,_bp	inc  r1	mov	a,@r1	add	a,#0xfd	mov	r0,a; Peephole 212  reduced add sequence to inc	mov  r1,_bp	inc  r1	mov	@r1,ar0	mov	_str,@r0	inc	r0	mov	(_str + 1),@r0	inc	r0	mov	(_str + 2),@r0	dec	r0	dec	r0;	printfl.c 14700110$:	mov	dpl,_str	mov	dph,(_str + 1)	mov	b,(_str + 2)	lcall	__gptrget; Peephole 105   removed redundant mov	mov  _printf_small_sloc0_1_0,a	jnz	00162$	ljmp	00129$00162$:	mov	dpl,_str	mov	dph,(_str + 1)	mov	b,(_str + 2)	mov	a,#0x01	add	a,_str	mov	r4,a; Peephole 180   changed mov to clr	clr  a	addc	a,(_str + 1)	mov	r5,a	mov	r7,(_str + 2)	mov	ar2,r4	mov	ar3,r5	mov	ar6,r7	mov	_str,r2	mov	(_str + 1),r3	mov	(_str + 2),r6	lcall	__gptrget	mov	_printf_small_sloc2_1_0,a	mov	dpl,_printf_small_sloc2_1_0	push	ar2	push	ar3	push	ar4	push	ar5	push	ar6	push	ar7	lcall	_putchar	pop	ar7	pop	ar6	pop	ar5	pop	ar4	pop	ar3	pop	ar2;	printfl.c 148; Peephole 132   changed ljmp to sjmp	sjmp 00110$00114$:;	printfl.c 151; Peephole 111   removed ljmp by inverse jump logic	jnb  _long_flag,00119$00163$:;	printfl.c 152; Peephole 212  reduced add sequence to inc	mov  r1,_bp	inc  r1	mov	a,@r1	add	a,#0xfc	mov	r0,a; Peephole 212  reduced add sequence to inc	mov  r1,_bp	inc  r1	mov	@r1,ar0	mov	_val,@r0	inc	r0	mov	(_val + 1),@r0	inc	r0	mov	(_val + 2),@r0	inc	r0	mov	(_val + 3),@r0	dec	r0	dec	r0	dec	r0; Peephole 132   changed ljmp to sjmp	sjmp 00120$00119$:;	printfl.c 154; Peephole 111   removed ljmp by inverse jump logic	jnb  _char_flag,00116$00164$:;	printfl.c 155; Peephole 212  reduced add sequence to inc	mov  r1,_bp	inc  r1	mov	a,@r1	dec	a	mov	r0,a; Peephole 212  reduced add sequence to inc	mov  r1,_bp	inc  r1	mov	@r1,ar0	mov	ar2,@r0	mov	_val,r2	mov	a,r2	rlc	a	subb	a,acc	mov	(_val + 1),a	mov	(_val + 2),a	mov	(_val + 3),a; Peephole 132   changed ljmp to sjmp	sjmp 00120$00116$:;	printfl.c 157; Peephole 212  reduced add sequence to inc	mov  r1,_bp	inc  r1	mov	a,@r1	add	a,#0xfe	mov	r0,a; Peephole 212  reduced add sequence to inc	mov  r1,_bp	inc  r1	mov	@r1,ar0	mov	ar2,@r0	inc	r0	mov	ar3,@r0	dec	r0	mov	_val,r2	mov	(_val + 1),r3	mov	a,r3	rlc	a	subb	a,acc	mov	(_val + 2),a	mov	(_val + 3),a00120$:;	printfl.c 159	mov	a,_radix; Peephole 110   removed ljmp by inverse jump logic	jz  00122$00165$:	lcall	_pval; Peephole 132   changed ljmp to sjmp	sjmp 00129$00122$:;	printfl.c 160	mov	dpl,_val	lcall	_putchar; Peephole 132   changed ljmp to sjmp	sjmp 00129$00125$:;	printfl.c 163	mov	a,_bp	add	a,#0x02	mov	r0,a	mov	dpl,@r0	lcall	_putchar00129$:;	printfl.c 113	mov	a,_bp	add	a,#0xfb	mov	r0,a	inc	@r0	cjne	@r0,#0x00,00166$	inc	r0	inc	@r000166$:	ljmp	00127$00131$:	mov	sp,_bp	pop	_bp	ret	.area CSEG    (CODE)__str_0:	.ascii "0123456789ABCDEF"	.db 0x00

⌨️ 快捷键说明

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