Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. .model small
  2. .stack 100h
  3. .data
  4. welcomeMessage db "Ax^2 + Bx + C = 0", 10, 13, '$'
  5. GiveMeA db "A = $"
  6. GiveMeB db "B = $"
  7. GiveMeC db "C = $"
  8.  
  9. leng dw 0
  10. minus dw 0
  11. dot dw 0
  12. .code
  13.  
  14. InputReader PROC
  15. mov ax, 0
  16. mov leng, ax
  17. mov minus, ax
  18. mov dot, ax
  19.  
  20. getchar:
  21. mov ah, 08h
  22. int 21h
  23.  
  24. cmp al, 13
  25. jnz goto1
  26. jmp getchar_stop
  27. goto1:
  28.  
  29. cmp al, 8
  30. jz backspace_pressed
  31.  
  32. cmp al, '-'
  33. jz minus_pressed
  34.  
  35. cmp al, '.'
  36. jz dot_pressed
  37.  
  38. cmp al, '0'
  39. jb getchar
  40.  
  41. cmp al, '9'
  42. ja getchar
  43.  
  44. push ax
  45. mov dl, al
  46. mov ah, 02h
  47. int 21h
  48. pop ax
  49.  
  50. sub al, '0'
  51. xor ah, ah
  52. push ax
  53.  
  54. mov ax, leng
  55. inc ax
  56. mov leng, ax
  57.  
  58. mov ax, dot
  59. cmp ax, 0
  60. jz getchar
  61.  
  62. inc ax
  63. mov dot, ax
  64.  
  65. jmp getchar
  66.  
  67. dot_pressed:
  68.  
  69. mov ax, dot
  70. cmp ax, 0
  71. jnz getchar
  72.  
  73. mov ax, minus
  74. cmp ax, 1
  75. jz already_minus
  76. mov ax, leng
  77. cmp ax, 1
  78. jb getchar
  79.  
  80. mov dl, '.'
  81. mov ah, 02h
  82. int 21h
  83.  
  84. mov ax, leng
  85. inc ax
  86. mov leng, ax
  87.  
  88. mov ax, dot
  89. inc ax
  90. mov dot, ax
  91.  
  92. jmp getchar
  93. already_minus:
  94. mov ax, leng
  95. cmp ax, 2
  96. jb getchar
  97.  
  98. mov dl, '.'
  99. mov ah, 02h
  100. int 21h
  101.  
  102. mov ax, leng
  103. inc ax
  104. mov leng, ax
  105.  
  106. mov ax, dot
  107. inc ax
  108. mov dot, ax
  109.  
  110. jmp getchar
  111. backspace_pressed:
  112.  
  113. minus_pressed:
  114. mov ax, minus
  115. cmp ax, 1
  116. jnz goto2
  117. jmp getchar
  118. goto2:
  119.  
  120. mov ax, leng
  121. cmp ax, 0
  122. jz goto3
  123. jmp getchar
  124. goto3:
  125.  
  126. mov ax, 1
  127. mov minus, ax
  128.  
  129. mov dl, '-'
  130. mov ah, 02h
  131. int 21h
  132.  
  133. mov ax, 1
  134. mov leng, ax
  135.  
  136. jmp getchar
  137. getchar_stop:
  138.  
  139. ret
  140. InputReader ENDP
  141.  
  142. main:
  143. mov ax, @data
  144. mov ds, ax
  145.  
  146. mov dx, offset welcomeMessage
  147. mov ah, 09h
  148. int 21h
  149.  
  150. mov dx, offset GiveMeA
  151. mov ah, 09h
  152. int 21h
  153.  
  154. CALL InputReader
  155.  
  156.  
  157. mov ax, 4C00h
  158. int 21h
  159. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement