phantom-84 писал(а):
scuter писал(а):
тут показано как войти в режим Real Mode только вот не понял эту фразу (16-bit Protected Mode data selector)
Вы бы сразу поясняли, что это не вы написали. Селектор 28h должен выбирать соответствующий дескриптор.
писал его я только где то ошибся( может быть)
phantom-84 писал(а):
scuter писал(а):
pavia писал(а):
ага в boot он не помещается, и в добавок не работает.
Нефиг это тащить в "boot".
а куда ещё это тащить, кроме загрузочного фрагмента у меня ничего не запускается.
phantom-84 писал(а):
Дескрипторы 16-разрядных сегментов:
Код:
DF_DATA equ 10h
DF_CODE equ 18h
DF_DUALACTION equ 2
set CODE16,$-GDT
desc 0F8000h,0FFFFh,DF_CODE+DF_DUALACTION
set DATA16,$-GDT
desc 0F8000h,0FFFFh,DF_DATA+DF_DUALACTION
База (0F8000h) может быть любой. Еще не забудь флаг DF_PRESENT - у меня он добавляется дефолтом.
а вот set и desc это какие то макросы?
и как выглядит флаговая часть
вот так?
Код:
code dw 0000111110011010b
data dw 0000111110010010b
пипец уже TSS_16 даже гружу но переходить в 16-битный режим не хочет
Код:
use16
cli ; Disable interrupts.
; Need 16-bit Protected Mode GDT entries!
mov ax, 30h ; 16-bit Protected Mode data selector.
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
; Disable paging (we need everything to be 1:1 mapped).
mov eax, cr0
and eax, 0x7FFFFFFe ; Disable paging bit & enable 16-bit pmode.
mov cr0, eax
mov ax, 0
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0x700
sti
MOV BX, 7E00h
MOV AX, 0201h ; читать 1 сектор с диска
MOV DL, 0 ; читать с первого диска
MOV DH, 0 ; стартовый номер головки
MOV CX, 3 ; стартовый сектор с цилиндром
INT 13h
Код:
CODE2 TSS_16, (TSS_16_end-TSS_16), 0000111110000001b
Код:
TSS_16:
.back_link dw 0
.SP0 dw 0
.SS0 dw 0FFFFh
.SP1 dw 0
.SS1 dw 0FFFFh
.SP2 dw 0
.SS2 dw 0FFFFh
.CR3 dw 0
.IP dw GoRMode
.EFLAGS dw 0
.AX dw 0
.CX dw 0
.DX dw 0
.BX dw 0
.SP dw 0
.BP dw 0
.SI dw 0
.DI dw 0
.ES dw 0
.CS dw 0
.SS dw 0
.DS dw 0
.FS dw 0
.GS dw 0
.LDT dw 0
.offset_andT dw 0
.IOPB dw 0
TSS_16_end: