Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Блок 4



1. Заполнить экран символами «~». Перехватить прерывание 1Ch, по нажатию буквенной клавиши на клавиатуре. Заменить содержимое экрана нажатым символом. Вернуть экран в начальное состояние через 3 секунды.

2. Очистить экран. Вывести несколько строк произвольного текста. Перехватить прерывание печати экрана Print Screen (Int 5h). Первый вызов этого прерывания заменяет все буквы текста их порядковыми номерами в алфавите. Второй – приводит в исходное состояние и т.д.

3. Очистить экран. Заполнить его произвольной информацией. Перехватить прерывание печати экрана Print Screen (Int 5h). Вызов этого прерывания увеличивает на единицу атрибут вывода текста. Нажатие пробела возвращает экран в исходное состояние.

4. Выводить последовательно символы от «в» до «м» в центр экрана. При нажатии какой-либо цифры на клавиатуре менять темп вывода. Значение задержки между выводом очередного символа определять следующим способом: введённую цифру преобразовать в ASCII код ее символа и умножить на 28 (в зависимости от тактовой частоты процессора данное значение может быть откорректировано в большую или меньшую сторону в процессе отладки), это и будет число повторений цикла задержки. Для анализа нажатия клавиши использовать вектор 1Ch.

5. Выводить в одно место экрана поочерёдно циклически символы «b» и «j». Задержка между выводом каждого символа составляет 2с. При нажатии любой клавиши на клавиатуре увеличивать значение задержки на 0,5с, а при нажатии буквы - уменьшать на 0,2с. Для анализа нажатия клавиши использовать вектор 1Ch.

6. Выводить в одно место экрана введённый символ до тех пор пока не будет введён другой символ. Менять атрибут вывода символа циклически от 0 до 15 каждую 1 секунду. Для анализа нажатия клавиши использовать вектор 1Ch.

7. Выводить в правом верхнем углу ASCII код знака «$». В зависимости от нажатия на клавиатуре менять атрибут вывода и выводимое значение следующим образом: значение текущего атрибута сложить с ASCII кодом нажатой клавиши и взять остаток от деления полученной суммы на 15 – это и будет значение нового атрибута, новое выводимое значение – это ASCII код нажатой клавиши. Для анализа нажатия клавиши использовать вектор 1Ch.

8. Выводить в центр экрана цифру знак «%». Переводить этот символ в позицию выше, ниже, левее или правее текущего символа, в зависимости от нажатия клавиш «W», «A», «S», «D» (перед новым выводом очищать экран). Для анализа нажатия клавиши использовать вектор 1Ch.

9. В программе имеется циклический счётчик по k, считающий от 50 до 150. При нажатии любой клавиши содержимое счётчика преобразуется в ASCII код и выводится в место экрана, определяемое следующим образом: номер строки равен k div 30, а номер столбца k mod 12. Для анализа нажатия клавиши использовать вектор 1Ch.

10. Посчитать за какое время процессор выполнить 17 миллиардов команд xor si,si. Для подсчёта времени использовать вектор 1Ch. Вывести на экран число секунд, затраченное на операцию.

11. Очистить экран. Заполнить поле на экране размером 10х10 выше главной диагонали символом «@» (атрибут 12). Перехватив прерывание печати экрана Print Screen (Int 5h). Очередное нажатие Print Screen производит заполнение указанного поля выше побочной диагонали, ниже главной диагонали, ниже побочной диагонали, выше главной диагоналя и т.д. (т.е. треугольник из символов «@» передвигается в поле 10х10 против часовой стрелке)

12. Выводить ежесекундно в левом верхнем углу экрана системное время «часы:минуты:секунды». При нажатии любой клавиши сдвигать позицию вывода на одно символместо вправо, пока не будет достигнут конец строки. Для анализа нажатия клавиши использовать вектор 1Ch.

13. Вывести несколько строк произвольного текста, содержащие лишь большие буквы латинского алфавита. Каждые 3 секунды каждая буква в тексте заменяется на следующую за ней в алфавите циклически (буква «A» меняется на «Z»).

14. В программе имеется циклический счётчик, считающий от 100 до 200. Его значение преобразуется в ASCII код и выводится в центре экрана каждые 0,7с. При нажатии цифровой клавиши это начальное время вывода увеличивается во столько раз, какая клавиша была нажата. Для анализа нажатия клавиши и подсчёта числа тиков таймера использовать вектор 1Ch.

15. В программе имеются два циклических счётчика, считающих от 100 до 150 и от 0 до 15. Их значение определяет соответственно ASCII код символа и его атрибут для вывода в центре экрана. При нажатии какой-либо клавиши на экран выводится символ, ASCII код которого и атрибут соответствуют значению счетчиков на момент вывода (счетчики продолжают считать). Для анализа нажатия клавиши использовать вектор 1Ch.

16. В программе имеется циклический счётчик по k, считающий от 0 до 15. В правом верхнем углу экрана постоянно выводится символ «х». Каждую секунду атрибут вывода символа меняется на значение счетчика, а его положение на экране определяется следующим образом: номер строки вычисляется как k div 2, а номер столбца – k mod 10. Счетчик продолжает считать. Для подсчёта числа тиков таймера использовать вектор 1Ch.

17. Посчитать за какое время процессор сможет выполнить 100 миллионов раз программу из лабораторной работы №3. Для подсчёта времени использовать вектор 1Ch. Вывести на экран число тиков таймера, потраченное на операцию.

18. Очистить экран. Вывести несколько строк произвольного текста по 10-12 символов (атрибут 14). Перехватив прерывание печати экрана Print Screen (Int 5h), выравнивать текст по центру экрана. Каждое новое нажатие клавиши Print Screen меняет выравнивание на левое, следующее – центрирует и т.д.

19. Выводить ежесекундно в правом нижнем углу экрана системное время «часы/минуты/секунды». Нажатая цифра 1 на клавиатуре меняет формат вывода на «минуты:секунд», повторное нажатие оставляет только секунды, а последующее – приводит все в исходное состояние и т.д. Для анализа нажатия клавиши использовать вектор 1Ch.

20. Выводить символ «#» в центр экрана. При нажатии на клавиатуре какой-либо цифры, не очищая экран, выводить его в строке выше в том же столбце, если он достигнет верхней строки – то перебрасывать в нижнюю в том же столбце. Для анализа нажатия клавиши использовать вектор 1Ch.

21. Выводить в центр экрана символ, нажатый на клавиатуре. Если нажата цифра, менять атрибут вывода следующим образом: ASCII код нажатой клавиши, увеличенный на 10, делится нацело на 5 и полученное значение является новым атрибутом. Для анализа нажатия клавиши использовать вектор 1Ch.

22. Выводить в одно место экрана символ, предшествующий по алфавиту нажатому на клавиатуре символу (для русских символов, считать, что перед «a» находится символ «я»). Менять при выводе атрибут символа циклически от 1 до 15 каждый раз при смене символа. Для анализа нажатия клавиши использовать вектор 1Ch.

23. Выводить в текущее положение курсора символ «№» (атрибут 10). Следующий символ «№» выводить в позицию выше, ниже, левее или правее текущего символа, в зависимости от нажатия клавиш «8», «2», «4», «6» на цифровой клавиатуре (перед выводом не выполнять очистку экрана). Для анализа нажатия клавиши использовать вектор 1Ch.

24. Выводить в текущее положение курсора символ, введённый с клавиатуры. Нажатая функциональная клавиша увеличивает значение атрибута на единицу, а пробельная – уменьшает на единицу. Для анализа нажатия клавиши использовать вектор 1Ch.

25. В программе имеются четыре циклических счётчика, считающих от 0 до 23, от 0 до 79, от 96 до 121 и от 0 до 15. Их значение определяет соответственно строку, столбец, ASCII код выводимого на экран символа и его атрибут. При нажатии какой-либо клавиши выводить на экран символ с ASCII кодом и атрибутом в позицию, соответствующие текущим значениям счетчиков (счетчики при этом не останавливаются). Для анализа нажатия клавиши использовать вектор 1Ch.

Контрольные вопросы

1. В чём суть концепции прерывания?

2. Как работает система прерывания по вектору?

3. В чём отличие команд ret и iret?

4. Какие способы получения/изменения вектора прерывания Вы знаете?

5. Как вызвать программное прерывание?

6. Какие существуют способы передачи параметров в подпрограмму обработки прерываний и возврата параметров из неё?

7. Какие действия производит процессор при получении запроса на прерывание?

8. В чём отличие команд call и int?





Дата публикования: 2014-11-28; Прочитано: 482 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...