Помогите примером кода для загрузчика и MBR

Тема в разделе "WASM.OS.DEVEL", создана пользователем Antolflash, 4 ноя 2009.

  1. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    BIOS'у фиолетово есть таблица разделов или нет.
    MBR в память будет загружен и на него будет передано управление.
    Что дальше происходит - BIOS не интересует.
     
  2. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    261
    cppasm
    Не не не не не
    Грузится не всеми BIOS ами
    У меня h2o bios отказался загружать не просто без таблицы разделов, а с таблицей, но с кодом раздела 00h.
    Еще не помню какой биос отказывался без 80h в таблице загружать.
    Да, есть нормальные биосы которые и без таблицы загружают, но лучше перестраховаться
     
  3. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Согласно Bios Boot Specification должно загружаться.
    Единственное требование - наличие в конце сигнатуры 0x55 0xAA
    Остальное - это уже самодеятельность писателей BIOS.
     
  4. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Внесу свою толику.
    http://svn.xskernel.org/viewvc/xskernel-current/bootload/ - c поддержкой ФС FAT16 и FAT12
     
  5. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Как-то вы резко перешли от MBR к "поддержке ФС FAT16 и FAT32". А судя по репликам, аФтАр топика не понимает даже разницы между MBR и первичным загрузчиком тома (раздела). Автору хочу посоветовать действительно начать со сменных/съемных носителей, а именно с флоппика или с флешки, тем более что код MBR для флешки может быть полностью идентичен коду для харда.
     
  6. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Antolflash, респект, я пользуюсь теми же инструментами: HxD, fasm.
     
  7. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    С флешки лучше не надо :)
    Там в зависимости от разметки может быть MBR с одним разделом, а может быть сразу бутсектор как на флопиках.
    Лучше с флопика начинать. Хоть бы виртуального под эмулятором.
    Для таких задачь BOCHS с отладчиком очень подходит.
     
  8. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Я про написание именно MBR. А вообще чтобы флешка рассматривалась как хард, достаточно установить соотв. опцию в BIOS Setup. Но то что всегда проще и надежнее начинать с эмуляторов и образов дисков, это точно. Тем более, аФтАру топика так никто и не сказал, что тек. параметры таблицы разделов или BPB лучше поначалу вообще не трогать, а заменять в бутсекторах лишь программный код.
     
  9. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Ну и разметка флешки естественно должна быть соответствующей :~)
     
  10. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Phantom_84
    Ну так он же утверждает, что с теорией знаком. Хотя мне сдаётся, что это далеко не так, и он действительно не понимает, что в каких секторах находится, для чего служит и что делает.
     
  11. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Вот, от неча делать отдизасмил MBR для Винды-7 (у Вислы такой же). Система установлена на диске ёмкостью 160 Гбайт с единственным разделом.

    Код (Text):
    1. seg000:7C00      xor    ax, ax     ; Стек будет располагаться перед кодом MBR (вершина 0000:7C00)
    2. seg000:7C02      mov    ss, ax
    3. seg000:7C04      mov    sp, 7C00h
    4. seg000:7C07      mov    es, ax     ; Сам код MBR будет целиком переслан в область с адреса 0000:0600
    5. seg000:7C09      mov    ds, ax
    6. seg000:7C0B      mov    si, 7C00h
    7. seg000:7C0E      mov    di, 600h
    8. seg000:7C11      mov    cx, 200h
    9. seg000:7C14      cld
    10. seg000:7C15      rep    movsb
    11. seg000:7C17      push   ax         ; Переход на код по его новому местоположению (0000:061C)
    12. seg000:7C18      push   61Ch
    13. seg000:7C1B      retf
    14. seg000:7C1C ; ---------------------------------------------------------------------------
    15. seg000:7C1C      sti               ; Отсюда продолжается работа кода MBR
    16. seg000:7C1D      mov     cx, 4     ; Поиск активного раздела
    17. seg000:7C20      mov     bp, 7BEh
    18. seg000:7C23
    19. seg000:7C23 loc_7C23:
    20. seg000:7C23      cmp     byte ptr [bp+0], 0
    21. seg000:7C27      jl      short ActiveFound
    22. seg000:7C29      jnz     InvalidPartitionTable
    23. seg000:7C2D      add     bp, 10h
    24. seg000:7C30      loop    loc_7C23
    25. seg000:7C32      int     18h      ; Активного раздела нет, возврат в BIOS (вызов ROM Basic)
    26. seg000:7C34
    27. seg000:7C34 ActiveFound:
    28. seg000:7C34      mov     [bp+0], dl           ; Код диска, с которого ведётся загрузка
    29. seg000:7C37      push    bp
    30. seg000:7C38      mov     byte ptr [bp+11h], 5 ; Счётчик попыток чтения
    31. seg000:7C3C      mov     byte ptr [bp+10h], 0 ; Признак наличия EDD (0 - нет, 1 - есть)
    32. seg000:7C40      mov     ah, 41h
    33. seg000:7C42      mov     bx, 55AAh
    34. seg000:7C45      int     13h                  ; Проверка наличия расширенных дисковых функций BIOS
    35. seg000:7C47      pop     bp
    36. seg000:7C48      jb      short TryRead
    37. seg000:7C4A      cmp     bx, 0AA55h
    38. seg000:7C4E      jnz     short TryRead
    39. seg000:7C50      test    cx, 1
    40. seg000:7C54      jz      short TryRead
    41. seg000:7C56      inc     byte ptr [bp+10h]    ; EDD есть
    42. seg000:7C59
    43. seg000:7C59 TryRead:
    44. seg000:7C59      pushad
    45. seg000:7C5B      cmp     byte ptr [bp+10h], 0 ; Есть поддержка EDD?
    46. seg000:7C5F      jz      short NoEDD
    47. seg000:7C61      push    large 0              ; Считывание первого сектора активного раздела по адресу 0000:7C00
    48. seg000:7C67      push    large dword ptr [bp+8]
    49. seg000:7C6B      push    0
    50. seg000:7C6E      push    7C00h
    51. seg000:7C71      push    1
    52. seg000:7C74      push    10h
    53. seg000:7C77      mov     ah, 42h
    54. seg000:7C79      mov     dl, [bp+0]
    55. seg000:7C7C      mov     si, sp
    56. seg000:7C7E      int     13h
    57. seg000:7C80      lahf
    58. seg000:7C81      add     sp, 10h
    59. seg000:7C84      sahf
    60. seg000:7C85      jmp     short ReadComplete
    61. seg000:7C87 ; ---------------------------------------------------------------------------
    62. seg000:7C87
    63. seg000:7C87 NoEDD:
    64. seg000:7C87      mov     ax, 201h     ; Считывание первого сектора активного раздела по адресу 0000:7C00
    65. seg000:7C8A      mov     bx, 7C00h
    66. seg000:7C8D      mov     dl, [bp+0]
    67. seg000:7C90      mov     dh, [bp+1]
    68. seg000:7C93      mov     cl, [bp+2]
    69. seg000:7C96      mov     ch, [bp+3]
    70. seg000:7C99      int     13h
    71. seg000:7C9B
    72. seg000:7C9B ReadComplete:
    73. seg000:7C9B      popad
    74. seg000:7C9D      jnb     short ReadSuccessful ; Переход, если чтение оказалось успешным
    75. seg000:7C9F      dec     byte ptr [bp+11h]    ; Если неудача, пытаться считать снова, пока счётчик не исчерпан
    76. seg000:7CA2      jnz     short TryReadAgain
    77. seg000:7CA4      cmp     byte ptr [bp+0], 80h ; Сомнительный момент: если считать не удалось, но диск не был первым
    78. seg000:7CA8      jz      ErrorLoadingOS       ; физическим, производится попытка чтения с первого физичекого диска,
    79. seg000:7CAC      mov     dl, 80h              ; однако с использованием данных из старой таблицы разделов
    80. seg000:7CAE      jmp     short ActiveFound
    81. seg000:7CB0 ; ---------------------------------------------------------------------------
    82. seg000:7CB0
    83. seg000:7CB0 TryReadAgain:
    84. seg000:7CB0      push    bp
    85. seg000:7CB1      xor     ah, ah
    86. seg000:7CB3      mov     dl, [bp+0]
    87. seg000:7CB6      int     13h                  ; Сброс диска
    88. seg000:7CB8      pop     bp
    89. seg000:7CB9      jmp     short TryRead
    90. seg000:7CBB ; ---------------------------------------------------------------------------
    91. seg000:7CBB
    92. seg000:7CBB ReadSuccessful:
    93. seg000:7CBB      cmp     ds:Signature, 0AA55h ; Контроль сигнатуры вторичного загрузчика
    94. seg000:7CC1      jnz     short MissingOS
    95. seg000:7CC3      push    word ptr [bp+0]      ; Код диска, с которого выполняется загрузка
    96. seg000:7CC6      call    WaitPS2Ready
    97. seg000:7CC9      jnz     short loc_7CE2       ; Переход, если контроллер PS/2 занят
    98. seg000:7CCB      cli
    99. seg000:7CCC      mov     al, 0D1h             ; Разрешение линии A20
    100. seg000:7CCE      out     64h, al
    101. seg000:7CD0      call    WaitPS2Ready
    102. seg000:7CD3      mov     al, 0DFh
    103. seg000:7CD5      out     60h, al
    104. seg000:7CD7      call    WaitPS2Ready
    105. seg000:7CDA      mov     al, 0FFh
    106. seg000:7CDC      out     64h, al
    107. seg000:7CDE      call    WaitPS2Ready
    108. seg000:7CE1      sti
    109. seg000:7CE2
    110. seg000:7CE2 loc_7CE2:
    111. seg000:7CE2      mov     ax, 0BB00h           ; Проверка поддержки TPM и дешифровка вторичного загрузчика
    112. seg000:7CE5      int     1Ah
    113. seg000:7CE7      and     eax, eax
    114. seg000:7CEA      jnz     short loc_7D27
    115. seg000:7CEC      cmp     ebx, 41504354h
    116. seg000:7CF3      jnz     short loc_7D27
    117. seg000:7CF5      cmp     cx, 102h
    118. seg000:7CF9      jb      short loc_7D27
    119. seg000:7CFB      push    large 0BB07h
    120. seg000:7D01      push    large 200h
    121. seg000:7D07      push    large 8
    122. seg000:7D0D      push    ebx
    123. seg000:7D0F      push    ebx
    124. seg000:7D11      push    ebp
    125. seg000:7D13      push    large 0
    126. seg000:7D19      push    large 7C00h
    127. seg000:7D1F      popad
    128. seg000:7D21      push    0
    129. seg000:7D24      pop     es
    130. seg000:7D25      int     1Ah
    131. seg000:7D27
    132. seg000:7D27 loc_7D27:
    133. seg000:7D27      pop     dx
    134. seg000:7D28      xor     dh, dh
    135. seg000:7D2A      jmp     far ptr loc_7C00     ; Переход на вторичный загрузчик
    136. seg000:7D2A ; ---------------------------------------------------------------------------
    137. seg000:7D2F      db 0CDh
    138. seg000:7D30      db 18h
    139. seg000:7D31 ; ---------------------------------------------------------------------------
    140. seg000:7D31
    141. seg000:7D31 MissingOS:
    142. seg000:7D31      mov     al, ds:7B7h          ; msgMissingOS
    143. seg000:7D34      jmp     short DisplayErrorMessage
    144. seg000:7D36 ; ---------------------------------------------------------------------------
    145. seg000:7D36
    146. seg000:7D36 ErrorLoadingOS:
    147. seg000:7D36      mov     al, ds:7B6h          ; msgErrorLoadingOS
    148. seg000:7D39      jmp     short DisplayErrorMessage
    149. seg000:7D3B ; ---------------------------------------------------------------------------
    150. seg000:7D3B
    151. seg000:7D3B InvalidPartitionTable:
    152. seg000:7D3B      mov     al, ds:7B5h          ; msgInvalidPartitionTable
    153. seg000:7D3E
    154. seg000:7D3E DisplayErrorMessage:
    155. seg000:7D3E      xor     ah, ah
    156. seg000:7D40      add     ax, 700h
    157. seg000:7D43      mov     si, ax
    158. seg000:7D45
    159. seg000:7D45 loc_7D45:
    160. seg000:7D45      lodsb
    161. seg000:7D46      cmp     al, 0
    162. seg000:7D48      jz      short Halt
    163. seg000:7D4A      mov     bx, 7
    164. seg000:7D4D      mov     ah, 0Eh
    165. seg000:7D4F      int     10h                  ; Вывод символа с продвижением курсора
    166. seg000:7D51      jmp     short loc_7D45
    167. seg000:7D53 ; ---------------------------------------------------------------------------
    168. seg000:7D53
    169. seg000:7D53 Halt:
    170. seg000:7D53      hlt
    171. seg000:7D54      jmp     short Halt
    172. seg000:7D56
    173. seg000:7D56 ; =============== S U B R O U T I N E =======================================
    174. seg000:7D56
    175. seg000:7D56
    176. seg000:7D56 WaitPS2Ready    proc near
    177. seg000:7D56      sub     cx, cx
    178. seg000:7D58
    179. seg000:7D58 loc_7D58:
    180. seg000:7D58      in      al, 64h     ; Бит 1 равен 1, когда входной буфер контроллера PS/2 занят
    181. seg000:7D5A      jmp     short $+2
    182. seg000:7D5C      and     al, 2
    183. seg000:7D5E      loopne  loc_7D58
    184. seg000:7D60      and     al, 2
    185. seg000:7D62      retn
    186. seg000:7D62 WaitPS2Ready    endp
    187. seg000:7D62
    188. seg000:7D62 ; ---------------------------------------------------------------------------
    189. seg000:7D63 aInvalidPartititinTable db 'Invalid partition table',0
    190. seg000:7D7B aErrorLoadingOS db 'Error loading operating system',0
    191. seg000:7D9A aMissingOS     db 'Missing operating system',0
    192. seg000:7DB3      db   0
    193. seg000:7DB4      db   0
    194. seg000:7DB5 msgInvalidPartitionTable db 63h
    195. seg000:7DB6 msgErrorLoadingOS db 7Bh
    196. seg000:7DB7 msgMissingOS    db 9Ah
    197. seg000:7DB8      dd 2B11BF10h          ; Сигнатура диска
    198. seg000:7DBC      dw 0
    199. seg000:7DBE Partition1     db 80h      ; Активный раздел
    200. seg000:7DBF      db 20h                ; Номер головки начала раздела
    201. seg000:7DC0      dw 21h                ; Номера цилиндра и сектора начала раздела
    202. seg000:7DC2      db 7                  ; Тип раздела
    203. seg000:7DC3      db 0FEh               ; Номер головки конца раздела
    204. seg000:7DC4      dw 0FFFFh             ; Номера цилиндра и сектора конца раздела
    205. seg000:7DC6      dd 800h               ; LBA начального сектора раздела
    206. seg000:7DCA      dd 12A18000h          ; Число секторов в разделе
    207. seg000:7DCE Partition2     db 0
    208. seg000:7DCF      db 0
    209. seg000:7DD0      dw 0
    210. seg000:7DD2      db 0
    211. seg000:7DD3      db 0
    212. seg000:7DD4      dw 0
    213. seg000:7DD6      dd 0
    214. seg000:7DDA      dd 0
    215. seg000:7DDE Partition3     db 0
    216. seg000:7DDF      db 0
    217. seg000:7DE0      dw 0
    218. seg000:7DE2      db 0
    219. seg000:7DE3      db 0
    220. seg000:7DE4      dw 0
    221. seg000:7DE6      dd 0
    222. seg000:7DEA      dd 0
    223. seg000:7DEE Partition4     db 0
    224. seg000:7DEF      db 0
    225. seg000:7DF0      dw 0
    226. seg000:7DF2      db 0
    227. seg000:7DF3      db 0
    228. seg000:7DF4      dw 0
    229. seg000:7DF6      dd 0
    230. seg000:7DFA      dd 0
    231. seg000:7DFE Signature     dw 0AA55h
     
  12. Antolflash

    Antolflash New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2008
    Сообщения:
    167
    И в чём же она заключенна?
     
  13. Antolflash

    Antolflash New Member

    Публикаций:
    0
    Регистрация:
    14 дек 2008
    Сообщения:
    167
    SII
    Спасибо огромное

    Увы, сяду разбираться только на следующей неделе(
     
  14. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    261
    Antolflash
    MBR загружает в память первичный загрузчик раздела и передает ему управление, а вот первичный загрузчик раздела, уже загружает саму ОС.
    Это можно видеть в коде от SII там MBR загружает первичный загрузчик по адресу 7C00h.
     
  15. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Вот идиоты. Уже работу с портами впихнули в MBR. В ХР такого не было. Вот код alter'а. Это MBR-загрузчик от ХР, слегка дополненный моим кодом (и функционалом соответственно).
    Код (Text):
    1.                 org     7C00h
    2.  
    3.                 xor     ax,ax
    4.                 mov     ss,ax
    5.                 mov     sp,$$
    6.                 sti
    7.                 push    ax
    8.                 pop     es
    9.                 push    ax
    10.                 pop     ds
    11.                 cld
    12.                 mov     si,rel_base
    13.                 mov     di,@f
    14.                 push    ax
    15.                 push    di
    16.                 mov     cx,rel_size
    17.                 rep     movsb
    18.                 retf
    19. rel_base:
    20.                 org     600h+$-$$
    21. @@:
    22.                 mov     bp,partition_table
    23.                 mov     cl,4
    24.  
    25.                 mov     ax,word [key_flags]
    26.                 mov     bl,ah
    27.                 mov     bh,0
    28.                 aam     10h
    29.                 and     ax,[0417h]
    30.                 jz      locloop_1
    31.                 dec     bx
    32.                 cmp     bx,cx
    33.                 jae     locloop_1
    34.                 shl     bx,cl
    35.                 cmp     [partition_table+bx+4],ch
    36.                 je      locloop_1
    37.                 add     bp,bx
    38.                 jmp     loc_8
    39. locloop_1:
    40.                 cmp     [bp],ch
    41.                 jl      loc_2
    42.                 jnz     loc_4
    43.                 add     bp,10h
    44.                 loop    locloop_1
    45.  
    46.                 int     18h
    47. loc_2:
    48.                 mov     si,bp
    49. loc_3:
    50.                 add     si,10h
    51.                 dec     cx
    52.                 jz      loc_8
    53.                 cmp     [si],ch
    54.                 je      loc_3
    55. loc_4:
    56.                 mov     al,[str_table]
    57. loc_5:
    58.                 mov     ah,7
    59.                 mov     si,ax
    60. loc_6:
    61.                 lodsb
    62. loc_7:
    63.                 cmp     al,0
    64.                 je      loc_7
    65.                 mov     bx,7
    66.                 mov     ah,0Eh
    67.                 int     10h
    68.                 jmp     loc_6
    69. loc_8:
    70.                 mov     [bp],dl
    71.                 mov     [bp+10h],cl
    72.                 call    sub_1
    73.                 jnc     loc_11
    74. loc_9:
    75.                 inc     byte [bp+10h]
    76.                 cmp     byte [bp+4],0Bh
    77.                 je      loc_10
    78.                 cmp     byte [bp+4],0Ch
    79.                 je      loc_10
    80.                 mov     al,[str_table+1]
    81.                 jnz     loc_5
    82. loc_10:
    83.                 add     byte [bp+2],6
    84.                 add     word [bp+8],6
    85.                 adc     word [bp+0Ah],0
    86.                 call    sub_1
    87.                 jnc     loc_11
    88.                 mov     al,[str_table+1]
    89.                 jmp     loc_5
    90. loc_11:
    91.                 cmp     word [7DFEh],0AA55h
    92.                 je      loc_12
    93.                 cmp     byte [bp+10h],0
    94.                 je      loc_9
    95.                 mov     al,[str_table+2]
    96.                 jmp     loc_5
    97. loc_12:
    98.                 mov     di,sp
    99.                 push    ds
    100.                 push    di
    101.                 mov     si,bp
    102.                 retf
    103. sub_1:
    104.                 mov     di,5
    105.                 mov     dl,[bp]
    106.                 mov     ah,8
    107.                 int     13h
    108.                 jc      loc_13
    109.                 mov     al,cl
    110.                 and     al,3Fh
    111.                 cbw
    112.                 mov     bl,dh
    113.                 mov     bh,ah
    114.                 inc     bx
    115.                 mul     bx
    116.                 mov     dx,cx
    117.                 xchg    dl,dh
    118.                 mov     cl,6
    119.                 shr     dh,cl
    120.                 inc     dx
    121.                 mul     dx
    122.                 cmp     [bp+0Ah],dx
    123.                 ja      loc_14
    124.                 jc      loc_13
    125.                 cmp     [bp+8],ax
    126.                 jae     loc_14
    127. loc_13:
    128.                 mov     ax,0201h
    129.                 mov     bx,7C00h
    130.                 mov     cx,[bp+2]
    131.                 mov     dx,[bp]
    132.                 int     13h
    133.                 jnc     loc_ret_17
    134.                 dec     di
    135.                 jz      loc_ret_17
    136.                 xor     ah,ah
    137.                 mov     dl,[bp]
    138.                 int     13h
    139.                 jmp     loc_13
    140. loc_14:
    141.                 mov     dl,[bp]
    142.                 pusha
    143.                 mov     bx,55AAh
    144.                 mov     ah,41h
    145.                 int     13h
    146.                 jc      loc_16
    147.                 cmp     bx,0AA55h
    148.                 jne     loc_16
    149.                 test    cl,1
    150.                 jz      loc_16
    151.                 popa
    152. loc_15:
    153.                 pusha
    154.                 push    0
    155.                 push    0
    156.                 push    word [bp+0Ah]
    157.                 push    word [bp+8]
    158.                 push    0
    159.                 push    7C00h
    160.                 push    1
    161.                 push    10h
    162.                 mov     ah,42h
    163.                 mov     si,sp
    164.                 int     13h
    165.                 popa
    166.                 popa
    167.                 jnc     loc_ret_17
    168.                 dec     di
    169.                 jz      loc_ret_17
    170.                 xor     ah,ah
    171.                 mov     dl,[bp]
    172.                 int     13h
    173.                 jmp     loc_15
    174. loc_16:
    175.                 popa
    176.                 stc
    177. loc_ret_17:
    178.                 ret
    179.  
    180. str_1           db      "Invalid partition table",0
    181. str_2           db      "Error loading operating system",0
    182. str_3           db      "Missing operating system",0
    183.                 rb      7B8h-3-$
    184. str_table       db      str_1 and 0FFh,str_2 and 0FFh,str_3 and 0FFh
    185.                 dd      ?
    186. key_flags       db      ?
    187.                 db      ?
    188. partition_table rb      40h
    189.                 dw      ?
    190.  
    191.                 rel_size = $-$$
     
  16. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    261
    Вот вам вопрос, чтобы не создавать новую тему
    Может ли boot SECTOR иметь в себе несколько секторов?
    Просто он у меня в 512 байт не умещается а резать всю его красоту не охота.
     
  17. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Где ты там такое увидел? Кругом BIOS используется.
    Через порты только открытие A20.
    Или ты знаешь как открыть А20 без использования портов?
    Вопрос философский :)
    Может ли литровая бутылка вмещать больше литра?
     
  18. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    Treant
    пишешь в бут сектор код который подгружает необходимые тебе сектора по нужному адресу и все
    только овчинка выделки не стоит
     
  19. Treant

    Treant Member

    Публикаций:
    0
    Регистрация:
    24 май 2009
    Сообщения:
    261
    Ну всмысле у меня MBR загружает 4 сектора, которые представляют собой единый код, загружающий ядро.
    Это нормально?
     
  20. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.625
    Адрес:
    Russia
    Treant
    критерий нормальности - работоспособность