|
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, либо позвоните мне (позвать Андрея).
Другие статьи номера:
Похожие статьи:
В этот день... 15 ноября