Simulacion
Enviado por zerick • 4 de Septiembre de 2014 • 2.129 Palabras (9 Páginas) • 217 Visitas
;******************************************************************************
; Nombre del programa: COMPARA.ASM
; Objetivo : Captura dos cadenas y las compara, reportando si
; son iguales o no. La cantidad de caracteres a
; comparar esta dada por los caracteres realmente
; leidos de la cadena 1. Es decir, para que se
; consideren iguales, las dos cadenas deben ser de
; la misma longitud. El programa distingue entre
;mayusculas y minusculas. La "A" es diferente de "a".
;******************************************************************************
; COMANDO DE ENSAMBLE : Masm COMPARA;
; COMANDO DE ENLACE : Link COMPARA;
; COMANDO DE EJECUCION : COMPARA [Enter]
;******************************************************************************
;
; NOTA : El procedimiento (objetivo) es con fines educativos y NO de
;optimizacion o eficiencia. Por favor, NO SE DESESPERE y estudielo.
;******************************************************************************
;------------------------------------------------------------------------------
; Define el modelo de memoria
;------------------------------------------------------------------------------
.MODEL SMALL
;------------------------------------------------------------------------------
; Define el area de datos
;------------------------------------------------------------------------------
.Data
Cadena1 DB 15,0,15 DUP(?) ; Variable que almacena cadena 1
Cadena2 DB 15,0,15 DUP(?) ; Variable que almacena cadena 2
Mensaje DB 'Bienvenidos a Compara. Programa ejemplo que compara'
DB ' dos cadenas y reporta',13,10
DB 'si son iguales o no. Para terminar digite FIN en'
DB 'mayusculas.'
DB 13,10,'$'
Error DB 7,7,7,13,10,'ERROR : cadenas son DIFERENTES !!!.'
DB 13,10,13,10,'$'
Error1 DB 7,7,7,13,10,'ERROR : cadena no puede ser NULA !!!.'
DB 13,10,13,10,'$'
Final DB 'FIN'
TodoBIEN DB 7,7,7,13,10,'Cadenas son IGUALES.'
DB 13,10,13,10,'$'
CadUnoM DB 13,10,13,10,'Digite primera CADENA: $'
CadDosM DB 13,10,13,10,'Digite Segunda CADENA: $'
;------------------------------------------------------------------------------
; Define el area del Stack
;------------------------------------------------------------------------------
.STACK
;------------------------------------------------------------------------------
; Define el area de codigo
;------------------------------------------------------------------------------
.CODE ; Area de codigo
Empieza: ; Etiqueta de comienzo de programa
;------------------------------------------------------------------------------
; BORRA LA PANTALLA CAMBIANDO LA MODALIDAD DE VIDEO. ESTA FORMA DE BORRAR
; LA PANTALLA ES MUY PECULIAR Y ES CONSIDERADA COMO UN "TRUCO". SE BASA EN
; EL HECHO DE QUE AL CAMBIAR LA MODALIDAD DE VIDEO, EL PROPIO BIOS
; (HARDWARE) BORRA LA PANTALLA POR NOSOTROS. ES UN METODO BURDO PERO MUY
; EFICIENTE.
;------------------------------------------------------------------------------
Mov Ah, 0Fh ; Obtiene modalidad de video actual
Int 10h
Mov Ah, 0 ; Cambia a la modalidad de video que se obtuvo
Int 10h
mov Ax,@Data ; Inicializa DS con la direccion de @Data
mov Ds, Ax
mov Dx, Offset Mensaje ; Despliega el mensaje de bienvenida
Mov Ah, 9
Int 21h
Push Ds
Pop Es ; ES = DS
;------------------------------------------------------------------------------
; SE CAPTURAN LAS CADENAS Y SE GUARDAN EN SUS RESPECTIVAS VARIABLES PARA
; PODER TRABAJAR CON ELLAS MAS ADELANTE. LA CAPTURA SE BASA EN LA FUNCION
; 09 DE LA INT 21H. DICHA FUNCION ESTABLECE QUE EL REGISTRO AH CONTENGA 09
; Y EL REGISTRO PAR DS:DX APUNTE A LA DIRECCION DE LA VARIABLE QUE
; ALMACENARA LA ESTRUCTURA DEL BUFFER. ESTE DEBE DE ESTAR CONSTRUIDO DE LA
; SIGUIENTE MANERA:
;
; BYTE 1 = CANTIDAD DE BYTES A LEER
; BYTE 2 = (LLENADO POR MS-DOS) ES LA CANTIDAD DE BYTES REALMENTE
; LEIDOS.
; BYTE 3 = BUFFER DONDE SE ALMACENA EL RESULTADO. DEBE ENCONTRARSE
; INICIALIZADO CON LA MISMA CANTIDAD DE BYTES ESPECIFICADOS
; POR EL BYTE 1.
;
; LAS CANTIDADES CAPTURADAS REPRESENTAN UNA CADENA QUE ES NECESARIO
; CONVERTIR A BINARIO ANTES DE PODER OPERAR SOBRE ELLA. MAS ADELANTE
; QUEDARA CLARO LO ANTERIOR.
;------------------------------------------------------------------------------
...