Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.10 KB | None | 0 0
  1. .ORIG x3000
  2. ;--------------
  3. ; Instructions
  4. ;--------------
  5. LD R1, ARRAY_PTR
  6.  
  7. LD R2, SUB_GET_STRING
  8. JSRR R2
  9.  
  10. LD R3, SUB_TO_UPPER
  11. JSRR R3
  12.  
  13. LD R6, SUB_IS_A_PALINDROME
  14. JSRR R6
  15.  
  16. HALT
  17. ;---------------
  18. ; Local data 1
  19. ;---------------
  20. SUB_GET_STRING .FILL x3200
  21. SUB_TO_UPPER .FILL x3400
  22. SUB_IS_A_PALINDROME .FILL x3600
  23. ARRAY_PTR .FILL x4000
  24.  
  25. ;------------
  26. ; Subroutine 1
  27. ;------------
  28. .ORIG x3200
  29. ;-------------------------
  30. ; Subroutine Instructions 1
  31. ;-------------------------
  32. ST R7, BACKUP_R7_3200
  33. ST R1, BACKUP_R1_3200
  34.  
  35. LD R4, DEC_0_3200
  36. LD R5, DEC_0_3200
  37. LEA R0, PROMPT
  38. PUTS
  39.  
  40. INPUT_3200
  41. GETC
  42. OUT
  43.  
  44. ADD R3, R0, #0
  45. ADD R3, R3, #-10
  46. BRz EXIT_3200
  47. STR R0, R1, #0
  48. ADD R1, R1, #1
  49. ADD R5, R5, #1
  50. BRnzp INPUT_3200
  51.  
  52. EXIT_3200
  53. STR R4, R1, #0
  54. LD R7, BACKUP_R7_3200
  55. LD R1, BACKUP_R1_3200
  56. RET
  57. ;-----------------
  58. ; Subroutine data 1
  59. ;-----------------
  60. BACKUP_R7_3200 .BLKW #1
  61. BACKUP_R1_3200 .BLKW #1
  62. DEC_0_3200 .FILL #0
  63. NEWLINE_CHECK .FILL #-10
  64. PROMPT .STRINGZ "Enter a string of text ending with the [ENTER]key\n"
  65. ;------------
  66. ; Subroutine 2
  67. ;------------
  68. .ORIG x3400
  69. ;-------------------------
  70. ; Subroutine Instructions 2
  71. ;-------------------------
  72. ST R7, BACKUP_R7_3400
  73. ST R5, BACKUP_R5_3400
  74. ST R1, BACKUP_R1_3400
  75.  
  76. CHECK_3400
  77. LDR R2, R1, #0
  78. LD R6, LOWER_A
  79. ADD R3, R2, R6
  80. BRzp TO_UPPER
  81.  
  82. IS_UPPER
  83. ADD R1, R1, #1
  84. ADD R5, R5, #-1
  85. BRp CHECK_3400
  86. BRz EXIT_3400
  87.  
  88. TO_UPPER
  89. LD R6, CONV_UPPER
  90. ADD R3, R2, R6
  91. STR R3, R1, #0
  92. ADD R1, R1, #1
  93. ADD R5, R5, #-1
  94. BRp CHECK_3400
  95.  
  96. EXIT_3400
  97. LD R7, BACKUP_R7_3400
  98. LD R5, BACKUP_R5_3400
  99. LD R1, BACKUP_R1_3400
  100.  
  101. RET
  102. ;-----------------
  103. ; Subroutine data 2
  104. ;-----------------
  105. BACKUP_R7_3400 .BLKW #1
  106. BACKUP_R1_3400 .BLKW #1
  107. BACKUP_R5_3400 .BLKW #1
  108. LOWER_A .FILL #-97
  109. CONV_UPPER .FILL #-32
  110.  
  111. ;------------
  112. ; Subroutine 3
  113. ;------------
  114. .ORIG x3600
  115. ;-------------------------
  116. ; Subroutine Instructions 3
  117. ;-------------------------
  118. ST R7, BACKUP_R7_3600
  119. ST R1, BACKUP_R1_3600
  120. ST R5, BACKUP_R5_3600
  121. LD R4, DEC_1_3600
  122. ADD R2, R5, R1
  123. ADD R2, R2, #-1
  124.  
  125. CHECK_3600
  126. LDR R3, R1, #0
  127. LDR R7, R2, #0
  128. NOT R7, R7 ; take complement
  129. ADD R7, R7, #1
  130. ADD R3, R3, R7
  131. BRnp NOT_PALIN ; if same letter should = 0
  132. ADD R1, R1, #1
  133. ADD R2, R2, #-1
  134. ADD R5, R5, #-1
  135. BRp CHECK_3600
  136. BRnz EXIT_3600
  137.  
  138. NOT_PALIN
  139. ADD R4, R4, #-1
  140.  
  141. EXIT_3600
  142. LD R7, BACKUP_R7_3600
  143. LD R1, BACKUP_R1_3600
  144. LD R5, BACKUP_R5_3600
  145.  
  146. RET
  147. ;-----------------
  148. ; Subroutine data 3
  149. ;-----------------
  150. BACKUP_R7_3600 .BLKW #1
  151. BACKUP_R1_3600 .BLKW #1
  152. BACKUP_R5_3600 .BLKW #1
  153. DEC_1_3600 .FILL #1
  154.  
  155.  
  156. ADD R1, R1, #1
  157. ADD R5, R5, #-1
  158. BRp CHECK_3400
  159.  
  160. EXIT_3400
  161. LD R7, BACKUP_R7_3400
  162. LD R5, BACKUP_R5_3400
  163. LD R1, BACKUP_R1_3400
  164.  
  165. RET
  166. ;-----------------
  167. ; Subroutine data 2
  168. ;-----------------
  169. BACKUP_R7_3400 .BLKW #1
  170. BACKUP_R1_3400 .BLKW #1
  171. BACKUP_R5_3400 .BLKW #1
  172. LOWER_A .FILL #-97
  173. CONV_UPPER .FILL #-32
  174.  
  175. ;------------
  176. ; Subroutine 3
  177. ;------------
  178. .ORIG x3600
  179. ;-------------------------
  180. ; Subroutine Instructions 3
  181. ;-------------------------
  182. ST R7, BACKUP_R7_3600
  183. ST R1, BACKUP_R1_3600
  184. ST R5, BACKUP_R5_3600
  185.  
  186. LD R4, DEC_1_3600
  187. ADD R2, R5, R1
  188. ADD R2, R2, #-1
  189.  
  190. CHECK_3600
  191. LDR R3, R1, #0
  192. LDR R7, R2, #0
  193. NOT R7, R7 ; take complement
  194. ADD R7, R7, #1
  195. ADD R3, R3, R7
  196. BRnp NOT_PALIN ; if same letter should = 0
  197. ADD R1, R1, #1
  198. ADD R2, R2, #-1
  199. ADD R5, R5, #-1
  200. BRp CHECK_3600
  201. BRnz EXIT_3600
  202.  
  203. NOT_PALIN
  204. ADD R4, R4, #-1
  205.  
  206. EXIT_3600
  207. LD R7, BACKUP_R7_3600
  208. LD R1, BACKUP_R1_3600
  209. LD R5, BACKUP_R5_3600
  210.  
  211. RET
  212. ;-----------------
  213. ; Subroutine data 3
  214. ;-----------------
  215. BACKUP_R7_3600 .BLKW #1
  216. BACKUP_R1_3600 .BLKW #1
  217. BACKUP_R5_3600 .BLKW #1
  218. DEC_1_3600 .FILL #1
  219.  
  220.  
  221. .endADD R1, R1, #1
  222. ADD R5, R5, #-1
  223. BRp CHECK_3400
  224.  
  225. EXIT_3400
  226. LD R7, BACKUP_R7_3400
  227. LD R5, BACKUP_R5_3400
  228. LD R1, BACKUP_R1_3400
  229.  
  230. RET
  231. ;-----------------
  232. ; Subroutine data 2
  233. ;-----------------
  234. BACKUP_R7_3400 .BLKW #1
  235. BACKUP_R1_3400 .BLKW #1
  236. BACKUP_R5_3400 .BLKW #1
  237. LOWER_A .FILL #-97
  238. CONV_UPPER .FILL #-32
  239.  
  240. ;------------
  241. ; Subroutine 3
  242. ;------------
  243. .ORIG x3600
  244. ;-------------------------
  245. ; Subroutine Instructions 3
  246. ;-------------------------
  247. ST R7, BACKUP_R7_3600
  248. ST R1, BACKUP_R1_3600
  249. ST R5, BACKUP_R5_3600
  250.  
  251. LD R4, DEC_1_3600
  252. ADD R2, R5, R1
  253. ADD R2, R2, #-1
  254.  
  255. CHECK_3600
  256. LDR R3, R1, #0
  257. LDR R7, R2, #0
  258. NOT R7, R7 ; take complement
  259. ADD R7, R7, #1
  260. ADD R3, R3, R7
  261. BRnp NOT_PALIN ; if same letter should = 0
  262. ADD R1, R1, #1
  263. ADD R2, R2, #-1
  264. ADD R5, R5, #-1
  265. BRp CHECK_3600
  266. BRnz EXIT_3600
  267.  
  268. NOT_PALIN
  269. ADD R4, R4, #-1
  270.  
  271. EXIT_3600
  272. LD R7, BACKUP_R7_3600
  273. LD R1, BACKUP_R1_3600
  274. LD R5, BACKUP_R5_3600
  275.  
  276. RET
  277. ;-----------------
  278. ; Subroutine data 3
  279. ;-----------------
  280. BACKUP_R7_3600 .BLKW #1
  281. BACKUP_R1_3600 .BLKW #1
  282. BACKUP_R5_3600 .BLKW #1
  283. DEC_1_3600 .FILL #1
  284.  
  285.  
  286. .end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement