Título: [NASM] (Duda) El registro DS no funciona como debería Publicado por: class_OpenGL en 25 Agosto 2016, 03:07 am Hola, muy buenas. Estaba viendo cómo se hacía una unidad de arranque desde ensamblador (NASM), pero tengo problemas con el registro DS. Muestro este código para mostrar mi duda:
Código
Es un código sencillito, pero funciona. El problema está en que si hago que el registro DS valga 0x07C0, el ordenador no arranca con esta unidad de arranque, pero si calculo manualmente la dirección de la cadena de texto y hago que DS valga 0, el ordenador si que arranca con esta unidad. Código con el que funciona: Código
Código con el que no funciona: Código
O hay algo que se me escapa, o es muy extraño todo... Gracias de antemano! Vale, me he dado cuenta de que xor limpia parte/todo el registro FLAGS He obtenido el registro con LAHF. Antes de usar xor, LAHF retornaba, en binario, 01000110, y después de usar xor, LAHF retornaba 00000000. He intentado hacer lo siguiente, pero sigue sin funcionar: Código
Pero con este código si que funciona (algo hace XOR de lo que no me doy cuenta...): Código
Espero que me puedan ayudar :D Título: Re: [NASM] (Duda) El registro DS no funciona como debería Publicado por: Yuki en 30 Septiembre 2016, 08:40 am Em, bastante interesante lo que estas haciendo, dejame ver si encontre el problema.
Código
Deberia ser: Código
Ví que cambiaste 7C00h por por 0x07C0, No son lo mismo! Y creo que podes achicarlo un poquito mas: Código
Saludos! Título: Re: [NASM] (Duda) El registro DS no funciona como debería Publicado por: class_OpenGL en 1 Octubre 2016, 12:08 pm Cambié 7C00h por 0x07C0 para el registro DS porque el cálculo que se realiza es el siguiente:
Dirección efectiva = 0x10 * DS + SI, es decir, 0x10 * 0x07C0 + SI, lo que sería 0x7C00 + SI. |