Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Final Pre-Lab
- .equ JTAG_UART_BASE, 0x10001000
- .equ DATA_OFFSET, 0
- .equ STATUS_OFFSET, 4
- .equ WSPACE_MASK, 0xFFFF
- .text
- .global _start
- .org 0x000000
- _start:
- movia sp, 0x7FFFFC
- movia r2, MSG
- call PrintString:
- loop:
- call GetChar:
- movi r6, 0xA
- movi r7, 0x20
- if:
- ldw r5, 0(r2)
- and r8, r6, r5
- bne r8, r0, end_if:
- bge r5,r7, end_if:
- addi r2, r2, 4
- call PrintChar:
- end_if:
- br if
- PrintString:
- subi sp, sp, 8
- stw r3, 4(sp)
- stw r4, 0(sp)
- movia r2, MSG
- ldbio r5, 0(r2)
- beq r5, r0, end_loop:
- subi sp, sp, 4
- stw ra, 0(sp)
- call PrintChar:
- end_loop:
- movi ra, 14
- addi r2, r2, 1
- ldw r3, 4(sp)
- ldw r4, 0(sp)
- addi sp, sp, 8
- ret
- GetChar:
- subi sp, sp, 8
- stw r3, 4(sp)
- stw r4, 0(sp)
- movia r3, JTAG_UART_BASE
- gc_loop:
- ldwio r5, DATA_OFFSET(r3)
- andhi r4, r5, 0x8000
- beq r4, r0, gc_loop:
- andi r6, r5, 0xFF
- ldw r3, 4(sp)
- ldw r4, 0(sp)
- addi sp, sp, 8
- ret
- PrintChar:
- subi sp, sp, 8
- stw r3, 4(sp)
- stw r4, 0(sp)
- movia r3, JTAG_UART_BASE
- pc_loop:
- ldwio r4, STATUS_OFFSET(r3)
- andhi r4, r4, WSPACE_MASK
- beq r4, r0, pc_loop:
- stwio r2, DATA_OFFSET(r3)
- ldw r3, 4(sp)
- ldw r4, 0(sp)
- addi sp, sp, 8
- ret
- .org 1000
- MSG:.asciz "This is a string of characters.\n"
- .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement