Предлагаем вашему вниманию
очередной раздел нашего журнала
КОНКУРС ЮНЫХ ПРОГРАММИСТОВ
Прежде всего небольшая ошибка
в выполнении команд LDIR и LDDR.
Попробуйте сказать , будет ли
работать такая процедура:
ORG 30000
LD HL,M2
LD DE,M1+1
LD BC,65535
LDDR
DEFS 198,0
M1 DEFB 0
DEFB #5Е
JP CONTINUE
DEFS 195,0
M2 DEFS,0
Результатом работы этой
маленькой програмки будет выход
по адресу CONTINUE с включением
режима прерываний IM 2.
Все дело в том , что процессор
при выполнении команды LDDR
после переброски очередного
байта снова перечитывает код
команды и после переброски бай-
та #5Е вместо LDDR процессор
примет команду IM 2 ну a коман-
да JP уже переброшена
Примечание : в данном примере
перебрасывается 200 байт.
В регистре BC количество якобы
перебрaсывaемых байт - заведомо
больше количества байт между
первым байтом команды LDDR и
меткой M1
Массив DEFS 198,0 может быть
заполнен например программой
инициализации чего-либо .
Массив DEFS 195,0 может быть
программой обработки прерываний
или чем нибудь другим .
Команду JP CONTINUE можно за-
менить любой другой .
теперь нужно сказать про эле-
мент DEFB #5Е
Это второй байт команды кото-
рая будет выполняться вместо
LDDR после отработки процедуры
в данном случае это будет
команда IM 2
ЕСЛИ ВМЕСтО #5Е ПОДСтАВИтЬ
#В8 ПОСЛЕДСтВИЯ МОГУт БЫтЬ
НЕПРЕДСКАЗУЕМЫМИ (ПОЧЕМУ ?)
А тЕПЕРЬ МИНИ-ЗАДАЧКА
Что будет в регистре ВС после
выполнения следующей процедуры
ORG 30000
LD BC,32
LD DE,M2+1
LD HL,M3
M2 LDIR
JP CONTINUE
M3 DEFB #XX
DEFS 99,#XX
(#XX НАПРИМЕР РАВЕН #79)
И каковы будут результаты ее
работы ?
Наиболее полные ответы будут
оценены , a их авторы получат
небольшие призы !
Крупных хаккеров просьба не
беспокоиться ,это конкурс для
начинающих !!!!
Ответы присылайте по адресу
г.тОМСК 634062
ИРКУтСКИЙ тРАКт 128-А
КВАРтИРА 6
CЛОБОДЯН АЛЕКСАНДРУ
ВЛАДИМИРОВИЧУ
C пометкой:
"конкурс YOUNG CODER"
ДО НОВЫХ ВСтРЕЧ ДРУЗЬЯ !
03.08.96 NIKANOR.
Other articles: