Advertisement
jishmael

Untitled

Dec 14th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.52 KB | None | 0 0
  1. randu LDR R0,seed
  2. LDR R1,magic
  3. MUL R0,R0,R1
  4. LDR R2,mask
  5. AND R0,R0,R2
  6. STR R0,seed
  7. MOV R0, R0 ASR #8 ; shift R0 right by 8 bits
  8. AND R0, R0, #0x3f ; take the modulo by 64
  9. MOV PC,R14
  10.  
  11. ; R1 is mine counter
  12. ; R2 will be for temp values
  13. ; R3 is board
  14. ; R4 will hold offset
  15. ; R5 will hold value at that location
  16.  
  17. generatestart STMFD R13!, { R4, R5, R6, R7, R8, R14 }
  18. MOV R1,#0
  19. MOV R2,#66
  20. MOV R3,R0
  21. B generate
  22.  
  23. generate CMP R1,#8
  24. BEQ endgenerate
  25. STMFD R13!, { R1 }
  26. BL randu
  27. LDMFD R13!, { R1 }
  28. MOV R4,#4
  29. MUL R4,R0,R4
  30. LDRB R5,[R4,R3]
  31. CMP R5,#66
  32. BEQ generate
  33. ADD R1,R1,#1
  34. MOV R2,#66
  35. STR R2,[R4,R3]
  36. ;initialise flag registers
  37. MOV R5,#0
  38. MOV R6,#0
  39. MOV R7,#0
  40. MOV R8,#0
  41. ;setting flags
  42. ;top
  43. CMP R0,#8
  44. MOVLT R5,#1
  45. ;left
  46. AND R4,R0,#7
  47. CMP R4,#0
  48. MOVEQ R6,#1
  49. ;bot
  50. CMP R0,#55
  51. MOVGT R7,#1
  52. ;right
  53. AND R4,R0,#7
  54. CMP R4,#7
  55. MOVEQ R8,#1
  56.  
  57. B checktopleft
  58.  
  59. ; R5 true if M on top
  60. ; R6 true if M on left
  61. ; R7 true if M on bot
  62. ; R8 true if M on right
  63.  
  64. checktopleft CMP R5,#1
  65. BEQ checktopmid
  66. CMP R6,#1
  67. BEQ checktopmid
  68. MOV R4,R0
  69. SUB R4,R4,#9
  70. LDRB R2,[R3, R4 LSL #2]
  71. CMP R2,#66
  72. BEQ checktopmid
  73. ADD R2,R2,#1
  74. STR R2,[R3, R4 LSL #2]
  75. B checktopmid
  76.  
  77. checktopmid CMP R5,#1
  78. BEQ checktopright
  79. MOV R4,R0
  80. SUB R4,R4,#8
  81. LDRB R2,[R3, R4 LSL #2]
  82. CMP R2,#66
  83. BEQ checktopright
  84. ADD R2,R2,#1
  85. STR R2,[R3, R4 LSL #2]
  86. B checktopright
  87.  
  88. checktopright CMP R5,#1
  89. BEQ checkleftmid
  90. CMP R8,#1
  91. BEQ checkleftmid
  92. MOV R4,R0
  93. SUB R4,R4,#7
  94. LDRB R2,[R3, R4 LSL #2]
  95. CMP R2,#66
  96. BEQ checkleftmid
  97. ADD R2,R2,#1
  98. STR R2,[R3, R4 LSL #2]
  99. B checkleftmid
  100.  
  101. checkleftmid CMP R6,#1
  102. BEQ checkrightmid
  103. MOV R4,R0
  104. SUB R4,R4,#1
  105. LDRB R2,[R3, R4 LSL #2]
  106. CMP R2,#66
  107. BEQ checkrightmid
  108. ADD R2,R2,#1
  109. STR R2,[R3, R4 LSL #2]
  110. B checkrightmid
  111.  
  112. checkrightmid CMP R8,#1
  113. BEQ checkbotleft
  114. MOV R4,R0
  115. ADD R4,R4,#1
  116. LDRB R2,[R3, R4 LSL #2]
  117. CMP R2,#66
  118. BEQ checkbotleft
  119. ADD R2,R2,#1
  120. STR R2,[R3, R4 LSL #2]
  121. B checkbotleft
  122.  
  123. checkbotleft CMP R7,#1
  124. BEQ checkbotmid
  125. CMP R6,#1
  126. BEQ checkbotmid
  127. MOV R4,R0
  128. ADD R4,R4,#7
  129. LDRB R2,[R3, R4 LSL #2]
  130. CMP R2,#66
  131. BEQ checkbotmid
  132. ADD R2,R2,#1
  133. STR R2,[R3, R4 LSL #2]
  134. B checkbotmid
  135.  
  136. checkbotmid CMP R7,#1
  137. BEQ checkbotright
  138. MOV R4,R0
  139. ADD R4,R4,#8
  140. LDRB R2,[R3, R4 LSL #2]
  141. CMP R2,#66
  142. BEQ checkbotright
  143. ADD R2,R2,#1
  144. STR R2,[R3, R4 LSL #2]
  145. B checkbotright
  146.  
  147. checkbotright CMP R7,#1
  148. BEQ generate
  149. CMP R8,#1
  150. BEQ generate
  151. MOV R4,R0
  152. ADD R4,R4,#9
  153. LDRB R2,[R3, R4 LSL #2]
  154. CMP R2,#66
  155. BEQ generate
  156. ADD R2,R2,#1
  157. STR R2,[R3, R4 LSL #2]
  158. B generate
  159.  
  160.  
  161. endgenerate LDMFD R13!, { R4, R5, R6, R7, R8, PC }
  162. MOV PC,R14
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement