как выполнить кусочек кода

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

  1. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    Здрасте!!! я тут новенький.
    необходимо выполнить кусок кода под Win
    Код (Text):
    1. mov ax, 6F02h
    2. mov bl, FFh
    3. int 15h
    под досом все прекрасно работает. а как тоже самое сделать под виндой не знаю. знаю только одно что надо это делать с ring 0

    может кто поможет и покажет кусок работающего кода? :)
    или хотя бы подробно расскажет план необходимых действий.


    Заранее благодарен!
     
  2. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    Встречный вопрос - а вы знаете, что такое под win на 15h векторе будет? мне что-то подсказывает, что далеко не тоже самое, что в дос. То есть смысл-то выполнения этого кода в ring 0 вообще есть?
     
  3. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    FatMoon эм.....не знаю даже :dntknw:
    вообщем это кусок кода из документации по WatchDog'у. под досом все прекрасно работает. надо "тоже самое" сделать что бы работало из под win. как мне быть?
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
  5. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    crypto
    апаратный вачдог - для перезагрузки системы. если постоянно не обновлять счетчик, то железяка делает ребут системы
     
  6. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    А запускать дос-приложение под окнами? Если там некоторая периодичность вызовов нужна - запустить и свернуть... и пусть висит весь день свернутое? Если конечно Windows позволит

    Потому как иначе - только драйвер аппаратного WatchDog'а. Но там, очевидно, придется выполнять не int 15h, а как-то работать с портами. (как мне кажется)
     
  7. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    FatMoon
    код проверял под "чистым досом" без всяких окон.
    а все же если предположить что этот код и под виндой сработает, то как это должно выглядеть? те собственно говоря:
     
  8. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    DENver
    А что действительно кроется под данной функцией int 15h? Какой код вызывается? ИМХО отсюда и нужно пытаться танцевать в данной ситуации.
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    DENver
    вызывать код биоса реального режима и апи доса под Windows нельзя (про ntvdm молчу).
    нужно использовать соответствующие апи Windows для выполнения той же операции с логической точки зрения.
    ринг0 вообще не в тему здесь
     
  10. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    План действий - проверить, работает ли дос-приложение под окнами нужным образом. (Вовсе не факт, что так сразу и не работает - ВМ позволяет дос-программам работать с *некоторыми* портами)
    Если это был резидент - возможно, переписать на зацикленную программу. Если работает - то или сделать как сказал (запустить и свернуть), или написать оболочку, висящую в памяти и по некоторым событиям (таймер, или комбинация клавиш) запускающую дос-приложение.
    Если не работает, то узнать, что делает прерывание 15h под досом, поскольку оно не просто принимает число в регистре, а как-то программирует определенные порты какой-то железяки. Потом написать драйвер, который в защищенном режиме будет работать с теми же портами аналогичным образом. Написание драйверов должен объяснять не я, и не на пальцах - это тема сложная, особенно если ни разу не делал ничего подобного. Пара толстых бумажных мануалов, туториалы с wasm'a и Windows DDK должны помочь.

    Даже предполагать не буду, что этот код сработает под виндой где-то кроме дос-сессии под виртуальной машиной - потому что не сработает. Потому что на прерываниях под виндой висят 32-разрядные процедуры, а сами прерывания не документированы - вместо прерываний апи используют. И никто на 15-й вектор эмуляцию 16-битного кода из дос не вешал. Ввиду очевидности этого никто ничего более толкового и не отвечает :)
     
  11. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    A BIOS function call (INT 15H) is used to control the Watchdog Timer:
    INT 15H:
    AH – 6FH
    Sub-function:
    AL – 2 : Set the Watchdog Timer’s period
    BL : Time-out value(Its unit--second or minute, is dependent on the item “Watchdog Timer unit select” in CMOS setup).
     
  12. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    досовское приложение под виндой не работает - проверил. как быть дальше? если все таки нада что бы работало под виндой в доке ни чего кроме(см. пост выше) этого не сказано :dntknw:
     
  13. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    DENver
    Теперь анализируешь ДОС-код, который спрятан за данной функцией INT 15H (реверсишь), определяешь логику его работу, а потом пытаешься перенести код под Вынь.
     
  14. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    crypto
    как это сделать? :) те как достать код INT 15H и что значит среверсить? :)
    Прошу отнестись с пониманем
     
  15. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
  16. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    crypto
    вкурсе :) на счет среверсить разобрались :) как теперь выдрать бинарный код процедуруы?
     
  17. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
  18. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    (понял) :))

    crypto Спасибо, допер до практического смысла... выглядит дико, даже с трудом верю )
     
  19. DENver

    DENver New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    11
    crypto
    не канает. это API для их железяк, а не какое-то унифицированное. вообщем рпоблема все еще не решина :dntknw:
     
  20. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    DENver
    Начнем сначала - как реализован твой WatchDog? Какой софт используется?