Advertisement
Guest User

Untitled

a guest
Nov 17th, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.43 KB | None | 0 0
  1. .model tiny
  2. .stack 100h
  3. .data
  4. buf db 256 dup(0)
  5. size = $ - buf
  6. buf2 db 256 dup(0)
  7. res db 256 dup(0)
  8. newline db 10,13,'$'
  9. max db ?
  10.  
  11. .code
  12.  
  13. start proc
  14. mov al, size-2
  15. lea bx, buf
  16. call INPUT; âõîäíîé ìàññèâ ñ ðàçìåðîì â MaxSize â al è ptr â bx
  17. call OUTPUT
  18.  
  19. lea bx, buf2
  20. mov al, size-2
  21. call INPUT
  22. call OUTPUT
  23.  
  24. xor cx, cx
  25.  
  26. call sumArrays
  27.  
  28. mov al, [buf+1] ; êëàäåì ìàêñ äëèíó ìàññèâà â max
  29. mov ah, [buf2+1]
  30. cmp al, ah
  31. jg gt ;ïåðåõîä åñëè áîëüøå
  32. mov max, ah
  33. jmp skip1
  34. gt:
  35. mov max, al
  36.  
  37. skip1:
  38. or dx, dx ;ïðîâåðêà áèòà íà ïåðåïîëíåíèå
  39. jz no_overflow ; flag ZF = 1
  40. xor ax, ax
  41. cmp dl, 10
  42. jl decremHigh
  43. sub dl, 10
  44. add dl, 'A'
  45. xor ax, ax
  46. mov ah, 02h
  47. int 21h
  48. jmp no_overflow
  49.  
  50. decremHigh:
  51. add dl, '0'
  52. xor ax, ax
  53. mov ah, 02h
  54. int 21h
  55.  
  56. no_overflow: ;ïîêà íå ïåðåïîëíèëîñü
  57. xor ax, ax
  58. xor dx, dx
  59. xor cx, cx
  60. xor bx, bx
  61. mov ax, @data
  62. mov ds, ax
  63. lea si, res
  64. mov cl, max
  65. ; âûâîä ìàññèâà ñ ðàçìåðîì â cl è ïåðâîãî ýëåìåíòà ptr â ds[si]
  66. push ax
  67. push bx
  68. push cx
  69. push dx
  70.  
  71. xor dx, dx
  72. xor ax, ax
  73. l: mov dl, ds[si]
  74. mov ah, 02h
  75. int 21h
  76. inc si
  77. loop l
  78.  
  79. pop dx
  80. pop cx
  81. pop bx
  82. pop ax
  83. ret
  84. ret
  85. start endp
  86.  
  87.  
  88. INPUT proc
  89. push ax
  90. push bx
  91. push cx
  92. push dx
  93.  
  94. mov cx, ax
  95. mov ah, 0Ah
  96. mov [bx], al
  97. mov [bx+1], 0
  98. mov dx, bx
  99. int 21h
  100. mov al, [bx+1]
  101. add dx, 2
  102. mov ah, ch
  103.  
  104. pop dx
  105. pop cx
  106. pop bx
  107. pop ax
  108. ret
  109. INPUT endp
  110.  
  111. OUTPUT proc
  112. push ax
  113. push bx
  114. push cx
  115. push dx
  116. mov ax, @data
  117. mov ds, ax
  118. lea dx, newline
  119. mov ah, 9
  120. int 21h
  121. pop dx
  122. pop cx
  123. pop bx
  124. pop ax
  125. ret
  126. OUTPUT endp
  127.  
  128. sumArrays proc
  129. push 0 ;äîáàâëåíèå 0 åñëè ó ìàññèâîâ íå îäèíàêîâàÿ äëèíà
  130. mov al, [buf+1]
  131. mov ah, [buf2+1]
  132. cmp al, ah ;ñðàâíåíèå äëèí äâóõ ìàññèâîâ
  133. jg small ; åñëè áîëüøå
  134. jl big
  135. mov cl, ah
  136. jmp Addition
  137.  
  138. small: ;>> äëèíà ìàëåíüêîãî ìàññèâà
  139. mov cl, ah
  140. lenSmall:
  141. mov dx, @data
  142. mov ds, dx
  143. lea bx, buf2
  144. add bx, cx
  145. inc bx ;+1
  146. mov dl, ds[bx]
  147. add bl, al
  148. sub bl, ah
  149. mov ds[bx], dl
  150. loop lenSmall
  151. mov cl, al
  152. sub cl, ah
  153.  
  154. zeroSmall:
  155. mov dx, @data
  156. mov ds, dx
  157. lea bx, buf2
  158. add bx, cx
  159. inc bx
  160. mov ds[bx], '0'
  161. loop zeroSmall
  162. mov cl, al
  163. jmp Addition
  164.  
  165. big:
  166. mov cl, al
  167. lenBig:
  168. mov dx, @data
  169. mov ds, dx
  170. lea bx, buf
  171. add bx, cx
  172. inc bx
  173. mov dl, ds[bx]
  174. add bl, ah
  175. sub bl, al
  176. mov ds[bx], dl
  177. loop lenBig
  178. mov cl, ah
  179. sub cl, al
  180.  
  181. zeroBig:
  182. mov dx, @data
  183. mov ds, dx
  184. lea bx, buf
  185. add bx, cx
  186. inc bx
  187. mov ds[bx], '0'
  188. loop zeroBig
  189. mov cl, ah
  190. jmp Addition
  191.  
  192.  
  193. Addition:
  194. xor ax, ax
  195. lea bx, buf
  196. mov dx, @data
  197. mov ds, dx
  198. xor dx, dx
  199. add bx, cx
  200. inc bx
  201. pop dx
  202. mov al, ds[bx]
  203. cmp al, 'A'
  204. jl decrem1 ;åñëè ìåíüøå
  205. sub al, 'A'
  206. add al, 10
  207. jmp hex1
  208. decrem1:
  209. sub al, '0'
  210. hex1:
  211. add dl, al
  212. lea bx, buf2
  213. add bx, cx
  214. inc bx
  215. mov al, ds[bx]
  216. cmp al, 'A'
  217. jl decrem2
  218. sub al, 'A'
  219. add al, 10
  220. jmp hex2
  221. decrem2:
  222. sub al, '0'
  223. hex2:
  224.  
  225. add dl, al
  226. cmp dl, 16
  227. jl else ;åñëè íå ïåðåïîëíèëñÿ
  228. push 1
  229. sub dl, 16
  230. cmp dl, 10
  231. jl decrem3
  232. sub dl, 10
  233. add dl, 'A'
  234. jmp hex3
  235.  
  236. decrem3:
  237. add dl, '0'
  238. hex3:
  239. jmp skip
  240.  
  241. else:
  242. push 0
  243. cmp dl, 10
  244. jl decrem4
  245. sub dl, 10
  246. add dl, 'A'
  247. jmp hex4
  248.  
  249. decrem4:
  250. add dl, '0'
  251. hex4:
  252.  
  253. skip:
  254. lea bx, res ;çàãðóæàåì â bx res ñëîæåíèÿ
  255. add bx, cx
  256. dec bx
  257. mov ds[bx], dl
  258. loop Addition
  259. pop dx; îñòàâëÿåì ñàìûé áîëüøîé áèò â dx
  260. ret
  261. sumArrays endp
  262. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement