Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 5638
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 220
∙ повысить рейтинг »
Куликов Роман Евгеньевич
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1583
Дата выхода:06.01.2016, 16:51
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:16 / 7
Вопросов / ответов:1 / 1

Консультация # 188559: Программа CompModel некого Жмакина Задание: Вывод на дисплей трех текстов, хранящихся в памяти, с задержкой Используемые ВУ: Дисплей, таймер Пояснение: Первый текст вводится сразу при запуске программы, второй – через 15 с, третий – через 20 с после второго Два решения 1. Текст программы с программным анализом флагов готовности ВУ.

Консультация # 188559:

Программа CompModel некого Жмакина
Задание: Вывод на дисплей трех текстов, хранящихся в памяти, с задержкой
Используемые ВУ: Дисплей, таймер
Пояснение: Первый текст вводится сразу при запуске программы, второй – через 15 с, третий – через 20 с после второго
Два решения
1. Текст программы с программным анализом флагов готовности ВУ.
2. Текст программы с обработчиком прерывания.

Дата отправки: 27.12.2015, 16:37
Вопрос задал: emicent.lollipop (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, emicent.lollipop!
Даю программу с обработчиком прерывания.
По адресу 50 необходимо записать блок параметров, который задает, когда, где и что выводить на дисплей
Каждый параметр состоит из 3 полей:
1) времени таймера, через сколько должен сработать следующий параметр
2) позиции на дисплее, вычисляется, как 16*строка+колонка
3) сама строка в коде ASCII, заканчивается нулем
Все параметры идут подряд. Для последнего параметра поле времени таймера можно оставить равным 0, т.к. оно не нужно.
Например, можно задать такой блок параметров:
15,1,49,50,51,52,0,20,17,65,66,0,0,33,57,0
Тогда выведутся:
В первой строке со второй колонки текст "1234" и запустится таймер на 15 секунд
Через 15 секунд во второй строке со второй колонки текст "AB" и запустится таймер на 20 секунд
И наконец, через 20 секунд в третьей строке со второй колонки текст "9"
После чего таймер остановится и произойдет останов

Код (Assembler):
RDI #101 ;команда очистки
out 11 ; дисплея
RDI #102 ; команда сброса ошибки
out 11 ; для дисплея
RDI #11 ; команда разрешения МВУ
out 11 ; для монитора с автоувеличением адреса

RD #25 ; адрес обработчика прерывания таймера
WR 102 ; запишем по адресу обработчика IRQ2
RDI #101 ; команда сброса ошибки
out 20 ; сброс таймера 1

rdi #50 ;адрес блока параметров
wr r1 ;будем адресовать через регистр r1
rdi #3 ;количество выводимых строк (параметров)
wr r0 ;в регистре r0
call pr ;отработаем один параметр из блока

EI ; разрешаем прерывания от устройств (таймера)

LOOP: ; пустой цикл
NOP ; вся работа в прерывании
NOP
JMP LOOP

INT2: ;прерывание таймера 1
call pr ;отработаем очередной блок параметров
IRET ;выход из прерывани

pr: ;в r1 адрес параметра
rd @r1+ ;первое значение загружаем в таймер
out 21
rdi #50111 ; команда управления на таймер 1:
;коэффициент деления предделителя 50
;направление счета - декремент
;разрешение прерывания от таймера
;включаем таймер
out 22 ;команда таймеру

rd @r1+ ;второе значение - позиция вывода на дисплее
out 13
loop1:rd @r1+ ;далее строка
jz next ;заканчивается нулем
out 10 ;выводим на дисплей
jmp loop1
next:jrnz r0,prret ;параметры закончились?
rdi #0 ;да - останавливаем таймер
out 22
hlt ;и останов
nop
nop 
prret: ;не закончились - выход и ждем срабатывания таймера
ret

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 05.01.2016, 02:48
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное