Platinum #01
08 августа 1996 |
|
Предлагаем вашему вниманию очередной раздел нашего журнала КОНКУРС ЮНЫХ ПРОГРАММИСТОВ Прежде всего небольшая ошибка в выполнении команд 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:
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 3 December