1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Не работают светодиоды

Тема в разделе "WASM.HARDWARE", создана пользователем Jin X, 19 июн 2018.

  1. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    343
    Адрес:
    Кольца Сатурна
    Всем привет ещё раз.
    В DOS светодиоды не реагируют, в VMware всё ok. Что не так-то?
    Помнится, давным давно (где-то в конце 90-х, начале 00-х) делал такое, всё работало, сейчас не хочет.
    Код (ASM):
    1. SetLEDState     PROC    PASCAL  State:BYTE
    2.                 pushf
    3.                 cli
    4.                 xor     cx,cx
    5.         @@1:    in      al,64h
    6.                 test    al,2
    7.                 loopnz  @@1                     ; ожидаем готовность к приёму команды
    8.                 mov     al,0EDh                 ; команда управления светодиодами
    9.                 out     60h,al
    10.                 xor     cx,cx
    11.         @@2:    in      al,64h
    12.                 test    al,2
    13.                 loopnz  @@2                     ; ожидаем готовность к приёму команды
    14.                 mov     al,State                ; состояние светодиодов
    15.                 out     60h,al
    16.                 popf
    17.                 ret
    18. SetLEDState     ENDP
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    3.369
    Jin X,

    Так у вас клаву этот порт не обслуживает, либо его нет вовсе :)

    Она у вас походу usb-ная или беспроводная.
     
  3. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    343
    Адрес:
    Кольца Сатурна
    Клава USB-шная.
    Но как не обслуживает? Что же, порт на чтение работает, а на запись – нет?
    Я же читаю из 60-го сканы, делаю сброс IRQ1 через 61-й (не вызывая BIOS'овский обработчик int 9 вообще), через 64-й успешно перезагружаю камень (посылая 0FEh).
    При записи в 60-й, кстати, получаю эхо (генерится IRQ1) в виде скан-кода, но только не 0FAh, а 0FEh. Что бы это могло значить?
     
  4. Jin X

    Jin X Active Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    343
    Адрес:
    Кольца Сатурна
    Накидал прогу, которая непрерывно показывает скан-коды из порта 60h.
    Скан-код 0FEh отображается после нажатия на Caps/Num/Scroll Lock. Так что, видимо, эхо 0FEh – это нормально.