cyruswachong

checkSW5

Aug 3rd, 2018
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. .global CheckSwitch5
  2.  
  3.  
  4.  
  5.  
  6. CheckSwitch5:
  7. PUSH {R6, R7, R8, R9, R10, R11, R14}
  8. LDR R9,= 0x41220000
  9. LDR R8, [R9] ;@ load value of switches
  10. TST R8, #32 ;@ check if sw 5 is up
  11. BNE print ;@ if not up, exit
  12. BEQ exit ;@ if equal, print out op code and opernads
  13.  
  14.  
  15. print:
  16.  
  17. LDR R11, =ZSpare
  18. LDRB R8, [R11, #300]
  19. LDR R10, =# 0xE0001030
  20. MOV R9, #48
  21. STR R9, [R10]
  22. MOV R9, #120
  23. STR R9, [R10]
  24.  
  25. LSR R9, R8, #28
  26. CMP R9, #10
  27. BLGE letter
  28. BLLT num
  29.  
  30. LSR R9, R8, #24
  31. AND R9, #0b00001111
  32. CMP R9, #10
  33. BLGE letter
  34. BLLT num
  35.  
  36. LSR R9, R8, #20
  37. AND R9, #0b00001111
  38. CMP R9, #10
  39. BLGE letter
  40. BLLT num
  41.  
  42. LSR R9, R8, #16
  43. AND R9, #0b00001111
  44. CMP R9, #10
  45. BLGE letter
  46. BLLT num
  47.  
  48. LSR R9, R8, #12
  49. AND R9, #0b00001111
  50. CMP R9, #10
  51. BLGE letter
  52. BLLT num
  53.  
  54. LSR R9, R8, #8
  55. AND R9, #0b00001111
  56. CMP R9, #10
  57. BLGE letter
  58. BLLT num
  59.  
  60. LSR R9, R8, #4
  61. AND R9, #0b00001111
  62. CMP R9, #10
  63. BLGE letter
  64. BLLT num
  65.  
  66. LSR R9, R8, #0
  67. AND R9, #0b00001111
  68. CMP R9, #10
  69. BLGE letter
  70. BLLT num
  71. B loop1
  72. num:
  73. PUSH {R14}
  74. ADD R9, #48
  75. STR R9, [R10]
  76. POP {R15}
  77.  
  78. letter:
  79. PUSH {R14}
  80. ADD R9, #87
  81. STR R9, [R10]
  82. POP {R15}
  83.  
  84.  
  85.  
  86.  
  87.  
  88. loop1:
  89. LDR R9, = ZSpare ;@ read number of operands
  90. LDR R9, [R9, #100]
  91.  
  92. LDR R10, =#0xE0001030
  93. MOV R11, #10
  94. STR R11, [R10]
  95. MOV R11, #79
  96. STR R11, [R10]
  97. MOV R11, #80
  98. STR R11, [R10]
  99. MOV R11, #69
  100. STR R11, [R10]
  101. MOV R11, #82
  102. STR R11, [R10]
  103. MOV R11, #65
  104. STR R11, [R10]
  105. MOV R11, #78
  106. STR R11, [R10]
  107. MOV R11, #68
  108. STR R11, [R10]
  109. MOV R11, #83
  110. STR R11, [R10]
  111. MOV R11, #58
  112. STR R11, [R10]
  113. SUBS R9, #1
  114. BMI exit
  115. MOV R8, R0
  116. MOV R7, #12
  117.  
  118. BL printOpcode
  119. SUBS R9, #1
  120. BMI exit
  121. MOV R8, R1
  122. MOV R7, #12
  123. BL printOpcode
  124. SUBS R9, #1
  125. BMI exit
  126. MOV R8, R2
  127. MOV R7, #12
  128. BL printOpcode
  129. SUBS R9, #1
  130. BMI exit
  131. MOV R8, R3
  132. MOV R7, #12
  133. BL printOpcode
  134. SUBS R9, #1
  135. BMI exit
  136. B exit
  137. printOpcode:
  138. PUSH {R14}
  139. LDR R10, =# 0xE0001030
  140. MOV R11, #10
  141. STR R11, [R10]
  142. MOV R11, #13
  143. STR R11, [R10]
  144. MOV R11, #48
  145. STR R11, [R10]
  146. MOV R11, #120
  147. STR R11, [R10]
  148. printOpcode1:
  149. LSR R11, R8, R7
  150. AND R11, #0b00001111
  151. CMP R11, #10
  152. BLGE letter_op
  153. BLLT num_op
  154. SUBS R7, #4
  155. POPMI {R15}
  156. B printOpcode1
  157.  
  158. letter_op:
  159. PUSH {R14}
  160. LDR R10, =# 0xE0001030
  161. ADD R11, #87
  162. STR R11, [R10]
  163. POP {R15}
  164.  
  165. num_op:
  166. PUSH {R14}
  167. LDR R10, =# 0xE0001030
  168. ADD R11, #48
  169. STR R11, [R10]
  170. POP {R15}
  171.  
  172. exit:
  173. POP {R6, R7, R8, R9, R10, R11, R15}
Add Comment
Please, Sign In to add comment