Lprint
#09
05 июля 1997 |
|
Ассемблер для user - Заполнение экрана "*".
┌──────────────────────────────────────────────────────────────┐ │▒▒▒▒▒▒▒▒▒▒▒▒▒ Assembler for users (ZX-Spectrum) ▒▒▒▒▒▒▒▒▒▒▒▒▒▒│ └──────────────────────────────────────────────────────────────┘ (c) Spectre MDM 253-3363 Публикуется впервые, на правах уроков. Эта рубрика представляет из себя пособие для тех, кто в со- вершенстве изучил спектрумский Basic и теперь желает изучить узнать и испытать на практике возможности языка напрямую управ- ляющего процессором. Человек в совершенстве владеющий ассембле- ром и умеющий не менее совершенно его использовать способен пи- сать СВОИ программы (игры, системы, утилиты и др.) по качеству не уступающие лучшим произведениям на спектруме. Итак, если вы решились, и вас не пугает фраза "ассемблер очень трудно учить", то читайте дальше, иначе просто перейдите на следующую статью. Для начала вам потребуется какой-нибудь ассемблер. Их выбор достаточно велик (XAS,PASM,TASM,MASM,ALASM,ZASM), но я предла- гаю остановится иммено на ZASM'е. Если у вас есть модем, то я думаю вы быстро уговорите кого-нибудь дать вам ZASM'а, ну а ес- ли нету (модема), то поищите на своих системных дисках - может ZASM 3.0 где-то, да и валяется. Предположим ваши поиски увенча- лись успехом, и вы не поленились прочитать инструкцию следующую к ZASM'у, тогда можно начать. Для начала напишем процедуру, действие которой вы немедленно увидите на экране: ORG 30000 LD HL,42*8+15616 LD DE,16384 LD B,8 METKA LD A,(HL) LD (DE),A INC HL INC D DJNZ METKA RET Теперь комментарии: - Комманда ORG нужна для того, чтобы ассемблер знал, по како- му адресу будет ваша программа. - Номер символа "*" (звездочки)=42. Один символ занимает в памяти 8 байт, а память с символами начинается с адреса 15616. Значит для вычисления адреса где находится информа- ция о нашей звездочке, мы считаем: 42*8 это сколько байт пропускаем от начала и плюс 15616. - 16384 (#4000) это адрес начала экрана - LD B,8 сколько байт нужно выводить на экран - LD A,(HL) берем байт из адреса адресуемого HL - LD (DE),A помещаем по адресу в DE - Увеличиваем адрес HL на 1 - Увеличиваем адрес в DE на 256 (из-за линейности экрана) - При помощи комманды DJNZ зацикливаем программу 8 раз (это мы задавали в B) - RET возвращаемся в ассемблер. На сегодня пока все, но если вам эта рубрика нужна, то я ее обязательно продолжу, только киньте хотя бы одно сообщение на любую Минскую bbs, либо позвоните мне (позвать Андрея).
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября