📄 printf.s
字号:
/ C library -- printf.globl _printf.globl pfloat.globl pscien.globl _putchar.globl csv.globl cret_printf: jsr r5,csv sub $126.,sp mov 4(r5),formp / format mov r5,r4 add $6,r4 / arglistloop: movb *formp,r0 beq 1f inc formp cmp r0,$'% beq 2f3: mov r0,(sp) jsr pc,*$_putchar br loop1: jmp cret2: clr rjust clr ndigit cmpb *formp,$'- bne 2f inc formp inc rjust2: jsr r3,gnum mov r1,width clr ndfnd cmp r0,$'. bne 1f jsr r3,gnum mov r1,ndigit1: mov sp,r3 add $4,r3 mov $swtab,r11: mov (r1)+,r2 beq 3b cmp r0,(r1)+ bne 1b jmp (r2) .dataswtab: decimal; 'd octal; 'o hex; 'x float; 'f scien; 'e charac; 'c string; 's logical; 'l remote; 'r 0; 0 .textdecimal: mov (r4)+,r1 bge 1f neg r1 movb $'-,(r3)+ br 1flogical: mov (r4)+,r11: jsr pc,1f br prbuf1: clr r0 div $10.,r0 mov r1,-(sp) mov r0,r1 beq 1f jsr pc,1b1: mov (sp)+,r0 add $'0,r0 movb r0,(r3)+ rts pccharac: movb (r4)+,(r3)+ bne 1f dec r31: movb (r4)+,(r3)+ bne prbuf dec r3 br prbufstring: mov ndigit,r1 clr r3 mov (r4),r21: tstb (r2)+ beq 1f inc r3 sob r1,1b1: mov (r4)+,r2 br prstrhex: mov $1f,r2 .data1: -4; !17 .text br 2foctal: mov $1f,r2 .data1: -3; !7 .text2: mov (r4)+,r1 beq 2f tst ndigit beq 2f movb $'0,(r3)+2: clr r0 jsr pc,1f br prbuf1: mov r1,-(sp) ashc (r2),r0 beq 1f jsr pc,1b1: mov (sp)+,r0 bic 2(r2),r0 add $'0,r0 cmp r0,$'9 ble 1f add $'A-'0-10.,r01: movb r0,(r3)+ rts pcfloat: mov ndigit,r0 mov ndfnd,r2 jsr pc,pfloat br prbufscien: mov ndigit,r0 mov ndfnd,r2 jsr pc,pscien br prbufremote: mov (r4)+,r4 mov (r4)+,formp jmp loopprbuf: mov sp,r2 add $4,r2 sub r2,r3prstr: mov r4,-(sp) mov $' ,-(sp) mov r3,r4 neg r3 add width,r3 ble 1f tst rjust bne 1f2: jsr pc,*$_putchar sob r3,2b1: tst r4 beq 2f1: movb (r2)+,(sp) jsr pc,*$_putchar sob r4,1b2: tst r3 ble 1f mov $' ,(sp)2: jsr pc,*$_putchar sob r3,2b1: tst (sp)+ mov (sp)+,r4 jmp loopgnum: clr ndfnd clr r11: movb *formp,r0 inc formp sub $'0,r0 cmp r0,$'*-'0 bne 2f mov (r4)+,r0 br 3f2: cmp r0,$9. bhi 1f3: inc ndfnd mul $10.,r1 add r0,r1 br 1b1: add $'0,r0 rts r3.bsswidth: .=.+2formp: .=.+2rjust: .=.+2ndfnd: .=.+2ndigit: .=.+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -