Vous êtes sur la page 1sur 12

; Programa que lleva a cabo las operaciones aritmticas bsicas entre los nmeros 1 y 2 en

lenguaje asambler

; La mayora de las instrucciones en ensamblador trabajan con dos operandos, aunque hay
instrucciones que
; funcionan solo con uno. El primero normalmente es el operando destino, que es el depsito
del resultado de
; alguna operacin; y el segundo es el operando fuente, que lleva el dato que ser procesado.
Los operandos se
; separan uno del otro por medio de una coma ",".

; Se hacen uso de los registros de propsito general


; ax registro acumulador contiene 16 bit (ah 8 bits parte alta y al 8 bits parte baja)
; bx registro base contiene 16 bit (bh 8 bits parte alta y bl 8 bits parte baja)
; dx registro de datos contiene 16 bit (dh 8 bits parte alta y dl 8 bits parte baja)

; Definicin del tipo y segmentos de memoria tanto de datos como de programa


; La directiva .model define el tipo de memoria que se utilizar y en este caso se utilizara
small
.model small
; La directiva .stack le pide al ensamblador que reserve un espacio de memoria para las
operaciones de la pila de
; datos
.stack 64
; Definicin del segmento de datos (variables) donde se almacenar la informacin
; La directiva .DATA le indica al ensamblador que lo que est escrito a continuacin debe
almacenarlo en l ;segmento de memoria destinado a los datos.
.data

; Declaracin de variables o espacios o registro de propsito especial utilizados en la memoria


de datos
; Directivas que nos permite declarar un espacio en la memoria de datos para almacenar los
nmeros y los ;resultados de las operaciones aritmticas
; La directiva db es utilizada para definir bytes sea asignarle a este espacio de memoria
cierto identificador o un

; valor, ya sea una constante o una cadena de caracteres.

; Directiva que nos permite declarar un espacio en la memoria de datos para almacenar el
numero 1
numero1 db 0
; Directiva que nos permite declarar un espacio en la memoria de datos para almacenar el
numero 2
numero2 db 0
; Directiva que nos permite declarar un espacio en la memoria de datos para almacenar el
valor del resultado de la ;suma
suma db 0
; Directiva que nos permite declarar un espacio en la memoria de datos para almacenar el
valor del resultado de la ;resta
resta db 0
; Directiva que nos permite declarar un espacio en la memoria de datos para almacenar el
valor del resultado de la ;multiplicacin
multiplicacion db 0
; Directiva que nos permite declarar un espacio en la memoria de datos para almacenar el
valor del resultado de la ;divisin
division db 0
; Directiva que nos permite declarar un espacio en la memoria de datos para almacenar el
valor del resultado del ;modulo
modulo db 0

; Declaracin en memoria de datos de los mensajes que se mostrarn en la ejecucin del


programa
; Para los mensajes se separan de 10 a 13 espacios
; En la definicin de los mensajes el 10,13 nos indica que el mensaje se lee de derecha a
izquierda

; Declaracin del mensaje para que el usuario ingrese el primer nmero para realizar las
operaciones
msgn1 db 10,13, "Ingresa el primer valor: ",'S'
; Declaracin del mensaje para ingresar el segundo numero para realizar las operaciones
msgn2 db 10,13, "Ingresa el segundo valor: ",'S'

; Declaracin del mensaje mostrar al usuario el resultado de la suma entre el numero uno y
dos
msg1 db 10,13, "Suma= ",'S'
; Declaracin del mensaje mostrar al usuario el resultado de la resta entre el numero uno y
dos
msg2 db 10,13, "Resta= ",S
; Declaracin del mensaje mostrar al usuario el resultado de la multiplicacion entre el numero
uno y dos
msg3 db 10,13, "Multiplicacion= ",S
; Declaracin del mensaje mostrar al usuario el resultado de la division entre el numero uno y
dos
msg4 db 10,13, "Division= ",'S'
; Declaracin del mensaje mostrar al usuario el resultado del mdulo entre el numero uno y
dos
msg5 db 10,13, "Modulo= ",'S'

; Definicin o inicio del segmento de cdigo del programa


; La directiva .code nos indica que lo que est a continuacin es el cdigo del programa como
tal
.code
; Directiva promedio de la que se direccionan los datos del Programa
; El segmento de cdigo contiene el cdigo ejecutable de un programa. Tambin tiene uno o
ms procedimientos,
; definidos con la directiva PROC, e l operando far en este caso est relacionado con la
ejecucin del programa

; cuando se solicita la ejecucin de un programa, el cargador de programas del DOS


utiliza este nombre de procedimiento como el punto de entrada para la primera
instruccin a ejecutar.
begin proc far
; Se coloca @data en el registro ax para despus pasarlo al registro ds, ya que no se puede
copiar directamente
; una constante a un registro de segmento. El contenido de @data es el nmero del segmento
que ser utilizado
; para la entrada o salida de los datos.
mov ax, @data

mov ds, ax

; Solicitar al usuario el ingreso del primer nmero


; Se debe de realizar la conversin del valor ingresado por el usuario ya que est en cdigo
ascci a hexadecimal o
; binario para que se puedan realizar las operaciones aritmticas con los valores reales
; Se utiliza la opcin 9 (almacenada en el registro ah) de la interrupcin 21h para desplegar la
cadena posicionada
; en la direccin que contiene dx.
operacin para desplegar la cadena
; Instruccin utilizada para desplegar una cadena de caracteres
mov ah, 09
; La instruccin toma el mensaje para solicitar el nmero 1 y lo almacena en el registro dx
lea dx, msgn1
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
bios
int 21h
; La instruccin se utiliza para desplegar la cadena posicionada en la direccin que contiene
el registro dx.
mov ah, 01
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
bios
int 21h
; La instruccin resta el numero 30 hexadecimal y resultado lo almacena el registro al para
quitarle la parte alta al
; nmero 1 ingresado por el usuario
sub al, 30h
; La instruccin mueve o almacena el valor contenido en el registro al, el cual ya se
encuentra en binario o
; hexadecimal al registro numero1 con el cual se realizaran las operaciones aritmticas
finalmente
mov numero1, al

; Solicitar ingreso del segundo nmero

; Se utiliza la opcin 9 (almacenada en el registro ah) de la interrupcin 21h para desplegar la


cadena posicionada
; en la direccin que contiene dx.
operacin para desplegar la cadena
; Instruccin utilizada para desplegar una cadena de caracteres
mov ah,09
; La instruccin toma el mensaje para solicitar el nmero 2 y lo almacena en el registro dx
lea dx, msgn1
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
bios
int 21h
; La instruccin se utiliza para desplegar la cadena posicionada en la direccin que contiene
el registro dx.
mov ah,01
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
bios
int 21h
; La instruccin resta el numero 30 hexadecimal y resultado lo almacena el registro al para
quitarle la parte alta al
; nmero 1 ingresado por el usuario
sub al, 30h
; La instruccin mueve o almacena el valor contenido en el registro al, el cual ya se
encuentra en binario o
; hexadecimal al registro numero1 con el cual se realizaran las operaciones aritmticas
finalmente
mov numero2, al

; Comenzamos las operaciones aritmticas

; suma
; La instruccin mueve o almacena el valor contenido en el registro numero1 al registro al
para almacenarlo
; temporalmente y no alterarlo pero si tomarlo
mov al, numero1

; La instruccin suma el valor del numero1 almacenado en el registro al con el valor del
numero2 y el resultado se
; almacena temporalmente en el registro al para no alterar el valor del numero2
add al, numero2
; La instruccin mueve o almacena
registro suma destinado para

el valor contenido en el registro al finalmente en el

; esto
mov suma, al
; resta
; La instruccin mueve o almacena el valor contenido en el registro numero1 al registro al
para almacenarlo
; temporalmente y no alterarlo pero si tomarlo
mov al, numero1
; La instruccin resta el valor del numero1 almacenado en el registro al con el valor del
numero2 y el resultado se
; almacena temporalmente en el registro al para no alterar el valor del numero2
sub al, numero2
; La instruccin mueve o almacena
registro resta destinado para

el valor contenido en el registro al finalmente en el

; esto
mov resta, al

; multiplicacion
; La instruccin mueve o almacena el valor contenido en el registro numero1 al registro al
para almacenarlo
; temporalmente y no alterarlo pero si tomarlo
mov al, numero1
; La instruccin multiplica el valor del numero1 almacenado en el registro al con el valor del
numero2 y el resultado
; se almacena temporalmente en el registro al para no alterar el valor del numero2
mul al, numero2
; La instruccin mueve o almacena
registro multiplicacion
; destinado para esto

el valor contenido en el registro al finalmente en el

mov multiplicacion, al

; division
; La instruccin mueve o almacena el valor contenido en el registro numero1 al registro al
para almacenarlo
; temporalmente y no alterarlo pero si tomarlo
mov al, numero1
; La instruccin divide el valor del numero1 almacenado en el registro al con el valor del
numero2 y el resultado
; se almacena temporalmente en el registro al para no alterar el valor del numero2
div al, numero2
; La instruccin mueve o almacena
registro division

el valor contenido en el registro al finalmente en el

; destinado para esto


mov division, al

; modulo
; La instruccin mueve o almacena el valor contenido en el registro numero1 al registro al
para almacenarlo
; temporalmente y no alterarlo pero si tomarlo
mov al, numero1
; La instruccin divide el valor del numero2 y el numero1 almacenado en el registro al y el
resultado
; se almacena en el registro numero2 para obtener el modulo
div numero2, ah
; La instruccin mueve o almacena
registro division

el valor contenido en el registro al finalmente en el

; destinado para esto


mov modulo, ah

; Instrucciones para mostrar los valores obtenidos de las operaciones aritmticas


; Se debe de realizar la conversin del valor obtenido en cada operacin de binario o
hexadecimal a ascci para poder mostrarla al usuario como caracteres numricos

; Instrucciones para mostrar los mensajes en pantalla con el resultado de las operaciones
suma, resta, multiplicacin
; divisin y mdulo

; Mensaje el resultado de la suma entre numero1 y numero2


; Se utiliza la opcin 9 (almacenada en el registro ah) de la interrupcin 21h para desplegar la
cadena posicionada
; en la direccin que contiene dx.
; Instruccin utilizada para desplegar una cadena de caracteres
mov ah, 09
; La instruccin toma el mensaje para mostrar el resultado de la suma y lo almacena en el
registro dx
lea dx, msg1
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h
; La instruccin mueve o almacena el valor contenido en el registro suma al registro dl o
parte baja de dx
mov dl, suma
; La instruccin le suma el valor hexadecimal 30 al registro dl para convertirlo a ASCII y el
resultado de nuevo se
; almacena en dl
add dl, 30h
; La instruccin se utiliza para desplegar la cadena posicionada en la direccin que contiene
el registro dl.
mov ah, 02
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h

; Mensaje el resultado de la resta entre numero1 y numero2


; Instruccin utilizada para desplegar una cadena de caracteres
mov ah, 09
; La instruccin toma el mensaje para mostrar el resultado de la resta y lo almacena en el
registro dx

lea dx, msg2


; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h
; La instruccin mueve o almacena el valor contenido en el registro resta al registro dl o parte
baja de dx
mov dl, resta
; La instruccin le suma el valor hexadecimal 30 al registro dl para convertirlo a ASCII y el
resultado de nuevo se
; almacena en dl
add dl, 30h
; La instruccin se utiliza para desplegar la cadena posicionada en la direccin que contiene
el registro dl.
mov ah, 02
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h

; Mensaje el resultado de la multiplicacin entre numero1 y numero2


; Instruccin utilizada para desplegar una cadena de caracteres
mov ah, 09
; La instruccin toma el mensaje para mostrar el resultado de la multiplicacion y lo almacena
en el registro dx
lea dx, msg3
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h
; La instruccin mueve o almacena el valor contenido en el registro multiplicacin al registro
dl o parte baja de dx
mov dl, multiplicacion
; La instruccin le suma el valor hexadecimal 30 al registro dl para convertirlo a ASCII y el
resultado de nuevo se
; almacena en dl
add dl, 30h

; La instruccin se utiliza para desplegar la cadena posicionada en la direccin que contiene


el registro dl.
mov ah, 02
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h

; Mensaje el resultado de la divisin entre numero1 y numero2


; Instruccin utilizada para desplegar una cadena de caracteres
mov ah, 09
; La instruccin toma el mensaje para mostrar el resultado de la divisin y lo almacena en el
registro dx
lea dx, msg4
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h
; La instruccin mueve o almacena el valor contenido en el registro division al registro dl o
parte baja de dx
mov dl, division
; La instruccin le suma el valor hexadecimal 30 al registro dl para convertirlo a ASCII y el
resultado de nuevo se
; almacena en dl
add dl, 30h
; La instruccin se utiliza para desplegar la cadena posicionada en la direccin que contiene
el registro dl.
mov ah, 02
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h

; Mensaje el resultado del mdulo entre numero1 y numero2


; Instruccin utilizada para desplegar una cadena de caracteres
mov ah, 09

; La instruccin toma el mensaje para mostrar el resultado del mdulo y lo almacena en el


registro dx
lea dx, msg5
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h
; La instruccin mueve o almacena el valor contenido en el registro modulo al registro dl o
parte baja de dx
mov dl, modulo
; La instruccin le suma el valor hexadecimal 30 al registro dl para convertirlo a ASCII y el
resultado de nuevo se
; almacena en dl
add dl, 30h
; La instruccin se utiliza para desplegar la cadena al posicionar el cursor en la direccin que
contiene el registro dl.
mov ah, 02
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h
; Instruccin utilizada para indicar finalizacin de las operaciones
mov ah, 4ch
; La instruccin se utiliza para la interrupcin 21h que indica la realizacin del comando a la
BIOS
int 21h

; La directiva ENDP indica el fin de un procedimiento y contiene el mismo nombre que el


enunciado PROC para
; permitir que el ensamblador relacione a los dos. Ya que los procedimientos deben estar por
completo dentro de
; un segmento, ENDP define el final de un procedimiento antes que ENDS defina el final de un
segmento.
begin endp

; La instruccin end marca el final del programa.


end

Vous aimerez peut-être aussi