На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Недоразумение с портами.
    Решил научиться работать с портами, возникло недоразумение. Я работал
    под голым досом и очень долго мучался почему не работает этот
    простой код. Потом случайно запустил программу под виндой и она
    заработала. В чём может быть дело ?

    CLI
    MOV AL,   0EDh       ;управление зажиганием CapsLock,Num,Scroll
    OUT 60h,  AL
    JMP delay
    delay:
    MOV AL,   00000111b  ;зачечь все три
    OUT 60h,  AL
    STI

    Я не понимаю в чём дело ! Раньше я не понимал отличий между режимом ДОС
    и его эмуляцией, теперь понимаю и вообще-то я думал, что подобные программы
    не работать должны именно под виндой (ведь она вроде защищённая ОС и сама
    выбирает куда допустить приложение, а куда нет), а выходит у меня наоборот.

      И тишина....
      Неужели никто не знает в чём может быть дело ?   ???
      Сообщение отредактировано: Ilyia -
        Попробуй так.........

          cli
          mov cx,2000h
        @1:in al,64h
          test al,2
          loopnz @1
          mov al,0EDh
          out 60h,al
          mov cx,2000h
        @2:in al,64h
          test al,2
          loopnz @2
          mov al,00000111b
          out 60h,al
          sti

        Т.е. перед отправкой байта сделай......

          mov cx,2000h
        @x:in al,64h
          test al,2
          loopnz @

        .....а JMP убери......
          Под виндой работает, так же как и моя, под голым Досом не смотрел, надо перезагружаться... Но мне интересно, _почему_ так происходит, что некоторые проги,
          работающие с портами, в эмуляции пашут, а так - нет. Странно. Хотя бы было бы наоборот, было бы хотя бы менее странно...
            Сейчас нашёл интересную деталь :o
            Оказывается, что если использовать порт 64, а не 60, то программа будет работать правильно как под Досом, так и под эмуляцией, а если использовать только порт 60,
            то она будет работать корректно только в режиме эмуляции.
            Но почему так... я так и не понял.
              Цитата
              Оказывается, что если использовать порт 64, а не 60, то программа будет работать правильно как под Досом, так и под эмуляцией, а если использовать только порт 60,
              то она будет работать корректно только в режиме эмуляции.


              Управление клавиатурой AT производится обращением к порту 64h, для совместимости с XT допустимо использование порта 60h. То есть использование порта 64h однозначно корректней.

              Цитата
              Под виндой работает, так же как и моя, под голым Досом не смотрел, надо перезагружаться... Но мне интересно, _почему_ так происходит, что некоторые проги,
              работающие с портами, в эмуляции пашут, а так - нет. Странно. Хотя бы было бы наоборот, было бы хотя бы менее странно...


              У меня только одна версия. Все дело в программировании контроллера клавиатуры. При работе в Windows он перепрограммируется и работает несколько по-другому нежели чем в DOS
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0222 ]   [ 15 queries used ]   [ Generated: 2.05.24, 13:00 GMT ]