You are on page 1of 8

.

model small ;modelo de memoria

.stack ; Definicion del segmento de pila

.data ; Comienzo del segmento de dato

n1 db 0 ;variable

n2 db 0 ;variable

n3 db 0 ;variable

n4 db 0 ;variable

n5 db 0 ;variable

n6 db 0 ;variable

n7 db 0 ;variable

n8 db 0 ;variable

n9 db 0 ;variable

n10 db 0 ;variable

n11 db 0 ;variable

cen db 0

dece db 0

uni db 0

msg0 db 10,13,7,'Ingresa un numero: ','$'


;variables de ingreso

msg1 db 10,13,7,'DESPLAZAMIENTO A LA IZQUIERDA SHL: ',' $ ' ;variables de salida

msg2 db 10,13,7,'DESPLAZAMIENTO A LA DERECHA SHR: ',' $ ' ;variables de salida

msg3 db 10,13,7,'DESPLAZAMIENTO A LA DERECHA SAR: ',' $ ' ;variables de salida

msg4 db 10,13,7,'DESPLAZAMIENTO A LA IZQUIERDA SAL: ',' $ ' ;variables de


salida

msg5 db 10,13,7,'ROTACION HACIA LA IZQUIERDA ROL: ',' $ ' ;variables de


salida

msg6 db 10,13,7,'ROTACION HACIA LA DERECHA ROR: ',' $ ' ;variables de


salida

msg7 db 10,13,7,'ROTACION HACIA LA DERECHA SIN ACARREO RCR: ',' $ ' ;variables de
salida

msg8 db 10,13,7,'ROTACION HACIA LA IZQUIERDA SIN ACARREO RCL: ',' $ ' ;variables de
salida
msg9 db 10,13,7,'ROTACION HACIA LA DERECHA CON ACARREO RCR: ',' $ '
;variables de salida

msg10 db 10,13,7,'ROTACION HACIA LA IZQUIERDA CON ACARREO RCL: ',' $ ' ;variables de
salida

.code

inicio:

mov ax,@data ; leyendo los valores de las variables

mov ds, ax ; muevo el dato almacenado en ax y lo almaceno en el registro en ds

mov ah, 09h ; realiza la peticion de lectura

lea dx, msg0 ; lee el valor en msg0 y lo almacena en la variable dx

int 21h ; pausa o interrupcion

mov ah,01h ; peticion para caracter leido en pantalla

int 21h ; pausa o interrupcion

sub al, 30h ; Obtencion de valor real

mov n1,al ; almacenar el valor en n1

;inicio del proceso de SHL

mov al,n1 ; asigno la variable n1 a la variable al

SHL al, 1 ; realiza un desplazamiento hacia la izquierda

mov n2,al ; asigna el numero desplazado en la variable n2

;finalizar SHL

;inicio del proceso de SHR

mov al,n1 ; asigno la variable n1 a la variable al

SHR al, 1 ; realiza un desplazamiento hacia la derecha

mov n3,al ; asigna el numero desplazado en la variable n3

;finalizar SHR
;inicio del proceso de SAR

mov al,n1 ; asigno la variable n1 a la variable al

SAR al, 1 ; realiza un desplazamiento hacia la derecha

mov n4,al ; asigna el numero desplazado en la variable n4

;finalizar SAR

;inicio del proceso de SAL

mov al,n1 ; asigno la variable n1 a la variable al

SAL al, 1 ; realiza un desplazamiento hacia la izquierda

mov n5,al ; asigna el numero desplazado en la variable n5

;finalizar SAL

;inicio del proceso de ROL

mov al,n1 ; asigno la variable n1 a la variable al

ROL al, 1 ; realiza una rotacion hacia la izquierda

mov n6,al ; asigna el numero desplazado en la variable n6

;finalizar ROL

;inicio del proceso de ROR

mov al,n1 ; asigno la variable n1 a la variable al

ROR al, 1 ; realiza una rotacion hacia la derecha

mov n7,al ; asigna el numero desplazado en la variable n7

;finalizar ROR

;inicio del proceso de RCR

Clc ; quitar bit de acarreo

mov al,n1 ; asigno la variable n1 a la variable al

RCR al, 1 ; realiza una rotacion hacia la derecha

mov n8,al ; asigna el numero desplazado en la variable n8

;finalizar RCR
;inicio del proceso de RCL

Clc ; poner el bit de acarreo

mov al,n1 ; asigno la variable n1 a la variable al

RCL al, 1 ; realiza una rotacion hacia la izquierda

mov n9,al ; asigna el numero desplazado en la variable n9

;finalizar RCL

;inicio del proceso de RCR CON ACARREO

Stc ; Poner bit de acarreo

mov al,n1 ; asigno la variable n1 a la variable al

RCR al, 1 ; realiza una rotacion hacia la derecha

mov n10,al ; asigna el numero desplazado en la variable n8

;finalizar RCR

;inicio del proceso de RCL CON acarreo

Stc ; poner el bit de acarreo

mov al,n1 ; asigno la variable n1 a la variable al

RCL al, 1 ; realiza una rotacion hacia la izquierda

mov n11,al ; asigna el numero desplazado en la variable n9

;finalizar RCL

;impresiones

;SHL

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg1 ;lectura del valor ingresado en msg1

int 21h ;interrupcion o pausa

mov dl,n2 ;el resultado almacenado en n2 almacenamos en la variable dl

add dl,30h ;Agrego 30 obtiene el caracter


mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;pausa o interrupcion

;end

; SHR

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg2 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov dl,n3 ;el resultado almacenado en n3 almacenamos en la variable dl

add dl,30h ;Agrego 30 obtiene el caracter

mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;interrupcion o pausa

;end

;SAR

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg3 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov dl,n4 ;el resultado almacenado en n4 almacenamos en la variable dl

add dl,30h ;Agrego 30 obtiene el caracter

mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;interrupcion o pausa

;END

;SAL

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg4 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov dl,n5 ;el resultado almacenado en n5 almacenamos en la variable dl

add dl,30h ;Agrego 30 obtiene el caracter

mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;interrupcion o pausa

;END

;ROL
mov ah,09 ;Permiso para realizar la lectura

lea dx,msg5 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov dl,n6 ;el resultado almacenado en n6 almacenamos en la variable dl

add dl,30h ;Agrego 30 obtiene el caracter

mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;interrupcion o pausa

;END

;ROR

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg6 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov dl,n7 ;el resultado almacenado en n7 almacenamos en la variable dl

add dl,30h ;Agrego 30 obtiene el caracter

mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;interrupcion o pausa

;END

;RCR

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg7 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov dl,n8 ;el resultado almacenado en n8 almacenamos en la variable dl

add dl,30h ;Agrego 30 obtiene el caracter

mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;interrupcion o pausa

;END

;RCL

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg8 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov dl,n9 ;el resultado almacenado en n9 almacenamos en la variable dl


add dl,30h ;Agrego 30 obtiene el caracter

mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;interrupcion o pausa

;END

;RCR

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg9 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov al,n10 ; asigno un valor de 3 digitos en decimal al registro AL

aam ;ajusta el valor en AL por: AH=23 Y AL=4

mov uni,al ; Respaldo 4 en unidades

mov al,ah ;muevo lo que tengo en AH a AL para poder volver a separar los números

aam ; separa lo qe hay en AL por: AH=2 Y AL=3

mov cen,ah ;respaldo las centenas en cen en este caso 2

mov dece,al ;respaldo las decenas en dec, en este caso 3

;Imprimos los tres valores empezando por centenas, decenas y unidades.

mov ah,02h

mov dl,cen

add dl,30h ; se suma 30h a dl para imprimir el numero real.

int 21h

mov dl,dece
add dl,30h

int 21h

mov dl,uni

add dl,30h

int 21h

;END

;RCL

mov ah,09 ;Permiso para realizar la lectura

lea dx,msg10 ;lectura del valor ingresado en msg

int 21h ;interrupcion o pausa

mov dl,n11 ;el resultado almacenado en n11 almacenamos en la variable dl

add dl,30h ;Agrego 30 obtiene el caracter

mov ah,02 ;Funcion para imprimir un carácter en pantalla

int 21h ;interrupcion o pausa

;END

mov ah,4ch ;Mueve el valor 4C00h al registro AX para terminar la ejecuciOn con la opcionn
4C de la interrupcion 21h.

int 21h ;Llamada a la interrupcion del DOS 21h

end inicio ;finalizar

You might also like