es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué logra jmp $?

Estoy ocupado siguiendo un tutorial sobre cómo construir un cargador de arranque/sistema operativo simple para entender mejor el lenguaje ensamblador, pero no puedo entender lo que logra esto:


jmp $
times 510-($-$$)
db 0x55, 0xaa

Entiendo lo que hacen las dos últimas líneas, pero ¿qué hace jmp $? Según mi conocimiento actual, significa ir a la dirección de memoria actual, pero la dirección de memoria actual contiene la instrucción jmp, ¿así que no saltaría a sí mismo una y otra vez y nunca ejecutaría el código inferior?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La instrucción jmp $ es una forma de crear un bucle infinito en lenguaje ensamblador. $ representa la dirección actual, por lo que cuando el código llega a esa línea, salta a sí misma, creando efectivamente un bucle infinito. Sin embargo, el código de arranque está diseñado para dejar de ejecutar después de la instrucción jmp $, porque los siguientes 510 bytes están llenos de ceros, y los dos bytes 0x55 y 0xaa marcan el final del sector de arranque. Por lo tanto, la instrucción jmp $ se utiliza solo para mantener ocupada la CPU ejecutando instrucciones hasta que se alcance el final del sector de arranque.

Comments are closed.