Advertisement
FacuValverdi

Suma de dos digitos en Assembler -M8086

May 20th, 2021
498
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. title SumaDeDosDigitos
  2. cr equ 13
  3. lf equ 10
  4. pila segment stack
  5. db 64 dup('')
  6. pila ends
  7. datos segment
  8. texto1 db cr,lf,'Ingrese primer numero:','$'
  9. texto2 db cr,lf,'Ingrese segundo numero:','$'
  10. texto3 db cr,lf,'Resultado: ','$'
  11. cad db 3 dup('0'),'$'
  12. cad2 db 3 dup('0'),'$'
  13. constante dw 0,'$'
  14. aux1 db 0,'$'
  15. aux2 db 0,'$'
  16. resultado db 0,'$'
  17. resulCad 3 dup('0'),'$'
  18. datos ends
  19. codigo segment
  20. inicio proc far
  21. assume ds:datos,ss:pila,cs:codigo
  22. push ds
  23. sub ax,ax
  24. push ax
  25. mov ax,datos
  26. mov ds,ax
  27.  
  28. lea dx,texto1
  29. call escribir
  30. sub si,si
  31.  
  32. ingreso:mov ah,01
  33. int 21h
  34. cmp si,3
  35. je fin
  36. cmp al,13
  37. je fin
  38. sub al,48
  39. mov cad[si],al
  40. inc si
  41. jmp ingreso
  42.  
  43. fin: mov cad[si],'$'
  44.  
  45. ; lea dx,texto3
  46. ; call escribir
  47.  
  48. ; lea dx,cad
  49. ; call escribir
  50.  
  51. ;Armo el polinomio multiplicador para el primer numero
  52. mov dl,1
  53. mov constante,10
  54.  
  55.  
  56. multip: sub ah,ah
  57. mov al,cad[si]
  58. cmp al,'$'
  59. je finCad
  60. MUL dl
  61. ADD aux1,al
  62. sub ax,ax
  63. mov al,dl
  64. MUL constante
  65. mov dl,al
  66. cmp si,0
  67. je fin2
  68. finCad: dec si
  69. jmp multip
  70.  
  71. fin2:
  72. ;lea dx,texto3
  73. ;call escribir
  74. ;lea dx,aux1
  75. ;call escribir
  76.  
  77. lea dx,texto2
  78. call escribir
  79. sub si,si
  80.  
  81. ingreso2:mov ah,01
  82. int 21h
  83. cmp si,3
  84. je fin3
  85. cmp al,13
  86. je fin3
  87. sub al,48
  88. mov cad2[si],al
  89. inc si
  90. jmp ingreso2
  91.  
  92. fin3: mov cad2[si],'$'
  93.  
  94. ;lea dx,texto3
  95. ;call escribir
  96. ;lea dx,cad2
  97. ;call escribir
  98.  
  99. ;Armo el polinomio multiplicador para el segundo numero
  100. mov dl,1
  101. mov constante,10
  102.  
  103.  
  104. multip2: sub ah,ah
  105. mov al,cad2[si]
  106. cmp al,'$'
  107. je finCad2
  108. MUL dl
  109. ADD aux2,al
  110. sub ax,ax
  111. mov al,dl
  112. MUL constante
  113. mov dl,al
  114. cmp si,0
  115. je fin4
  116. finCad2: dec si
  117. jmp multip2
  118.  
  119. fin4:
  120. ;lea dx,texto3
  121. ;call escribir
  122. ;lea dx,aux2
  123. ;call escribir
  124.  
  125. ;Realizo la SUMA
  126. SUB AX,AX
  127. MOV al,aux1
  128. adc al,aux2
  129. mov resultado,al
  130.  
  131. ;lea dx,texto3
  132. ;call escribir
  133.  
  134. ;lea dx,resultado
  135. ;call escribir
  136.  
  137. ;Convierto numero en cadena de caracteres
  138.  
  139. mov si,2
  140. sub ax,ax
  141. sub bx,bx
  142. mov al,resultado
  143. mov bl,10 ;Divisor
  144.  
  145. dividir:
  146. div bl
  147. add ah,48
  148. mov resulCad[si],ah
  149. dec si
  150. sub ah,ah ;se debe borrar ah, para continuar dividiendo
  151. cmp al,0
  152. jne dividir
  153.  
  154. lea dx,texto3
  155. call escribir
  156. lea dx,resulCad
  157. call escribir
  158.  
  159. call esperar
  160. ret
  161. inicio endp
  162. escribir proc
  163. push ax
  164. mov ah,09
  165. int 21h
  166. pop ax
  167. ret
  168. escribir endp
  169. esperar proc
  170. push ax
  171. mov ah,00
  172. int 16h
  173. pop ax
  174. ret
  175. esperar endp
  176. codigo ends
  177. end inicio
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement