Микросхема прерываний
mov al, 0Ah
out 20h, al
in al, 20h
Всегда возвращает 0, даже если жду определенное время, сбрасывая перед этим IF либо маскируя прерывания:
mov al, 0FFh
out 21h, al
Цитата:
Originally posted by CD
Проблемы с чтением из регистра запросов. Читаю так:
mov al, 0Ah
out 20h, al
in al, 20h
Всегда возвращает 0, даже если жду определенное время, сбрасывая перед этим IF либо маскируя прерывания:
mov al, 0FFh
out 21h, al
Проблемы с чтением из регистра запросов. Читаю так:
mov al, 0Ah
out 20h, al
in al, 20h
Всегда возвращает 0, даже если жду определенное время, сбрасывая перед этим IF либо маскируя прерывания:
mov al, 0FFh
out 21h, al
Может я и не прав, но мне кажется, что порт 20h используется только под запись, читать из него нельзя, да и нечего. Что там может быть записано?
А если можно иначе, то как?
Цитата:
Originally posted by CD
В двух источниках ("Язык ассемблера", Рудаков, Финогенов и какая-то документация на англ.) сказано, что порт 20h используется именно так.
А если можно иначе, то как?
В двух источниках ("Язык ассемблера", Рудаков, Финогенов и какая-то документация на англ.) сказано, что порт 20h используется именно так.
А если можно иначе, то как?
Я у тебя спросил, чего там может храниться, что в этих книгах написано?
Код OBh, посланный в порт 20h, разрешает чтение регистра обслуживаемых запросов. Чтение (в т.ч. неоднократное) осуществляется через порт 20h. Установка битов регистра выполняется сигналом INTA, поступающим из процессора в контроллер после регистрации им сигнала прерывания."
Цитата:
Originally posted by CD
Цитирую: "Если в порт 20h послать 0Ah, то разрешается чтение входного регистра контроллера - регистра запросов. Чтение (в т.ч. неоднократное) осуществляется через порт 20h. Читая содержимое IRR, можно определить, на какие входы контроллера поступают сигналы аппаратуры. Регистрация процессором сигнала прерывания приводит к сбросу запроса соответствующего уровня в регистре запросов. Поэтому наблюдение запросов следует выполнять либо при замаскированных, либо при запрещенных прерываниях.
Код OBh, посланный в порт 20h, разрешает чтение регистра обслуживаемых запросов. Чтение (в т.ч. неоднократное) осуществляется через порт 20h. Установка битов регистра выполняется сигналом INTA, поступающим из процессора в контроллер после регистрации им сигнала прерывания."
Цитирую: "Если в порт 20h послать 0Ah, то разрешается чтение входного регистра контроллера - регистра запросов. Чтение (в т.ч. неоднократное) осуществляется через порт 20h. Читая содержимое IRR, можно определить, на какие входы контроллера поступают сигналы аппаратуры. Регистрация процессором сигнала прерывания приводит к сбросу запроса соответствующего уровня в регистре запросов. Поэтому наблюдение запросов следует выполнять либо при замаскированных, либо при запрещенных прерываниях.
Код OBh, посланный в порт 20h, разрешает чтение регистра обслуживаемых запросов. Чтение (в т.ч. неоднократное) осуществляется через порт 20h. Установка битов регистра выполняется сигналом INTA, поступающим из процессора в контроллер после регистрации им сигнала прерывания."
Ну хорощо, если уж так написано, то могу предположить, что в момент чтения никаких запросов на прерывание у устройств нет. Вот. Если ты делаешь задержку, то как? Циклом (без прерываний то)? Может цикл черезчур короткий и успевает пройти пока, не появится запрос на прерывание у таймера.
Холостой цикл с помощью loop, длится пару секунд, так что для прерывания таймера достаточно, еще и подать запрос на прерывание от клавиатуры можно (руками).