Lprint #09
05 июля 1997

Ассемблер для user - Заполнение экрана "*".

<b>Ассемблер для user</b> - Заполнение экрана
┌──────────────────────────────────────────────────────────────┐
│▒▒▒▒▒▒▒▒▒▒▒▒▒ 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, либо позвоните мне (позвать Андрея).



Другие статьи номера:

BBS NEWS - График работы BBS на неделю.

Spectrum Forevor? - Что нас ждет годика через полтора?..

Ассемблер для user - Заполнение экрана "*".

Вступление - MOVE - празднует пол года своего существования.

Давайте познакомимся - Рассказ от CODEMAN'а о себе.

Компьютерные пираты - Митник: преступление или жертва (продолжение).

Опрос - Результаты опроса Беларусских спектрумистов.

Улыбнитесь - Собрание приколов Минского радиотехнического колледжа.

Хроника 930 - Праздник Пива.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Рабочий стол - обзор утилиты для поиска музыкальных файлов Pro Tracker 3.X Mod Finder v1.2
Анонс - В следующем номере ожидаются.
Scorpion Club - О разработках Scorpion Club.
Открытые письма Nemo №6.263
Разборка - Описание игр: SOCCER RIVALS.

В этот день...   21 ноября