Programación General > ASM (Ensamblador)
Problemas Con El Salto A Modo Protegido
Enko:
Sigues cometiendo un ERROR.
--- Código: Text --- lgdt [selector_tabla_descriptores] a la instruccion lgdt no se le pasa de parametro el puntero al selector nulo!!!!!!
y adem'as, vos estas pasando el contenido del selector nulo, o sea 0.
se le pasa como parametro un descriptor que apunta a la tabla genereral de descriptores. En cuanto que lgdt carga un registro de 48 bit. Fijate en el codigo la etiqueta 'gdtr:'
--- Código: Text --- global_descriptor_table:null_descriptor: dw 0x0000, 0x0000, 0x0000, 0x0000system_code: dw 0xFFFF, 0x0000, 0x9A00, 0x00CFsystem_data: dw 0xFFFF, 0x0000, 0x9200, 0x00CFglobal_descriptor_end: gdtr: ;ATENCION ACA ESTA ES LO QUE TE FALTA dw global_descriptor_end - global_descriptor_table -1 dd 0x7C00 + null_descriptor y luego, harias >
--- Código: Text --- lgdt [gdtr]
sharek:
Perdón?
fijate bien en mi código:
--- Código: Text --- (etc....)pasa_a_mode_protegit: cli lgdt [selector_taula_descriptors] mov EAX, CR0 or AL, 1 mov CR0, EAX jmp 08h:07C00h + mode_protegit(etc....)selector_taula_descriptors: dw taula_descriptors.fi - taula_descriptors -1 dd 07C00h + taula_descriptors taula_descriptors: ; taula de descriptors de segments.nul: ; Segment nul dw 0 ; Limit L0-L15 dw 0 ; base B0-B15(etc....)
¿donde ves que no lo use?
lgdt [selector_taula_descriptors]
y luego, mas abajo tengo
selector_taula_descriptors:
dw taula_descriptors.fi - taula_descriptors -1
dd 07C00h + taula_descriptors
y la tabla debajo
Creo que es todo correcto... ¿me estoy liando yo o te estás liando tu?
Saludos (y gracias)
Enko:
Ahora si está bien, fijate que el que pasaste antes era:
--- Código: Text --- selector_tabla_descriptores: dw selector_tabla_descriptores.fin - selector_tabla_descriptores -1 dd 07C00h + selector_tabla_descriptores selector_tabla_descriptores:.nulo: ; Segmento nulo dw 0 ; Limit L0-L15 dw 0 ; base B0-B15 db 0 ; base B16-B23 usabas la misma etiqueta 2 veces que es lo que me hizo confundir.
sharek:
CULPA MIA!
mil perdones
--- Código: Text ---selector_tabla_descriptores: dw selector_tabla_descriptores.fin - selector_tabla_descriptores -1 dd 07C00h + selector_tabla_descriptores selector_tabla_descriptores:
Tengo el código (y las etiquetas) en otro idioma, y al traducirlo para ponerlo en el foro para que quedase mas claro, LA CAGUE!
perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon, perdon,
una y MIL VECES
sharek:
en cuanto al código que genera errores misteriosos en bochs... ¿Alguien ve alguna errata?
no entiendo que falla y es realmente decepcionante
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa