?? doprnt.s
字號:
/ C library -- conversionswidth=-8.formp=-10.rjust=-12.ndfnd=-14.ndigit=-16.zfill=-18..globl __doprnt.globl pfloat.globl pscien.globl pgen.globl __strout.globl csv.globl cret__doprnt: jsr r5,csv sub $128.+12.,sp mov 4(r5),formp(r5) / format mov 6(r5),r4loop: mov sp,r3 mov formp(r5),r12: movb (r1)+,r2 beq 2f cmp r2,$'% beq 2f movb r2,(r3)+ br 2b2: mov r1,formp(r5) cmp r3,sp beq 2f mov sp,r0 mov 8(r5),-(sp) clr -(sp) mov r3,-(sp) sub r0,(sp) mov r0,-(sp) jsr pc,__strout add $8,sp2: tst r2 bne 2f jmp cret2: mov sp,r32: clr rjust(r5) clr ndigit(r5) mov $' ,zfill(r5) cmpb *formp(r5),$'- bne 2f inc formp(r5) inc rjust(r5)2: cmpb *formp(r5),$'0 bne 2f mov $'0,zfill(r5)2: jsr r3,gnum mov r1,width(r5) clr ndfnd(r5) cmp r0,$'. bne 1f jsr r3,gnum mov r1,ndigit(r5)1: mov $swtab,r11: mov (r1)+,r2 bne 2f movb r0,(r3)+ jmp prbuf2: cmp r0,(r1)+ bne 1b jmp (r2) .dataswtab: decimal; 'd octal; 'o hex; 'x float; 'f scien; 'e general; 'g charac; 'c string; 's longorunsg; 'l longorunsg; 'L unsigned; 'u remote; 'r long; 'D loct; 'O lhex; 'X lunsigned; 'U 0; 0 .textgeneral: mov ndigit(r5),r0 mov ndfnd(r5),r2 jsr pc,pgen jbr prbuflongorunsg: movb *formp(r5),r0 inc formp(r5) cmp r0,$'o beq loct cmp r0,$'x beq lhex cmp r0,$'d beq long cmp r0,$'u beq lunsigned dec formp(r5) br unsignedoctal: clr r0 br 1floct: mov (r4)+,r01: mov $8.,r2 br 2fhex: clr r0 br 1flhex: mov (r4)+,r01: mov $16.,r22: mov (r4)+,r1 br computedecimal: mov (r4)+,r1 sxt r0 bmi 3f br 2funsigned: clr r0 br 1flong: mov (r4)+,r0 bge 1f mov (r4)+,r13: neg r0 neg r1 sbc r0 movb $'-,(r3)+ br 2flunsigned: mov (r4)+,r01: mov (r4)+,r12: mov $10.,r2// Algorithm courtesy Keith Davis/compute: mov r5,-(sp) mov r4,-(sp) mov r0,r4 mov ndigit(r5),r0 mov r1,r5 ashc $0,r4 beq 1f tst r0 beq 1f movb $'0,(r3)+1: jsr pc,1f mov (sp)+,r4 mov (sp)+,r5 br prbuf1: clr r0 mov r4,r1 beq 2f div r2,r0 mov r0,r4 mov r1,r02: mov r5,r1 asl r2 div r2,r0 asr r2 asl r0 cmp r2,r1 bgt 2f sub r2,r1 inc r02: mov r1,-(sp) mov r0,r5 bne 2f tst r4 beq 1f2: jsr pc,1b1: mov (sp)+,r0 add $'0,r0 cmp r0,$'9 ble 1f add $'a-'0-10.,r01: movb r0,(r3)+ rts pc charac: mov $' ,zfill(r5) mov (r4)+,r0 bic $!377,r0 beq prbuf movb r0,(r3)+ br prbufstring: mov $' ,zfill(r5) mov ndigit(r5),r1 mov (r4),r2 mov r2,r3 bne 1f mov $nulstr,r2 mov r2,r3 mov r2,(r4)1: tstb (r2)+ beq 1f inc r3 sob r1,1b1: mov (r4)+,r2 br prstrfloat: mov ndigit(r5),r0 mov ndfnd(r5),r2 jsr pc,pfloat br prbufscien: mov ndigit(r5),r0 inc r0 tst ndfnd(r5) bne 1f mov $7,r01: mov pc,r2 jsr pc,pscien br prbufremote: mov (r4)+,r4 mov (r4)+,formp(r5) jmp loopprbuf: mov sp,r2prstr: sub r2,r3 mov width(r5),r1 sub r3,r1 bge 1f clr r11: tst rjust(r5) bne 1f neg r11: mov zfill(r5),-(sp) mov 8(r5),-(sp) mov r1,-(sp) mov r3,-(sp) mov r2,-(sp) jsr pc,__strout add $10.,sp jmp loopgnum: clr ndfnd(r5) clr r11: movb *formp(r5),r0 inc formp(r5) sub $'0,r0 cmp r0,$'*-'0 bne 2f mov (r4)+,r0 br 3f2: cmp r0,$9. bhi 1f3: inc ndfnd(r5) mul $10.,r1 add r0,r1 br 1b1: add $'0,r0 rts r3.datanulstr: <(null)\0>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -