Programación General > ASM (Ensamblador)

 Re: reset en asm

(1/2) > >>

vandyke:
Hola a todos, este es mi primer post, estoy interesado en lograr reiniciar una maquina bajo windows 95, mi profesor me dijo que debia hacerlo logrando meter en CS la direccion 0FFFFH y en IP la direccion 0000H, de modo que CS+IP = 0FFFFH.

Espero alguna ayuda, estoy usando el turbo assembler 2.01.

Super_G:
Haber no parece sencillo.
podrias provar las siguientes cosas:
1)
;;;***************************

mov ax,0FFFFh
mov es,ax
mov bx,0
jmp es:bx

;;;;**************************

2)
con la instruccion de CALL
saltar a una rutina y cuando la instrucion empile la IP y las demas alterar dentro esa rutina los valores correspondientes luego con la instruccion RET esos valores los actualizara.

3) editar un ejecutable con Turbo Debag y cambiar los valores de CS e IP.


no tengo idea si eso funcione pero me parece que no deberia reeiniciar, pero podria tratarse de un error de windonws me pregunto si funcionara en win98?

vandyke:
Me he interesado por la segunda alternativa que me has dado. El problema esta en que me dices que debo modificar los valores correspodientes a CS e IP dentro de la rutina?
Podias darme mas o menos una idea de como hacer esto?

Super_G:
Aqui tienes informacion sobre las instrucciones CALL y RET:

http://studies.ac.upc.es/FIB/EC1/materi ... utines.pdf

en las paginas 9 y 10, esta lo que necesitas

Astor:
El problema es que el DOS sobre el cual ejecutes tu programa va a correr en modo virtual, no en modo real, por lo que me imgino que al intentar saltar a una dirección fuera de tu espacio de direcciones vas a obtener una excepción 13.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa