elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ayuda con DEBUG MS-DOS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con DEBUG MS-DOS  (Leído 2,250 veces)
Ghio97

Desconectado Desconectado

Mensajes: 9


Ver Perfil
Ayuda con DEBUG MS-DOS
« en: 9 Octubre 2018, 23:24 pm »

 Hola tengo una pregunta, tengo mi codigo en debug que convierte una cadena de letras de minusculas a mayusculas pero quiero saber como seria el caso en el que si tienes una cadena con minusculas y mayusculas las convierta en su contrario, apenas estoy empezando y no me a quedado claro
aqui mi porgrama

-e ds:0200 "hola$"
-a 0100
0100:mov si, 0200
0103: mov cx,0a
0106:mov al,[si]
0108:and al,df
010a:mov dl,al
010c:mov ah,02
010e: int 21
0110:inc si
0111: loop 0106
-g 0113
HOLA




En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.391


Ver Perfil
Re: Ayuda con DEBUG MS-DOS
« Respuesta #1 en: 10 Octubre 2018, 10:56 am »

Si tomas el código de las letras mayúsculas y minúsculas, verás que la diferencia entre ellas es de 32, es decir cambia el bit 5

Sea x el valor númerico del carácter (vamos el contenido en un registro)
Luego convertir Mayúscula a minúscula (poner el bit 5:
 x = x or 32
Aplicado en bucle sobre cada letra de la palabra:
     BIENvenido, el resultado sería
     bienvenido

De Minúscula a mayúscula (borrar el bit 5):
 x = x and (255-32)
Aplicado en bucle sobre cada letra de la palabra:
     BIENvenido, el resultado sería
     BIENVENIDO

Aquí hemos usado una máscara... una máscara empieza siempre con todos sus bits a 1 (ó 0, según interese el caso), y luego desactivar el/los bits no deseados. Aplicando luego un operador AND, fuerza a que mantenga a uno los bits que en la máscara también son 1, y en cambio pone a cero los bits 1 que tuviere en la misma posición que la máscara tiene 0...
Para entenderlo mejor, considera dos papeles, donde se representan los bits con un agujero cuando son 1 y sin agujero cuando son 0 (lógicamente correctamente alineados y equidistantes, etc...), la máscara sería uno tal que donde pone 1, tiene un agujero y donde tiene 0 es opaco... detrás está tu papel, con sus bits (huecos y no huecos), el resultado será 1 cuando logres ver a través de cada 'bit'  de ambos papeles... y 0, cuando no logres ver que hay detrás de ambos papeles.

Todavía resulta de interés cambiar de mayúscula o minúscula a su contrario (sin necesidad de conocer su valor previamente):
x= x xor 32
Aplicado en bucle sobre cada letra de la palabra:
     BiEnVenIDo, el resultado sería
     bIeNvENidO


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Uso del Debug del MS-DOS « 1 2 »
Scripting
Hendrix 12 10,721 Último mensaje 11 Diciembre 2006, 15:00 pm
por Hendrix
¿ 'debug' en Windows 7 ?
ASM
Devniel 1 8,452 Último mensaje 28 Junio 2010, 10:04 am
por Eternal Idol
Debug c++
Programación C/C++
inewcl 2 2,325 Último mensaje 7 Noviembre 2016, 16:53 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines