Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. #Final Pre-Lab
  2. .equ JTAG_UART_BASE, 0x10001000
  3. .equ DATA_OFFSET, 0
  4. .equ STATUS_OFFSET, 4
  5. .equ WSPACE_MASK, 0xFFFF
  6. .text
  7. .global _start
  8. .org 0x000000
  9. _start:
  10. movia sp, 0x7FFFFC
  11. movia r2, MSG
  12. call PrintString:
  13. loop:
  14. call GetChar:
  15. movi r6, 0xA
  16. movi r7, 0x20
  17. if:
  18. ldw r5, 0(r2)
  19. and r8, r6, r5
  20. bne r8, r0, end_if:
  21. bge r5,r7, end_if:
  22. addi r2, r2, 4
  23. call PrintChar:
  24. end_if:
  25. br if
  26.  
  27. PrintString:
  28. subi sp, sp, 8
  29. stw r3, 4(sp)
  30. stw r4, 0(sp)
  31. movia r2, MSG
  32. ldbio r5, 0(r2)
  33. beq r5, r0, end_loop:
  34. subi sp, sp, 4
  35. stw ra, 0(sp)
  36. call PrintChar:
  37. end_loop:
  38. movi ra, 14
  39. addi r2, r2, 1
  40. ldw r3, 4(sp)
  41. ldw r4, 0(sp)
  42. addi sp, sp, 8
  43. ret
  44.  
  45. GetChar:
  46. subi sp, sp, 8
  47. stw r3, 4(sp)
  48. stw r4, 0(sp)
  49. movia r3, JTAG_UART_BASE
  50. gc_loop:
  51. ldwio r5, DATA_OFFSET(r3)
  52. andhi r4, r5, 0x8000
  53. beq r4, r0, gc_loop:
  54. andi r6, r5, 0xFF
  55. ldw r3, 4(sp)
  56. ldw r4, 0(sp)
  57. addi sp, sp, 8
  58. ret
  59.  
  60. PrintChar:
  61. subi sp, sp, 8
  62. stw r3, 4(sp)
  63. stw r4, 0(sp)
  64. movia r3, JTAG_UART_BASE
  65. pc_loop:
  66. ldwio r4, STATUS_OFFSET(r3)
  67. andhi r4, r4, WSPACE_MASK
  68. beq r4, r0, pc_loop:
  69. stwio r2, DATA_OFFSET(r3)
  70. ldw r3, 4(sp)
  71. ldw r4, 0(sp)
  72. addi sp, sp, 8
  73. ret
  74.  
  75. .org 1000
  76. MSG:.asciz "This is a string of characters.\n"
  77. .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement