cmk20

Untitled

Jul 10th, 2016
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. mov ax, 0
  2. mov bx, 1
  3. ; Initialize the Stack Pointer
  4. mov sp, 0x200
  5. call resetTerminal
  6. call newLine
  7. mov dx, info
  8. call print
  9. sleep:
  10. add ax, bx
  11. cmp ax, 100
  12. jne sleep
  13. call newLine
  14. call newLine
  15. call newLine
  16. mov dx, space
  17. mov ax, 0x1000
  18. send 0, ax
  19. mov ax, 0
  20. loop:
  21. call printInt
  22. call print
  23. add ax, bx
  24. jmp loop
  25.  
  26. ; Resets the terminal to look pretty
  27. resetTerminal:
  28. push ax
  29. push cx
  30. mov ax, 0x1000
  31. send 0, ax
  32. mov ax, 0x208A
  33. send 0, ax
  34. mov ax, 0x3000
  35. mov cx, 24
  36. .loop:
  37. send 0, ax
  38. sub cx, 1
  39. cmp cx, 0
  40. jne .loop
  41.  
  42. pop cx
  43. pop ax
  44. ret
  45.  
  46. ; Scrolls the text down.
  47. newLine:
  48. push ax
  49. mov ax, 0x3000
  50. send 0, ax
  51. pop ax
  52. ret
  53.  
  54. ; Prints a byte (not word!) string.
  55. ; DX - the starting word of the string.
  56. print:
  57. push ax
  58. push bx
  59. push cx
  60.  
  61. .loop:
  62. mov ax, [dx]
  63. test ax, ax
  64. jz .end
  65. mov bx, ax
  66. mov cx, ax
  67.  
  68. shr bx, 8
  69. test bx, bx
  70. jz .end
  71. send 0, bx
  72.  
  73. and cx, 0xFF
  74. test cx, cx
  75. jz .end
  76. send 0, cx
  77. add dx, 1
  78. jmp .loop
  79.  
  80. .end:
  81. pop cx
  82. pop bx
  83. pop ax
  84. ret
  85.  
  86. ; Prints a number in decimal.
  87. ; AX - the number to print.
  88. printInt:
  89. push ax
  90. push bx
  91. push cx
  92. push dx
  93. push ex
  94.  
  95. mov bx, 0
  96. mov cx, 0
  97. mov dx, 0
  98. mov ex, 0
  99.  
  100. .k10:
  101. cmp ax, 10000
  102. jl .k
  103. sub ax, 10000
  104. add ex, 1
  105. jmp .k10
  106. .k:
  107. cmp ax, 1000
  108. jl .h
  109. sub ax, 1000
  110. add dx, 1
  111. jmp .k
  112. .h:
  113. cmp ax, 100
  114. jl .t
  115. sub ax, 100
  116. add cx, 1
  117. jmp .h
  118. .t:
  119. cmp ax, 10
  120. jl .end
  121. sub ax, 10
  122. add bx, 1
  123. jmp .t
  124.  
  125. .end:
  126. test ex, ex
  127. jnz .digits
  128. test dx, dx
  129. jnz .skip1
  130. test cx, cx
  131. jnz .skip2
  132. test bx, bx
  133. jnz .skip3
  134. jmp .skip4
  135.  
  136. .digits:
  137. mov ex, [ex+decimals]
  138. send 0, ex
  139. .skip1:
  140. mov ex, [dx+decimals]
  141. send 0, ex
  142. .skip2:
  143. mov ex, [cx+decimals]
  144. send 0, ex
  145. .skip3:
  146. mov ex, [bx+decimals]
  147. send 0, ex
  148. .skip4:
  149. mov ex, [ax+decimals]
  150. send 0, ex
  151.  
  152. pop ex
  153. pop dx
  154. pop cx
  155. pop bx
  156. pop ax
  157. ret
  158. info: db "This Program Counts Up Using SopaXorzTaker's Tpt-Io Libraray Running On LbpHacker's R16K1S60", 0
  159. space: db " ", 0
  160. decimals: dw "0123456789"
Advertisement
Add Comment
Please, Sign In to add comment