Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- title SumaDeDosDigitos
- cr equ 13
- lf equ 10
- pila segment stack
- db 64 dup('')
- pila ends
- datos segment
- texto1 db cr,lf,'Ingrese primer numero:','$'
- texto2 db cr,lf,'Ingrese segundo numero:','$'
- texto3 db cr,lf,'Resultado: ','$'
- cad db 3 dup('0'),'$'
- cad2 db 3 dup('0'),'$'
- constante dw 0,'$'
- aux1 db 0,'$'
- aux2 db 0,'$'
- resultado db 0,'$'
- resulCad 3 dup('0'),'$'
- datos ends
- codigo segment
- inicio proc far
- assume ds:datos,ss:pila,cs:codigo
- push ds
- sub ax,ax
- push ax
- mov ax,datos
- mov ds,ax
- lea dx,texto1
- call escribir
- sub si,si
- ingreso:mov ah,01
- int 21h
- cmp si,3
- je fin
- cmp al,13
- je fin
- sub al,48
- mov cad[si],al
- inc si
- jmp ingreso
- fin: mov cad[si],'$'
- ; lea dx,texto3
- ; call escribir
- ; lea dx,cad
- ; call escribir
- ;Armo el polinomio multiplicador para el primer numero
- mov dl,1
- mov constante,10
- multip: sub ah,ah
- mov al,cad[si]
- cmp al,'$'
- je finCad
- MUL dl
- ADD aux1,al
- sub ax,ax
- mov al,dl
- MUL constante
- mov dl,al
- cmp si,0
- je fin2
- finCad: dec si
- jmp multip
- fin2:
- ;lea dx,texto3
- ;call escribir
- ;lea dx,aux1
- ;call escribir
- lea dx,texto2
- call escribir
- sub si,si
- ingreso2:mov ah,01
- int 21h
- cmp si,3
- je fin3
- cmp al,13
- je fin3
- sub al,48
- mov cad2[si],al
- inc si
- jmp ingreso2
- fin3: mov cad2[si],'$'
- ;lea dx,texto3
- ;call escribir
- ;lea dx,cad2
- ;call escribir
- ;Armo el polinomio multiplicador para el segundo numero
- mov dl,1
- mov constante,10
- multip2: sub ah,ah
- mov al,cad2[si]
- cmp al,'$'
- je finCad2
- MUL dl
- ADD aux2,al
- sub ax,ax
- mov al,dl
- MUL constante
- mov dl,al
- cmp si,0
- je fin4
- finCad2: dec si
- jmp multip2
- fin4:
- ;lea dx,texto3
- ;call escribir
- ;lea dx,aux2
- ;call escribir
- ;Realizo la SUMA
- SUB AX,AX
- MOV al,aux1
- adc al,aux2
- mov resultado,al
- ;lea dx,texto3
- ;call escribir
- ;lea dx,resultado
- ;call escribir
- ;Convierto numero en cadena de caracteres
- mov si,2
- sub ax,ax
- sub bx,bx
- mov al,resultado
- mov bl,10 ;Divisor
- dividir:
- div bl
- add ah,48
- mov resulCad[si],ah
- dec si
- sub ah,ah ;se debe borrar ah, para continuar dividiendo
- cmp al,0
- jne dividir
- lea dx,texto3
- call escribir
- lea dx,resulCad
- call escribir
- call esperar
- ret
- inicio endp
- escribir proc
- push ax
- mov ah,09
- int 21h
- pop ax
- ret
- escribir endp
- esperar proc
- push ax
- mov ah,00
- int 16h
- pop ax
- ret
- esperar endp
- codigo ends
- end inicio
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement