Консультация № 154858
18.12.2008, 17:26
50.00 руб.
0 6 1
Здравствуйте, профессиональные эксперты. Вопрос Лыскову Игорю Витальевичу.
Помогите решить второе задание лабораторное работы №6:

Изменить первую программу таким образом, чтобы процессор реагировал на готовность ВУ с помощью подсистемы прерывания.

Вариант №7.

Заранее - спасибо.

Обсуждение

Неизвестный
18.12.2008, 18:54
общий
Ну и вопросики!! Какую "первую"? И что Вы понимаете под "ВУ"?
Неизвестный
18.12.2008, 18:59
общий
http://rusfaq.ru/info/question/151168 - вот тут всё написано. Лысков Игорь Витальевич знает. Я сразу для него и пишу.
Неизвестный
18.12.2008, 21:56
общий
Так ему и направляйте
давно
Посетитель
7438
7205
19.12.2008, 19:06
общий
Кстати, есть же возможность направлять вопрос конкретному эксперту, а не помечать в тексте.
Зачем рассылать всем вопрос, который предназначается конкретному эксперту?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
19.12.2008, 19:09
общий
это ответ
Здравствуйте, Соболев Сергей Владимирович!
Решение с прерываниями.


Приложение:
RD #27 ; адрес обработчика прерывания клавиатуры
WR 100 ; запишем по адресу обработчика IRQ0
RD #0 ;начальный адрес куда будем писать русские символы
wr R0 ;сохраним
rd #64 ;начальный адрес куда будем писать цифры
wr R1 ;сохраним
RDI #101 ;команда очистки буфера
out 1 ; для клавиатуры
out 11 ; и дисплея
RDI #102 ; команда сброса ошибки
out 1 ; для клавиатуры
out 11 ; и для дисплея
RDI #11 ; команда разрешения МВУ и работы по прерыванию
OUT 1 ; для клавиатуры
RDI #10 ; команда разрешения МВУ
out 11 ; для монитора без автоувеличения адреса
RDI #103 ; команда установки посимвольного ввода
out 1 ; для клавиатуры
EI ; разрешаем прерывания от устройств (клавиатуры)
LOOP: ; пустой цикл
NOP ; вся работа в прерывании
NOP
JMP LOOP
INT0:IN 0 ; считываем код с клавиатуры
wr R2 ; сохраним
sbi #48 ; <'0'
js RESET ; игнорируем, на сброс клавиатуры
rd R2 ; код
sbi #58 ; >'9'
jns CMPRUS ; проверим на русские буквы
RD R1 ; цифру выводим в нижней части экрана, в R1 адрес, куда писать
out 13 ; в регистр адреса
adi #1 ; инкремент адреса
wr R1 ; сохраним
rd R2 ; код
out 10 ; на дисплей!
jmp RESET ; на сброс клавиатуры
CMPRUS:RD R2 ; код, проверим на > 128 - там русские буквы
SBI #128 ; сравним со 128
JS RESET ; < 128 игнорируем
RD R0 ; русские буковки выводим в верхней части экрана, в R0 адрес, куда писать
out 13 ; в регистр адреса
adi #1 ; инкремент адреса
wr R0 ; сохраним
rd R2 ; код
out 10 ; на дисплей!
RESET:RDI #101 ; команда сброса
out 1 ; в клавиатуру
RDI #103 ; команда установки посимвольного ввода (сбрасывается при сбросе)
out 1 ; в клавиатуру
IRET ; возврат из прерывания
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
20.12.2008, 04:04
общий
Ничего не понимаю, сейчас работает!
Так что все нормально!
Удачи!
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа