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

Тема в разделе "WASM.OS.DEVEL", создана пользователем Vaper, 7 май 2009.

  1. Vaper

    Vaper New Member

    Публикаций:
    0
    Регистрация:
    7 май 2009
    Сообщения:
    2
    Пишу простейший загрузчик. Хочу, чтобы при вводе команды он переключался на загрузку другой операциооной системы, например винды.Для этого копирую код в какую-нить область памяти следующей процедурой:
    NASM:
    Код (Text):
    1. Copy:
    2. push 0x07c0 ;нынешний сегмент
    3. pop ds
    4.  
    5. push 0x9000 ;будущий сегмент
    6. pop es
    7. xor si, si
    8. xor di, di
    9.  
    10. mov cx, 128 ;копирнуть 512 байт
    11. rep movsd
    12.  
    13. jmp 0x9000:loadwin ;прыгнуть на нужную метку в коде
    14. ret
    Затем считываю информацию с первого сектора диска с помощью портов в сегмент 0x07c0
    NASM:
    Код (Text):
    1. loadwin:
    2. mov dx,1f6h
    3. mov al,0a0h ;нужный диск
    4. out dx,al
    5.  
    6. mov dx,1f2h
    7. mov al,1 ;считать один сектор
    8. out dx,al
    9.  
    10. mov dx,1f3h
    11. mov al,1 ;Считать первый сектор
    12. out dx,al
    13.  
    14. mov dx,1f4h
    15. mov al,0 ;Цилиндр 0
    16. out dx,al
    17.  
    18. mov dx,1f5h
    19. mov al,0 ;Тоже 0
    20. out dx,al
    21.  
    22. mov dx,1f7h
    23. mov al,20h ;Чтение.
    24. out dx,al
    25. still_going:
    26. in al,dx
    27. test al,8
    28. jz still_going ;Продолжать пока диск не освободится
    29.  
    30. mov cx,512
    31. push 0x7c00
    32. pop es ;считываем в нужный сегмент
    33. mov di,0
    34. mov dx,1f0h
    35. rep insw
    36. jmp 0x7C00:0 ;Ну и прыгаем на загруженный код
    В итоге ничего не происходит и виртуальная машина нагружает винт.
     
  2. Pavia

    Pavia Well-Known Member

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

    Код (Text):
    1. mov dx,1f6h
    2. mov al,0a0h ;нужный диск
    3. out dx,al
    Эти два бита необязательны.

    А так ошибок не вижу. Через отладчик прогани.
     
  3. Vaper

    Vaper New Member

    Публикаций:
    0
    Регистрация:
    7 май 2009
    Сообщения:
    2
    Я как-то паршиво умею пользоваться отладчиком.... Я пробовал в Олли ДБГ пихать. Оно бинарные файлы не шарит, а ехе файлы открываются через виндовс очень плохо(через вызов консоли).. и найти среди хлама свои строки мне не под силу.