Плохой статус регистрации?

Работаю над проектом. Профессор дал нам файл .zip с некоторыми тестами, чтобы мы могли видеть, работает ли наш проект правильно. Мы строим небольшое ядро ​​на С ++.

Во всяком случае, есть поток, который ожидает прерывания клавиатуры (event9.wait ()), и после этого он должен поместить символы в буфер или завершить программу (если вы нажмете «esc»).

while (!theEnd) {

event9.wait();

status = inportb(0x64); // reading status reg. from 64h
while (status & 0x01){ //while status indicates that keys are pressed
....

Я проверил, и я уверен, что он регулярно ждет прерывания. Проблема возникает из-за статуса&0x01 это 0.

Затем я получил часть кода, которая получает символы от 0x60, и она работала просто отлично.

Что-то не так с кодом тестовых файлов? И если да, то что? Если код правильный, что может вызвать проблему?

Я мог бы изменить тестовые файлы, но мне нужна веская причина для этого. И до сих пор единственная причина, по которой я имею это то, что это не работает.

* примечание: комментарии переведены с сербского, но я почти уверен, что они переведены правильно.

0

Решение

Я думаю status & 0x01 отлично в порядке. Однако вам нужно будет снова прочитать порт после чтения порта 0x60 — вполне возможно, что вы сделаете это позже в коде, но я лично просто переписал бы код в:

    while ((status = inportb(0x64)) & 0x01){ //while status indicates that keys are pressed
....

Обратите внимание, что в этом случае вы не должны снова читать порт 0x64 внутри цикла.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]