📄 printfl.asm
字号:
;--------------------------------------------------------
; File Created by SDCC : FreeWare ANSI-C Compiler
; Version 2.3.1-pj3 Sun Jan 20 13:10:02 2002
;--------------------------------------------------------
.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
;--------------------------------------------------------
; 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)
;--------------------------------------------------------
; external initialized ram data
;--------------------------------------------------------
.area XISEG (XDATA)
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
.area GSINIT (CODE)
.area GSFINAL (CODE)
.area GSINIT (CODE)
; printfl.c 52
; genAssign
clr _long_flag
; printfl.c 53
; genAssign
clr _string_flag
; printfl.c 54
; genAssign
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
; genAssign
mov _pval_sp_1_1,_SP
; printfl.c 65
; genCmpLt
; genCmp
mov a,(_val + 3)
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb acc.7,00102$
00132$:
; genCmpEq
mov a,_radix
cjne a,#0x10,00133$
; Peephole 132 changed ljmp to sjmp
sjmp 00102$
00133$:
; printfl.c 67
; genUminus
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
; genAssign
setb _sign
; Peephole 132 changed ljmp to sjmp
sjmp 00103$
00102$:
; printfl.c 70
; genAssign
clr _sign
; genAssign
mov r3,_val
mov r4,(_val + 1)
mov r5,(_val + 2)
mov r6,(_val + 3)
00103$:
; printfl.c 72
; genIfx
; genIfxJump
; Peephole 112 removed ljmp by inverse jump logic
jb _long_flag,00106$
00134$:
; printfl.c 73
; genAnd
mov r5,#0x00
mov r6,#0x00
00106$:
; printfl.c 75
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _char_flag,00127$
00135$:
; printfl.c 76
; genAnd
mov r4,#0x00
mov r5,#0x00
mov r6,#0x00
; printfl.c 79
00127$:
00112$:
; printfl.c 82
; genCmpEq
mov a,_radix
cjne a,#0x10,00136$
; Peephole 132 changed ljmp to sjmp
sjmp 00110$
00136$:
; genCast
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
; genCall
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
; genPlus
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
; genCast
mov _ch,r7
; Peephole 132 changed ljmp to sjmp
sjmp 00111$
00110$:
; printfl.c 83
; genCast
mov ar2,r3
; genAnd
anl ar2,#0x0F
; genPlus
mov a,r2
; Peephole 180 changed mov to clr
; genPointerGet
; genCodePointerGet
; Peephole 186 optimized movc sequence
mov dptr,#__str_0
movc a,@a+dptr
mov _ch,a
00111$:
; printfl.c 84
; genInline
push _ch
; printfl.c 85
; genCast
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
; genCall
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
; genAssign
mov ar3,r2
mov ar4,r7
mov ar5,r0
mov ar6,r1
; printfl.c 94
; genIfx
mov a,r3
orl a,r4
orl a,r5
orl a,r6
; genIfxJump
jz 00137$
ljmp 00112$
00137$:
; printfl.c 96
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
jnb _sign,00117$
00138$:
; printfl.c 97
; genAssign
mov _ch,#0x2D
; printfl.c 98
; genInline
push _ch
; printfl.c 101
00117$:
; genCmpEq
mov a,_pval_sp_1_1
cjne a,_SP,00139$
; Peephole 132 changed ljmp to sjmp
sjmp 00120$
00139$:
; printfl.c 102
; genInline
pop _ch
; printfl.c 103
; genCall
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
;sloc0 Allocated to stack - offset 2
;sloc1 Allocated to stack - offset 2
;sloc2 Allocated to stack - offset 6
;sloc3 Allocated to stack - offset 5
; printfl.c 107
; -----------------------------------------
; function printf_small
; -----------------------------------------
_printf_small:
push _bp
mov _bp,sp
mov a,sp
add a,#0x07
mov sp,a
; printfl.c 111
; genAddrOf
mov a,_bp
add a,#0xfb
mov r2,a
; genAssign
; Peephole 212 reduced add sequence to inc
mov r0,_bp
inc r0
mov @r0,ar2
00127$:
; printfl.c 113
; genAssign
mov a,_bp
add a,#0xfb
mov r0,a
mov ar3,@r0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -