Duda sobre bootloader en paso a modo protegido

Iniciado por armizh, 11 Diciembre 2011, 16:08 PM

0 Miembros y 4 Visitantes están viendo este tema.

armizh

Bueno la verdad, la duda no es sobre el paso a modo protegido, sino que no estoy seguro si esta funcionando como deberia. He buscado muchisima información pero nada ayuda a salir de mi duda.
Ahora explicando, pues el bootloader es bastante simple, arranca el sistema, muestra un mensaje, luego pasa a modo protegido y muestra otro mensaje, el problema es que el segundo mensaje no se imprime en la pantalla al 100 %. Cree un blog en el que voy publicando cualquier avance, y ahi esta mi duda.
Por cierto, el código está publicado y recién estoy empezando, la publicación del blog es INNECESARIA. Esto lo estoy haciendo para aprender y para que otras personas se animen a aprender.

Código (asm) [Seleccionar]
   ;----------------boot.asm------------------;
   [BITS 16]
   [ORG 0x7c00]

   jmp main

   bootmesg db "Loading... please wait... "
   pm_mesg  db "Switching to protected mode. "

   init:
      mov ax, cs
      mov ds, ax
      mov es, ax
      ret

   print_mesg :
      mov ah,0x13
      mov al,0x00
      mov bx,0x0007
      mov cx,0x20
      mov dx,0x0000
      int 0x10
      ret

   clrscr :
      mov ax,0x0600
      mov cx,0x0000
      mov dx,0x174f
      mov bh,0
      int 0x10
      ret

   switch_protected:
      cli
      mov eax, cr0
      or eax, 1
      mov cr0, eax
      jmp 0x08:protected_main

   main:
      call init
      call clrscr
      mov bp,bootmesg
      call print_mesg
      call switch_protected
      jmp main

   [BITS 32]
   protected_main:
      mov bp,pm_mesg
      call print_mesg
      jmp protected_main

   times 510-($-$$) db 0
   db 0x55
   db 0xAA
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Eternal Idol

Escribe solo en modo real y escribe los 32 caracteres que le mandas escribir ...

CX = number of characters in string.

http://www.ctyme.com/intr/rb-0210.htm

Mejor termina las cadenas con un 0 terminador.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

armizh

Cita de: Eternal Idol en 11 Diciembre 2011, 16:23 PM
Escribe solo en modo real y escribe los 32 caracteres que le mandas escribir ...

CX = number of characters in string.


Ohhh jeje, siertamente fue un error estupido, debi haber revisado bien esa página anoche, o tal vez estaria medio dormido ;D
Pero, ahora me surge una nueva duda, realmente escribe solo en modo real y ya que pase a modo protegido simplemente no escribe lo segundo... ¿como se escribe en pantalla en modo protegido? Graciaas
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Eternal Idol

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

armizh

Perdon por tantas preguntas tal vez estupidas, pero como se hace eso?
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Eternal Idol

¿Leiste el enlace que deje? ¿Tenes alguna duda concreta?
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

armizh

Cita de: Eternal Idol en 11 Diciembre 2011, 20:18 PM
¿Leiste el enlace que deje? ¿Tenes alguna duda concreta?

Bueno, se supone que el orden es
0x000b8000: 'H', colourforH
cambio 'colourforH' por 0x07 que es lightgrey-on-black
pero a la hora de compilar me aparece 'error: label or instruction expected at start of line'
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Eternal Idol

Eso no es codigo, lee el enlace completo de nuevo, sobre el final tenes un ejemplo:
Código (asm) [Seleccionar]
mov [0xb8000], 0x07690748

Igual sin saber assembly mucho mas que copiar y pegar no vas a estar haciendo la verdad ...
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

armizh

Cita de: Eternal Idol en 11 Diciembre 2011, 21:04 PM
Eso no es codigo, lee el enlace completo de nuevo, sobre el final tenes un ejemplo:
Código (asm) [Seleccionar]
mov [0xb8000], 0x07690748

Igual sin saber assembly mucho mas que copiar y pegar no vas a estar haciendo la verdad ...

Siento defraudarte por dos razones: primero no soy ningun genio ni erudito del asm, estoy aprendiendo lo basico como para poder pasar ya a C o C++ o cualquier lenguaje para crear un kernel, y segundo, esto es una de las pocas cosas que he estado haciendo con copiar y pegar... Creo que me faltab algo: aun con el ejemplo no compila 'error: operation size not specified'
Realmente creo que hay veces en que nos gustaria que nos explicaran algo, especialmente a los que estamos comenzando. Gracias de todos modos
Visita mi blog:
http://armizh.10h.us/
Fnx, fork de FreeNOS:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Fnx
Hamster, Entorno Integrado de Desarrollo C/C++:
Código (sh) [Seleccionar]
git clone https://github.com/armizh/Hamster

Eternal Idol

Convengamos que tomar eso por codigo no es precisamente ser un genio o erudito sino mas bien no tener ni la mas minima idea. Si estas empezando lo que tenes que hacer es leer los hilos que estan fijados arriba en el subforo y mas que nada comprarte un libro de ensamblador. Asi al menos iras comprendiendo lo que estas haciendo y te daras cuenta tambien que muchas veces alguien que sabe contar quiere que le enseñen raices cubicas personas que no son maestros ni cobran por responder. Primero aprende a sumar, restar, multiplicar y dividir.

PD. Proba con mov dword ptr [], yo trabajo con MASM y no con NASM.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón