Проблемы с загрузкой

Тема в разделе "WASM.OS.DEVEL", создана пользователем zaqer, 7 ноя 2008.

  1. zaqer

    zaqer New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2008
    Сообщения:
    22
    Помогите разобратся почему в MS Virtual PC этот код работает, а на реальной машине нет?
    Код (Text):
    1. ORG 0x7C00
    2. ;-----------------------Настраиваем регистры
    3.     cli
    4.     mov     ax , cs
    5.     mov     ds , ax
    6.     mov     es , ax
    7.     mov     ss , ax
    8.     mov     sp , 0xfff0
    9.     sti
    10.  
    11. ;----------------------Сообщение о начале работы
    12.  
    13.     mov     ah, 0x00
    14.     mov     al, 0x03
    15.     int     0x10
    16.     mov     ah,0x0b
    17.     mov     bh,0x00
    18.     mov     bl,0x01
    19.     int     0x10
    20.     mov     si, msg
    21.     call                out_print
    22.     jmp $
    23. out_print:
    24. .loop:  
    25.     lodsb  
    26.     test al, al    
    27.     jz .quit
    28.     mov ah, 0x0E
    29.     int 0x10    
    30.     jmp short .loop
    31. .quit:
    32.     ret
    33. msg:            db "Starting...",0x0A,0x0D,0
    34. times 510-($-$$) db 0
    35. db 0xAA, 0x55
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    zaqer
    А разве признак загрузочного сектора не db 0x55,0xAA ?
     
  3. zaqer

    zaqer New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2008
    Сообщения:
    22
    l_inc
    Спасибо!!
     
  4. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    zaqer
    Сделай в начале кода jmp как в докум. структуре загр. сектора или, напрмер, вместо ORG 0x7C00 пиши 0x7C3E, а свой код запиши в загр. сектор по смещению 3Eh (кажется так!)
     
  5. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    int2eh
    это не обязательно, если вы конечно не собираетесь поддерживать FAT12, а тут скорее всего надо при выводе в BL указать атрибут вывода, а то вывод черным не катит (хотя и нужно-то только в графике, но у меня случалось и обратное), а попробуйте настрить es:di на видеопамять и выводить через lodsb/stosw (лично мне этот способ больше нравится)
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    int2eh
    Если посмотришь на MBR - там нет такого джампа =) И все чудесно работает по тому же адресу.
     
  7. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    я бы сделал не mov ax,cs, а xor ax,ax
     
  8. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    cld и mov bx,0x0007 процедуре вывода тоже не помешают.
     
  9. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    max7C4
    Да, конечно.
    Меньше знаешь, крепче спишь ;)