Busqueda Ensamblador
; Cadenas a comparar
Cadena1 db 'Comparación de cadenas',0
; dependiendo de que esté o no
; definido el símbolo IGUALES
%ifdef IGUALES
Cadena2 db 'Comparación de cadenas',0%else
Cadena2 db 'Comparación de dos cadenas', 0
%endif
; Mensajes a mostrar
General db ' caracteres comparados.$'
SonIguales db 'Las cadenas son iguales. $'
NoSonIguales db 'Las cadenasno son iguales. $'
segment Pila stack
resw 512
FinPila:
; Segmento de código
segment Codigo
..start:
; Preparamos la pila
movax, Pila
mov ss, ax
mov sp, FinPila
; DS y Es apunta al segmento de datos
mov ax, Datos
mov ds, ax
mov es, ax
;primera cadena
mov di, Cadena1
; calculamos la longitud
call Longitud
; la guardamos en DX
mov dx, cx
; segunda cadena
movdi, Cadena2
; calculamos la longitud
call Longitud
; vemos si la longitud de
; la primera cadena es
; menor que la de la segunda
cmp dx,cx
; de no ser así saltamos
; al proceso de comparación
ja Compara
; en caso contrario
; intercambiamos DX y CX
; paraquedarnos en CX con
; la longitud más corta
xchg cx, dx
Compara:
push cx ; guardamos la longitud
; apuntamos las cadenas a comparar
mov si,Cadena1
mov di, Cadena2
cld ; incrementar
repe cmpsb ; comparamos
; ¿se ha comparado entera?
or cx, cx
jz Iguales; saltar
; en caso contrario apuntar
; DX al mensaje de desigualdad
mov dx, NoSonIguales
; y saltar al final del proceso
jmp...
Regístrate para leer el documento completo.