Advertisement
MohamedNabil97

Untitled

Dec 10th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.53 KB | None | 0 0
  1.  
  2. data segment
  3.  
  4. prompt1 db "Enter first number: $"
  5. prompt2 db "Enter second number: $"
  6.  
  7. input1 dw 8 dup("$")
  8. packed1 db 4 dup(?)
  9.  
  10. input2 dw 8 dup("$")
  11. packed2 db 4 dup(?)
  12.  
  13. resultmessage db "Result: $"
  14. result db 4 dup(?)
  15. resultascii dw 4 dup(?)
  16.  
  17. newline db 13, 10, "$"
  18.  
  19.  
  20. ends
  21.  
  22. stack segment
  23. dw 128 dup(0)
  24. ends
  25.  
  26. code segment
  27. start:
  28.  
  29. mov ax, data
  30. mov ds, ax
  31. mov es, ax
  32.  
  33. lea dx, prompt1
  34. mov ah, 9
  35. int 21h ; print prompt1
  36.  
  37.  
  38. mov cx, 8
  39. mov si, offset input1
  40.  
  41.  
  42. inloop1:
  43. mov ah, 01 ; input1
  44. int 21h
  45. mov [si], al
  46. inc si
  47. loop inloop1
  48.  
  49. xor ax, ax
  50.  
  51. mov ah, 09
  52. mov dx, offset newline
  53. int 21h ; print newline
  54.  
  55. lea dx, prompt2
  56. mov ah, 9
  57. int 21h ; print prompt2
  58.  
  59. mov cx, 8
  60. mov di, offset input2
  61.  
  62.  
  63.  
  64. inloop2:
  65. mov ah, 01 ; input2
  66. int 21h
  67. mov [di], al
  68. inc di
  69. loop inloop2
  70.  
  71.  
  72.  
  73. ; ascii to packed bcd
  74. xor ax, ax
  75. mov ax, input1
  76. and ax, 0f0fh
  77. mov cl, 4
  78. shl al, cl
  79. add al, ah
  80. mov packed1, al
  81.  
  82. xor ax, ax
  83. mov si,offset input1
  84. mov ax, [si+2]
  85. and ax, 0f0fh
  86. mov cl, 4
  87. shl al, cl
  88. add al, ah
  89. mov si,offset packed1
  90. mov [si+1], al
  91.  
  92.  
  93. xor ax, ax
  94. mov si,offset input1
  95. mov ax, [si+4]
  96. and ax, 0f0fh
  97. mov cl, 4
  98. shl al, cl
  99. add al, ah
  100. mov si,offset packed1
  101. mov [si+2], al
  102.  
  103.  
  104. xor ax, ax
  105. mov si,offset input1
  106. mov ax, [si+6]
  107. and ax, 0f0fh
  108. mov cl, 4
  109. shl al, cl
  110. add al, ah
  111. mov si,offset packed1
  112. mov [si+3], al
  113.  
  114.  
  115.  
  116.  
  117. xor ax, ax
  118. mov ax, input2
  119. and ax, 0f0fh
  120. mov cl, 4
  121. shl al, cl
  122. add al, ah
  123. mov packed2, al
  124.  
  125.  
  126. xor ax, ax
  127. mov si,offset input2
  128. mov ax, [si+2]
  129. and ax, 0f0fh
  130. mov cl, 4
  131. shl al, cl
  132. add al, ah
  133. mov si,offset packed2
  134. mov [si+1], al
  135.  
  136. xor ax, ax
  137. mov si,offset input2
  138. mov ax, [si+4]
  139. and ax, 0f0fh
  140. mov cl, 4
  141. shl al, cl
  142. add al, ah
  143. mov si,offset packed2
  144. mov [si+2], al
  145.  
  146. xor ax, ax
  147. mov si,offset input2
  148. mov ax, [si+6]
  149. and ax, 0f0fh
  150. mov cl, 4
  151. shl al, cl
  152. add al, ah
  153. mov si,offset packed2
  154. mov [si+3], al
  155.  
  156.  
  157. ; packed bcd addition
  158. xor ax, ax
  159. mov si, offset packed1
  160. mov di, offset packed2
  161. mov bx, offset result
  162.  
  163. mov al, [si+3]
  164. add al, [di+3]
  165. daa
  166. mov [bx+3], al
  167.  
  168. mov al, [si+2]
  169. adc al, [di+2]
  170. daa
  171. mov [bx+2], al
  172.  
  173.  
  174. mov al, [si+1]
  175. adc al, [di+1]
  176. daa
  177. mov [bx+1], al
  178.  
  179. mov al,[si]
  180. adc al, [di]
  181. daa
  182. mov [bx], al
  183.  
  184.  
  185.  
  186. ; packed bcd to ascii
  187. xor ax, ax
  188. mov al, result
  189. mov ah, al
  190. and al, 0fh
  191. mov cl, 4
  192. shr ah, cl
  193. or ax, 3030h
  194. xchg ah,al
  195. mov resultascii, ax
  196.  
  197. xor ax, ax
  198.  
  199. xor ax, ax
  200. mov si, offset result
  201. mov al, [si+1]
  202. mov ah, al
  203. and al, 0fh
  204. mov cl, 4
  205. shr ah, cl
  206. or ax, 3030h
  207. mov si,offset resultascii
  208. xchg ah,al
  209. mov [si+2], ax
  210.  
  211.  
  212. xor ax, ax
  213. mov si, offset result
  214. mov al, [si+2]
  215. mov ah, al
  216. and al, 0fh
  217. mov cl, 4
  218. shr ah, cl
  219. or ax, 3030h
  220. mov si,offset resultascii
  221. xchg ah,al
  222. mov [si+4], ax
  223.  
  224.  
  225. xor ax, ax
  226. mov si, offset result
  227. mov al, [si+3]
  228. mov ah, al
  229. and al, 0fh
  230. mov cl, 4
  231. shr ah, cl
  232. or ax, 3030h
  233. mov si,offset resultascii
  234. xchg ah,al
  235. mov [si+6], ax
  236.  
  237.  
  238. xor ax, ax
  239.  
  240. mov ah, 09
  241. mov dx, offset newline
  242. int 21h ; print newline
  243.  
  244. lea dx, resultmessage
  245. mov ah, 9
  246. int 21h ; print resultmessage
  247.  
  248.  
  249.  
  250. ;reverse the number
  251. ; mov si,offset resultascii;
  252. ; mov al,[si]
  253. ; mov ah,[si+1]
  254. ; mov [si],ah
  255. ; mov [si+1],al
  256.  
  257. lea dx, resultascii
  258. mov ah, 9
  259. int 21h ; print result
  260.  
  261.  
  262.  
  263. ; wait for any key....
  264. mov ah, 1
  265. int 21h
  266.  
  267. mov ax, 4c00h ; exit to operating system.
  268. int 21h
  269.  
  270. ends
  271.  
  272. end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement