SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: davolo en Martes 31 de Octubre de 2006, 23:50

Título: Una Explicacion Pliss
Publicado por: davolo en Martes 31 de Octubre de 2006, 23:50
:D
hola  tal speor pùeda alguine ayudarme , no entiendo como con esa pekeña rutina puedo salir de cualkier programa en asm presionandop la tecla esc , si alguien me lo pudiera explicar o pasar un link con alguna onformacion sobrte este tema se lo agradeceria
saludos

MOV     AH, 1
INT     16h
JZ      Sigue
MOV     AH, 0
INT     16H

;si presionas eSc finaliza el programa:
CMP     AL, 1BH
JNZ     Sigue
INT     19h


 :lol:
Título: Re: Una Explicacion Pliss
Publicado por: Toph en Miércoles 1 de Noviembre de 2006, 00:46
Cita de: "davolo"
:D
hola  tal speor pùeda alguine ayudarme , no entiendo como con esa pekeña rutina puedo salir de cualkier programa en asm presionandop la tecla esc , si alguien me lo pudiera explicar o pasar un link con alguna onformacion sobrte este tema se lo agradeceria
saludos

Bueno primero que todo, en esta parte lo que hace es:
Citar
MOV     AH, 1
INT     16h
JZ      Sigue
leer el estado del teclado, si no se ha presionado ninguna tecla la bandera ZF esta puesta por lo que se hace esa comparacion JZ,si la bandera ZF esta puesta salta a sigue

Citar
MOV     AH, 0
INT     16H

pero si no esta puesta es que hay una tecla por lo que luego se lee con la int 16H y AH=0, la tecla presionada queda en AL
Citar
CMP     AL, 1BH
JNZ     Sigue
INT     19h
luego se hace una comparacion si AL = 1B, 1B es el codigo ascii hexadecimal de la tecla ESC (checa Tabla Ascii (http://ascii.cl/es/)), si no es igual salta a sigue, pero si es igual ejecuta la instruccion 19h que lo que hace es activar la rutina de arranque de la computadora, nunca habia visto que se podia finalizar un programa asi  :blink: , generalmente se finaliza con AH=0 e INT 21H, pero bueno


saludos  :hola:
Título: Re: Una Explicacion Pliss
Publicado por: Eternal Idol en Miércoles 1 de Noviembre de 2006, 09:02
MASM style:
Código: Text
  1.  
  2. Codigo segment 'code'
  3. org 100h
  4. main:
  5. int 19h
  6. Codigo ends
  7. end main
  8.  
  9.  

Un ejecutable VALIDO (para MS-DOS obviamente) de 2 bytes  B)

"... In 16 bit code MASM can produce a 2 byte com file (int 19h) ..."
http://www.masm32.com/masmmyth.htm (http://www.masm32.com/masmmyth.htm)
Título: Re: Una Explicacion Pliss
Publicado por: davolo en Miércoles 1 de Noviembre de 2006, 15:20
:D muchas gracias Tania_D y Eternal Idol, ya me kedo muy claro , creo q podria cambiar lo siguiente verdad

int 19 =  mov ah, 4ch
              int 21h

y debera funcionarme , voy a probar gracias y saludos
Título: Re: Una Explicacion Pliss
Publicado por: Eternal Idol en Miércoles 1 de Noviembre de 2006, 15:29
Cita de: "davolo"
:D muchas gracias Tania_D y Eternal Idol, ya me kedo muy claro , creo q podria cambiar lo siguiente verdad

int 19 =  mov ah, 4ch
              int 21h

y debera funcionarme , voy a probar gracias y saludos
Efectivamente, tambien te funcionaria y es lo mas "actual". Con ah a 0 tambien funciona.
Título: Re: Una Explicacion Pliss
Publicado por: davolo en Jueves 2 de Noviembre de 2006, 01:40
okis gracias  brothers :D