Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .ORIG x3000
- input LEA r0, text
- PUTS
- LEA r1, number
- AND r2, r2, #0
- ADD r2, r2, #10
- check GETC
- ADD r1, r0, #0
- ADD r1, r1, #1
- OUT
- ADD r1, r0, #0
- LD r3, plus
- ADD r0, r1, r3
- BRz pos
- LD r3, minus
- ADD r0, r1, r3
- BRz neg
- LEA r0, invalid
- PUTS
- BRnzp input
- pos
- GETC
- ADD r1, r0, #0
- ADD r1, r1, #1
- OUT
- ADD r1, r0, #0
- ADD r0, r0, #-10
- BRz done
- LD r4, asciimin
- ADD r1, r1, r4
- times1 ADD r1, r1, r1
- ADD r2, r2, #-1
- LDR r0, r2, #0
- BRz pos
- BRnp times1
- LEA r2, masks
- loop LDR r3, r2, #0
- ADD r2, r2, #1
- AND r0, r1, r3
- BRnz else
- LD r0, ascii1
- BRnzp finish
- else LD r0, ascii0
- finish OUT
- LEA r0, space
- PUTS
- ADD r4, r4, #1
- ADD r0, r4, #-16
- BRn loop
- BRnzp done
- neg
- GETC
- ADD r1, r0, #0
- ADD r1, r1, #1
- OUT
- ADD r1, r0, #0
- ADD r0, r0, #-10
- BRz done
- LD r4, asciimin
- ADD r1, r1, r4
- times2 ADD r1, r1, r1
- ADD r2, r2, #-1
- LDR r0, r2, #0
- BRz neg
- BRnp times2
- LEA r2, masks
- loop2 LDR r3, r2, #0
- ADD r2, r2, #1
- AND r0, r1, r3
- BRnz else2
- LD r0, ascii1
- BRnzp finish2
- else2 LD r0, ascii0
- finish2 OUT
- LEA r0, space
- PUTS
- ADD r4, r4, #1
- ADD r0, r4, #-16
- BRn loop2
- done
- HALT
- number .BLKW 99
- ascii0 .FILL x30
- ascii1 .FILL x31
- asciimin .FILL x-30
- times10 .FILL #10
- minus .FILL x-2D
- plus .FILL x-2B
- space .STRINGZ " "
- text .STRINGZ "Enter an integer between -511 and +511: "
- invalid .STRINGZ "\nThe input is invalid.\n"
- masks .FILL b1000000000000000
- .FILL b0100000000000000
- .FILL b0010000000000000
- .FILL b0001000000000000
- .FILL b0000100000000000
- .FILL b0000010000000000
- .FILL b0000001000000000
- .FILL b0000000100000000
- .FILL b0000000010000000
- .FILL b0000000001000000
- .FILL b0000000000100000
- .FILL b0000000000010000
- .FILL b0000000000001000
- .FILL b0000000000000100
- .FILL b0000000000000010
- .FILL b0000000000000001
- .END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement