601legend

Untitled

May 23rd, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. assume cs:code, ds:data
  2. code segment
  3. begin:
  4. jmp main
  5. chislo dw 0
  6. mult10 dw 1
  7.  
  8. main proc near
  9. mov ax, data
  10. mov ds,Ax
  11.  
  12. mov ah, 09h
  13. lea dx, msg1
  14. int 21h
  15.  
  16. mov ah, 0ah
  17. lea dx,param
  18. int 21h
  19. lea si,field -1
  20. mov bh,0
  21. mov bl, actlen
  22.  
  23. call InNumber
  24. mov ax,chislo
  25. mov a1,ax
  26.  
  27. mov chislo,0
  28. mov mult10,1
  29.  
  30. mov ah, 09h
  31. lea dx,new_line
  32. int 21h
  33.  
  34. mov ah, 09h
  35. lea dx, msg2
  36. int 21h
  37.  
  38.  
  39. mov ah, 0ah
  40. lea dx,param
  41. int 21h
  42.  
  43.  
  44. lea si,field - 1
  45. mov bh,0
  46. mov bl, actlen
  47.  
  48. call InNumber
  49.  
  50. mov ax,chislo
  51. mov a2,ax
  52.  
  53. mov BX, a1
  54. mov CX, a2
  55. cmp BX, CX
  56. JG More
  57. JL Less
  58. JE Equal
  59.  
  60.  
  61. More:
  62. mov ax, a2
  63. cwd
  64. add ax, a1
  65. cwd
  66. mov bx, a1
  67. sub bl, 1
  68. idiv bx
  69. cwd
  70. mov word ptr chislo, ax
  71. mov word ptr chislo+2, dx
  72. jmp output
  73.  
  74. mov ax, a2
  75. cwd
  76. mov bx, a2
  77. imul bx
  78. mov bx, 8
  79. idiv bx
  80. cwd
  81. mov word ptr chislo, ax
  82. mov word ptr chislo+2, dx
  83. jmp output
  84. ;__________________________________________
  85.  
  86.  
  87. Equal:
  88. mov ax, 23
  89. mov dx, 0
  90. mov word ptr chislo, ax
  91. mov word ptr chislo+2, dx
  92. ;__________________________________________
  93.  
  94.  
  95. output:
  96. mov chislo, ax
  97.  
  98.  
  99. call FromNumber
  100.  
  101.  
  102. mov ah, 09h
  103. lea dx,new_line
  104. int 21h
  105.  
  106.  
  107. mov ah, 09h
  108. lea dx, msg
  109. int 21h
  110.  
  111. mov ah, 09h
  112. lea dx,otvet
  113. int 21h
  114.  
  115. mov ah, 0ah
  116. lea dx,param
  117. int 21h
  118. mov ax,4c00h
  119. int 21h
  120. ret
  121. main endp
  122.  
  123.  
  124. InNumber proc
  125. ;---------------------------
  126. mov cx,10
  127.  
  128.  
  129. b20:
  130. mov al,[si+bx]
  131. and ax, 000fh
  132. mul mult10
  133. add chislo, ax
  134. mov ax,mult10;
  135. mul cx
  136. mov mult10,ax
  137. dec bx
  138. jnz b20
  139. ret
  140. InNumber endp
  141.  
  142.  
  143.  
  144.  
  145. FromNumber proc
  146. mov cx,0010;
  147. lea si, otvet + 5
  148. mov ax,chislo
  149.  
  150. mov bx, ax
  151. and bx, 8000h
  152. cmp bx, 8000h
  153. jb plus
  154.  
  155. mov bx, ax
  156. mov ax, 65535
  157. sub ax, bx
  158. add ax, 1
  159.  
  160. mov bx, 1
  161. plus:
  162. c20:
  163. cmp ax,0010
  164. jb c30
  165. xor dx,dx
  166. div cx
  167. or dl,30h
  168. mov [si],dl
  169. dec si
  170. jmp c20
  171.  
  172. c30:
  173. or al,30h
  174. mov [si],al
  175.  
  176. cmp bx, 1
  177. je addminus
  178. ret
  179. addminus:
  180. dec si
  181. mov al, zminus
  182. mov [si], al
  183. ret
  184. FromNumber endp
  185.  
  186. code ends
  187.  
  188. data segment
  189. new_line db 0dh,0ah,'$'
  190. msg db 'Result: $'
  191. msg1 db 'Input a: $'
  192. msg2 db 'Input b: $'
  193. otvet db ' $'
  194. zminus db '-'
  195. a1 dw ?
  196. a2 dw ?
  197. param label byte
  198. maxlen db 20
  199. actlen db ?
  200. field db 20 dup(' ')
  201.  
  202. data ends
  203. stk segment
  204. db 256 dup (?)
  205. stk ends
  206. end begin
Advertisement
Add Comment
Please, Sign In to add comment