📄 lib
字号:
\\ End of run routine\L1: HALT\\ Print a number recursively\L2: STI R3,4(R1) \ Save the return address LDI 8(R1),R15 \ Copy arg to R15 LDA 10(R0),R5 \ Constant 10 DIV R15,R5 \ Non-zero if more than one digit BZE L3 \ Branch if only 1 digit\ STI R5,12(R1) \ Save on stack for later STI R5,24(R1) \ Copy to new stack frame LDA L2,R2 \ Address to call STI R1,16(R1) \ Save stack pointer LDA 16(R1),R1 \ Increment stack pointer BAL R2,R3 \ Call recursively LDA 10(R0),R15 \ Constant 10 in R15 LDI 8(R1),R5 \ Original number LDI 12(R1),R6 \ Divided number MUL R6,R15 \ Multiply back by 10 in R15 SUB R5,R15 \ Subtract from original for digitL3: LDA 48(R0),R5 \ ASCII '0' in R5 ADD R5,R15 \ Add to get desired digit in R15 TRAP \ Print the digit LDI 4(R1),R2 \ Return address in R2 LDI 0(R1),R1 \ Restore stack pointer BAL R2,R3 \ Return\\ Print a string\L4: STI R3,4(R1) \ Save the return address LDI 8(R1),R5 \ String pointer in R5 LDA 16777216(R0),R7 \ 256 cubed for shifting 24 bits rightL5: LDI 0(R5),R6 \ Next char in top byte of R6 LDR R7,R15 \ Constant 256 cubed DIV R6,R15 \ Char in R15 BZE L6 \ EOS branch to exit TRAP \ Print the char LDA 1(R5),R5 \ Step to next char BRA L5 \ Round againL6: LDI 4(R1),R2 \ Return address in R2 LDI 0(R1),R1 \ Restore stack pointer BAL R2,R3 \ Return\
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -