martes, 20 de marzo de 2018

Multiplicación de dos números ingresados por teclado (TURBO)

Multiplicación de dos números ingresados por teclado (TURBO)


.model small      ;se define el modelo de memoria
.stack            ;se define el tamano de la pila

datos segment      ;se define las variables

    nombre db, 13,10, "Multiplicacion de dos numeros ingresados por teclado",13,10,13,10,'$' ;nombre del programa

    mensaje1 db "Ingrese el primer numero:",13,10,'$'     ;primer numero de la multiplicacion
    mensaje2 db "Ingrese el 2do numero:",13,10,'$'   ;segundo numero de la multiplicacion 
    mensaje3 db "El resultado de la multiplicacion es: ",'$' ;resultado en pantalla
    
suma db 0

n1 db 0
n2 db 0
byteh db 0
bytel db 0
salto db " ",13,10,'$'      ;salto de fila

datos ends

codigo segment              ;comienzo de codigo
    
   assume cs:codigo, ds: datos

inicio proc far

 mov ax,datos   ;direccionamiento
 mov ds,ax      ;aqui es donde se guarda

;Limpiar Pantalla

mov ah, 00
mov al, 03h
int 10h

;Inicializacion de resgistros en 0

mov ah,02h
mov dl,00
int 10h

mov ah, 09h      ;lee el mensaje
lea dx,nombre
int 21h

;Instrucciones para la realizacion de la multiplicacion.

     mov ah,09h
     lea dx,mensaje1   ;mensaje de solicitud del primer numero
     int 21h
     
     mov ah,01h      ;lee los caracteres del teclado
     int 21h
     
     ;Conversion del numero.
     
     sub al,30h       ;hace la conversion ascii
     mov n1,al        ; se pasaa la variable n1
     int 21h
     
     mov ah,09h       ;impresion de caracteres
     lea dx, salto    ;saltar de fila
     int 21h
     
     mov ah,09h
     lea dx, mensaje2   ;mensaje del segundo numero
     int 21h
     
     mov ah,01h         ;leer y mostrar numero digitado
     int 21h
     
     sub al,30h          ;conversion ASCII
     mov n2,al           ;se pasa ala variable n2
     int 21h
     
     ;Operacion de sumas sucesivas
     
     mov cl,n2
     
     sumar:
     
      mov al,n1          ;movemos el registro al a el valor del numero 1
      add al,suma        ;sumamos a al el valor de la suma
      mov suma,al        ;movemos a suma el valor del resultado
      loop sumar
      
      mov ah, 09h         ;impresion de caracteres
      lea dx, mensaje3    ;impresion del mensaje 3
      int 21h
      
      mov al,suma
      aam                 ;corrige el resultado de la multiplicacion de datos ASCII en el registro ax
      mov bytel,al
      mov byteh,ah
      
      mov ah,02h
      
      mov dl,byteh
      add dl,30h
      int 21h
      
      mov dl,bytel
      add dl,30h
      int 21h 
     
      mov ah,09h            ;ipresion de caracteres
      lea dx,salto          ;salto de fila
      int 21h
      
      salir:                 ;retorna el mando al DOS
      
      mov ax, 4c00h
      int 21h
      
  inicio endp

  end inicio

No hay comentarios.:

Publicar un comentario