Помогите с загрузочным сектором

Тема в разделе "WASM.ASSEMBLER", создана пользователем Loginanton, 17 июн 2008.

  1. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Zhelezka
    Не работает потому что ты собираешь программу преднозначенную для голого железа под виндоус.
    И отладчик воспринимает код соответственно как 32битную программу.
     
  2. Zhelezka

    Zhelezka New Member

    Публикаций:
    0
    Регистрация:
    21 июл 2008
    Сообщения:
    103
    А где можно достать исходники любой 32-битной операциолнной системы?
     
  3. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Zhelezka
    у Pavia в подписи :)

    там, чуть выше
     
  4. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    wsd
    еще забыл
    поюзать дизассемблер
     
  5. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Очень интересная тема!
    Взял код отсюда: http://www.lowlevel.ru/?namespace=osdev2
    Код (Text):
    1. [ORG 0x7C00]
    2.  
    3. start:
    4.  
    5. cli
    6. mov ax, cs
    7. mov ds, ax
    8. mov ss, ax
    9. mov sp, start
    10.  
    11. sti
    12.  
    13. mov si, msg
    14. call kputs
    15.  
    16. cli
    17. hlt
    18. jmp short $
    19.  
    20. kputs:
    21.  
    22. .loop:
    23. lodsb
    24. test al, al
    25. jz .quit
    26. mov ah, 0x0E
    27. int 0x10
    28. jmp short .loop
    29. .quit:
    30. ret
    31.  
    32.  
    33. msg: db "Hello from the world of real programming!",0x0A,0x0D,"Hellow World!!!",0
    34. times 510-($-$$) db 0
    35. db 0x55, 0xAA
    Компилирую в NASM вот так:
    nasm -fbin os.asm -o os.bin
    PAUSE

    Потом подключаю к VMware образ дискетки, записываю туда первые 512 байт WinHex'ом, загружаюсь, VMware говорит, что guest os остановила процессор и вижу на экране вот это:
    Hello from the world of real programming!
    Hellow World!!!_

    Очень классно!!!


    А потом я WinHex'ом записал эти же 512 байт в начало диска C:\ и прибавил ещё 3 восклицательных знака, чтоб различать откуда я гружусь!
    И Сработало!
    То есть получается компу без разницы откуда грузиться с floppy или c жёсткого диска!!!
    Принцип один и тот же! И код один и тот же!!!

    Очень классно!!!



    Единственно, что мне не нравится - привык уже к синтаксису MASM!
    Не могу уже без .if .endif и .while .endw и invoke и т.д.
    Уже cmp eax,ebx je label глаз режет!

    Пробую с Masm'ом, но он почему-то упорно не хочет делать код 16-разрядным!
    Конечно, очень бы хотелось чтоб были .if .endif и .while .endw и invoke...

    А в Fasm'е есть что-либо подобное???


    Подскажите что-нибудь более высокоуровневое! На абсолютно чистом assembler'е уже тяжело писать!
     
  6. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Meatcoins
    на сайте посвящённом асму это выглядит провокацией :dntknw:
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Meatcoins

    Хочу заметить что в тех статьях есть ошибки
    К пример в http://www.lowlevel.ru/?namespace=osdev8
    db 0xAA,0x55 а должно быть наоборот db 0x55, 0xAA

    Используй masm 6.11

    Или tasm или fasm.


    Принцип да, но код разные. У HDD есть партиции. А еще работать с большии диски нужно через EDD, а маленькии через обычный сервис дисков.
     
  8. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Я имел ввиду невинные .if .endif .while .endw invoke и т.д.

    Ну, это не очень страшно, главное чтоб идея была правильная!
    tasm мне не очень нравится... С masm 6.11 знаком - это ml link и т.д.
    Попробую fasm, тем более, что все его используют.
    А в нём есть невинные .if .endif .while .endw invoke и т.д.?
    Просто ещё никогда его не использовал...
    Мда, "партиции"... так можно и Русский язык забыть!
    Короче, говоря структура немного разная. Буду искать что-нибудь по этому вопросу.
    А EDD что такое?
     
  9. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Вот пока что нашёл:
    http://wiki.osdev.ru/index.php/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%B8%D0%BC%D0%B8_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0%D0%BC%D0%B8_%D0%B8_%D0%B8%D1%85_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0%D0%BC%D0%B8

    Pavia
    Что за стрёмный сайт?
    http://wiki.osdev.ru/index.php/%D0%92%D0%BD%D1%83%D1%82%D1%80%D0%B5%D0%BD%D0%BD%D0%B5%D0%B5_%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE
    Ничего не доступно!

    EDD надо полагать - это скорее всего контроллер жёстких дисков...
    Пока http://wiki.osdev.ru/index.php/%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B6%D0%B5%D1%81%D1%82%D0%BA%D0%B8%D0%BC%D0%B8_%D0%B4%D0%B8%D1%81%D0%BA%D0%B0%D0%BC%D0%B8_%D0%B8_%D0%B8%D1%85_%D0%BA%D0%BE%D0%BD%D1%82%D1%80%D0%BE%D0%BB%D0%BB%D0%B5%D1%80%D0%B0%D0%BC%D0%B8 не читал ещё!
    Вечером почитаю...
     
  10. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Meatcoins
    EDD(Enhanced Disk Drive Services ) это расширение BIOS для работы с новыми. Большими дисками.
    Нас, кто занимается осдевом, мало. А сайт по тихоньку развивается. Если что-то освоишь можешь сам добавить.
     
  11. Phuntik

    Phuntik New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2008
    Сообщения:
    318
    Meatcoins
    Будь уверен, что есть. Переходи, не пожалеешь.
     
  12. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    А! Ну, тогда я на FASM!
    Не! Я не это имею ввиду!
    А то, что больше половины статей недоступна!
    403 - Forbidden!
    Почему так?
    А как доступ получить?
     
  13. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Если есть проблема с нехваткой документации, спрашивай на osdev-форумах. Лично я всегда готов поделиться этим добром. Или рассказать, где можно взять. Если с английским нет проблем, то можешь почитать англоязычный сайт или опять-таки спросить на форуме.

    Да все там доступно, просто наполняемость пока не очень!
     
  14. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    А ну, да! Зарегистрироваться надо было!
    Просто те, которые недоступны - их просто нет!
    Например, тут http://wiki.osdev.ru/index.php/%D0%92%D0%BD%D1%83%D1%82%D1%80%D0%B5%D0%BD%D0%BD%D0%B5%D0%B5_%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE только одна статья есть - вот эта http://wiki.osdev.ru/index.php/%D0%9E%D0%B4%D0%BD%D0%BE%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%BD%D1%8B%D0%B5 !!!
    А вообще ничего так сайт - самим наполнять его содержимое можно!
     
  15. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    А вообще интересная тема!
    Вот пока что нарыл:
    Скачал Bochs http://bochs.sourceforge.net/cgi-bin/topper.pl?name=See+All+Releases&url=http://sourceforge.net/project/showfiles.phpqmrkgroup_ideq12580
    Нашёл вот эту статью http://www.mycomp.com.ua/text/6083
    Настроил Bochs.
    Создал образ диска на 40МБайт и запихнул туда простенький код из http://www.lowlevel.ru/?namespace=osdev2
    Это работает!
    В документации к Bochs нашёл вот такой интересный раздел: 8.11. Using Bochs internal debugger
    Вот это самое интересное!
    Как отлаживать то, что пишешь?
    Ведь, как мне кажется, без отладчика отлаживать ОС намного сложнее, чем Win32-приложение без отладчика!
    Поэтому прежде, чем что-то писать неплохо было бы иметь отладчик!
    Вот я и рою пока в направлении компилятора нормального (думаю использовать FASM+RadASM) и отладчика (Bochs)!
     
  16. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Лично я отладочной версией практически не пользуюсь. Мне почти всегда достаточно информации из лога, чтобы понять причину возникшей ошибки. К тому же предпочитаю писать предельно прозрачный код, чтобы потом не топтаться на одном кв. сантиметре из-за какой-то нелепой ошибки. А с инструментарием ты определился неплохо. Я сам как основной эмуль использую бокс, а как основной ассемблер (ядро вообще написано исключительно на fasm) - fasm. Неплохо бы иметь под рукой хотябы еще один эмуль (я использую VMWare Workstation) и особенно при разработке дисковых загрузчиков и загрузчиков исполняемых файлов, дисковых дров и дров ФС - какой-нибудь хекс-редактор, позволяющий работать не только с образами дисков, но и с реально подключенными дисками. В последнее время я пользуюсь в основном HxD.
     
  17. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    VMWare Workstation - это моё второе я!
    Я из VMWare не вылазию! У меня на реальном компе почти ничего нет - всё на виртуальном!
    И Bochs на виртуальном у меня, а не на реальном.
    Я через VMWare всё делаю - и в Internet и отладчики все там и все проги...
    А в качестве Hex-редактора использую WinHex - очень удобный!
    Позволяет открывать как разделы логические, так и диски физические в шестнадцатиричном виде!
    Самое главное - это подобрать инструментарий - это я уже убедился!
    Я пока с Bochs разбираюсь вечерами.
    Вот есть, например, http://bfe.sourceforge.net/?p0=download графическая оболочка для Bochs, а скорее исходники от неё в tar-архивах, написанные на Си. Видимо, это всё можно откомпилировать как в Linux, так и Windows, а потом присобачить к Bochs как-то.
    Что ещё по Bochs - создаёт он диски образами и с ними потом работает. Поэтому создать диск таким образом в 500ГБайт будет весьма затруднительно!
    Вот интересно, может ли он физические диски использовать, а не образные? Если можно, то тогда Bochs под VMware запускаем и делаем хоть 100Тбайт диск!
    Я сейчас ещё и о том думаю, как читать жёсткие диски в оперативку, потому что писать что-то для дискетки мне не очень хочется.
    По этому поводу вот пока что нашёл:
    Ищу информацию о расширении BIOS - вот что нашёл пока http://hdpt.page.by/int13.html и http://www.codenet.ru/progr/dos/int_0012.php!
     
  18. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    может.
    Первая ссылка у меня есть. Второй нет, да и про EDD там ничего не написано (исправленная ссылка: http://www.codenet.ru/progr/dos/int_0012.php). Дома есть документация по EDD, вечером или завтра утром дам ссылку.
     
  19. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Meatcoins
    Советую EDD скачать с phonix.
    http://www.phoenix.com/NR/rdonlyres/19FEBD17-DB40-413C-A0B1-1F3F560E222F/0/specsedd30.pdf
    Есть еще c t13.org
    http://www.t13.org/Documents/UploadedDocuments/Project/d1386r5-EDD.pdf
    Там сейчас уже 4 версия готовиться.
     
  20. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Так же справка по всем прерываниям биоса
    http://www.msc-ge.com/download/pc-system/ipc-produkte/isa96at96/BIOS%20Programmer's%20Guide%20v10.pdf
    Или немного в другом виде
    http://www.phoenix.com/NR/rdonlyres/5AF5C50D-9E06-4298-9E58-E52BFFCC8D7D/0/userman.pdf

    И еще в добавку
    http://www.phoenix.com/en/Customer+Services/White+Papers-Specs/PC+Industry+Specifications.htm