Programación General > ASM (Ensamblador)
Re: reset en asm
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
[#] Página Siguiente
Ir a la versión completa