protected mode-need some help

Тема в разделе "WASM.BEGINNERS", создана пользователем matveich, 18 апр 2009.

  1. matveich

    matveich New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    3
    пишу программу вот по этой статье
    http://wasm.ru/article.php?article=ia32int

    сначала написал без загрузки с диска(все в пределах одного сектора)
    в секции защишенного режима реализована функция, печатающая строку по такому то адресу-все работает как надо.

    теперь в реальном режи начинаю догружать сектора в память(код привиден в статье),перехожу в pm и вызываю ту функцию-реакции никакой,если код функции вставить пеед зацикливанием-все работает

    таким образом,в пм не вызывается функции(хотя обработчики прерываний в том же сегменте нормально рабают)


    зы к статье прикреплен исходник-попробавал вызывать там свою функцию-результат такой же.
    есть мнение что компилятор неправльно вычисляет адреса переходов,но почему тогда работают прерывания?
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Исходник будет или пора запасаться кофейной гущей? )
    И скажи на чём тестишь (реальный комп, если виртуалка, то какая)
     
  3. matveich

    matveich New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    3
    исходник мало чем отличается от того что насайте
    тестирую на виртуалбоксе,компилятор насм
     
  4. PSR1257

    PSR1257 New Member

    Публикаций:
    0
    Регистрация:
    30 ноя 2008
    Сообщения:
    933
    0) Try to call this "print" function after segement registers initialization, at least after line 133 (mov es,ax);
    1) Write some tiny subprogram - beep - based on direct access to PC speaker (ports 0x60/61h) to implement some "checkpoints" - such subprogram doesn't depend on current CPU mode/etc.
     
  5. matveich

    matveich New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    3
    причина была найдена-надо было указать виртуалке грузиться с флоповода, а не имеджа
    но теперь другая проблема-если под VB оно работает, то на самом железе стартовать отказывается(при заргрузке обращение к дискете есть, но такое ощушение, что биос не считывает бут сектор)


    на всякий случай прикрепил инфо по процу и биосу
    компилирую так:yasm -m x86 -fbin memtest.asm(под виртуалкой работает)
     
  6. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Недочетов в коде много, но BIOS на реальном железе скорее всего отказывается грузить бутсектор из-за того, что ты неправильно прописал загрузочную сигнатуру. Правильный порядок: 0x55, 0xAA.