Обработка прерываний |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
Обработка прерываний |
Rocket |
15.12.2008 19:53
Сообщение
#1
|
Знаток Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Доброго времени суток! Мне нужно реализовать программу, которая выводила бы последовательно цифры от 0 до 9 в одно место экрана. При вводе с клавиатуры какой-либо цифры темп вывода менялся. Значение задержки между выводом очередного символа определяется следующим способом: введённую цифру умножить на 2 в степени 9, это и будет число повторений цикла задержки. Для анализа нажатия клавиши использовать вектор 1Ch. (завершение программы осуществляется при вводе цифры 0)
Проблема возникла непосредственно при написании подпрограммы обработки прерывания 1Ch... Вот мои наработки по данной программе:
Конечно и эти подпрограммы требуют доработок... Вобщем, требуется Ваша помощь... |
volvo |
15.12.2008 23:02
Сообщение
#2
|
Гость |
Ну, с процедурами - это ты сам как нибудь додумаешь, вот основа программы: получение символа через $1C, и вывод счетчика на экран:
.model small Сообщение отредактировано: volvo - 16.12.2008 11:31 |
Rocket |
16.12.2008 19:12
Сообщение
#3
|
Знаток Группа: Пользователи Сообщений: 306 Пол: Мужской Реальное имя: Евгений Репутация: 0 |
Ну, с процедурами - это ты сам как нибудь додумаешь, вот основа программы: получение символа через $1C, и вывод счетчика на экран: Большое спасибо за помощь! У меня возник ряд вопросов: 1) Директива equ. Я так понимаю, что это объявление данных? Какой директиве она эквивалентна? 2) mov msg[0], alздесь используется относительно регистровая адресация?т.е. адрес вычисляется как сумма содержимого регистра и смещения... 3)
Что за прерывание 10h? Как оно организуется,чему оно эквивалентно? например заменить на на функцию 02h, возможно?... Сообщение отредактировано: volvo - 14.01.2009 0:30 |
volvo |
16.12.2008 19:49
Сообщение
#4
|
Гость |
У меня возник ряд вопросов: Это не объявление данных, это просто символическая константа:1) Директива equ. Я так понимаю, что это объявление данных? Какой директиве она эквивалентна? Цитата Директива EQU не определяет элемент данных, но определяет значение, которое может быть использовано для подстановки в других командах. , то есть везде, где компилятор встречает слово X, он заменяет его на 40. Аналог Сишного #define, обычная текстовая подстановка.2) mov msg[0], alздесь используется относительно регистровая адресация? т.е. адрес вычисляется как сумма содержимого регистра и смещения... Что за прерывание 10h? Как оно организуется,чему оно эквивалентно? например заменить на на функцию 02h, возможно?... Что за машина КамАЗ? Как она движется? Чему эквивалентна?Что за вопросы, как организуется 10-е прерывание? Так же, как и все остальные... Оно у тебя что, под запретом? Это нигде не указано. 10H - это так называемое видео-прерывание, занимается обслуживанием монитора. Функция 13H выводит строку с атрибутами, вторая функция досовского прерывания выводит строку без атрибутов, цвет ты уже потеряешь... Не надо никогда пытаться все привести к использованию только одного прерывания. Пользоваться надо тем, что подходит по функциональности. Для работы с видеоадаптером надо пользоваться видеопрерыванием. Недавно у меня на одном из форумов спросили, можно ли избавиться от подключения модуля DOS в программе, "он же нужен всего для одной функции, что надо сделать, чтобы и использовать функцию, и не делать Uses DOS?". А когда ему привели ассемблерный вариант этой функции: "Пользуйся, ты хотел избавиться от модуля? Избавляйся", он почему-то решил не рисковать, и модули не отключил... |
Текстовая версия | 27.09.2024 14:40 |