ZX Format #01
31 октября 1995

Программистам - Ассемблер для чайников

<b>Программистам</b> - Ассемблер для чайников
Ассемблер В Картинках
  для "чайников" и не только.

      Автор:Михаил Спицын.
________________________________

   Мы начинаем цикл статей по
ассемблеру  для  начинающих, с
целью побудить людей к изучению
данного языка.
   В этих статьях мы раскажем о
строении  компьютера,  графике,
звуке (48 и 128) и, естественно,
о самом ассемблере.
   Итак...

     1.ПРОЦЕССОР КОМПЬЮТЕРА

   Как человек, так и любой ком-
пьютер имеет мозг; этим  мозгом
у компьютера является процессор.
   А что же за "мозг" у  нашего
Speccy?
  "Мозг"  Spectrum'а - это  про-
цессор Z80 фирмы  ZILOG. Процес-
сор Z80 является  псевдошестнад-
цатиразрядным. Как это понять?
   Дело в том, что  каждый  про-
цессор  может  понимать  числа
определенной разрядности. К при-
меру восьмиразрядное число запи-
сывается   как  комбинация   из
восьми двоичных нулей  и единиц
и  может обозначать любое целое
число от 0 до 255.
   Каждый  разряд  такого числа,
это  степень  двойки,  например
двоичное  число  01100110  соот-
ветствует  десятичному  102, а
перевести из десятичной в двоич-
ную систему можно так:

2^7*0+2^6*1+2^5*1+2^4*0+2^3*0+
2^2*1+2^1*1+2^0*0=102

   Продолжим. Z80 имеет двадцать
восьмиразрядных  регистров  (ре-
гистр это ячейка внутри  процес-
сора, куда можно записывать чис-
ла) и все регистры объединяются
в пары, каждая из которых так и
называется: "регистровая пара".
   Вот мы и добрались до ответа
на наш вопрос, -  8+8=16, следо-
вательно регистровая  пара дает
шестнадцатиразрядное число.
   Теперь о том, почему  Speccy
не просто  шестнадцатиразрядный,
а "псевдо" такой.
   Итак регистры нам нужны для
того, чтобы выполнять над ними
арифметические операции, а имен-
но сложение и вычетание. К сожа-
лению наш маленький  Speccy  не
умеет делить и умножать, а уж ни
о каких более "страшных"  дейст-
виях и говорить не приходится.
   Так вот, процесор может скла-
дывать/вычитать  как  регистры,
так и регистровые пары, т.е. вы-
полнять арифметические операции
над  восьми и шестнадцатиразряд-
ными числами, а так как регистры
имеют лишь восемь разрядов (это
вам  не  IBM), то  и  процессор
"псевдошестнадцатиразрядный".

  Вот таблица  всех регистров с
их назначением:

╔═══════╦══════════════════════╗
║Регистр║Основное назначение   ║
╠═══════╬══════════════════════╣
║ A     ║ 8-ый аккумулятор     ║
║ F     ║ Флаговый регистр     ║
║ B     ║ 8-ый счетчик         ║
║ BC    ║ 16-ый счетчик        ║
║ DE    ║ Регистр приемник     ║
║ HL    ║ 16-ый аккумулятор    ║
║ IX    ║ Индексный регистр    ║
║ IY    ║ Системный индекс     ║
║ I     ║ Вектор прерывания    ║
║ R     ║ Регистр регенерации  ║
║ SP    ║ Вершина стека        ║
║ PC    ║ Счетчик команд       ║
╠═══════╩══════════════════════╣
║ Примечание:                  ║
║  8-ый  -  восьмиразрядный    ║
╚══════════════════════════════╝


     2.ПРОСТЕЙШИЕ КОМАНДЫ

   Теперь рассмотрим простейшие
операции ассемблера, используя в
качестве примера бейсик, с кото-
рым, я надеюсь, Вы знакомы.
   Первое, что нужно сделать для
изучения ассемблера -  это  выб-
рать  себе "оболочку-ассемблер",
в которой Вы будете работать.
   Могу Вам посоветовать TASM128
если у Вас ZX128 или, для  ZX48,
ZEUS ASSEMBLER.

   Итак приступим :

    BASIC        ASSEMBLER
  10 LET A=1      LD A,1
  20 STOP         RET

   Команда  "LET"  эквивалентна
команде "LD" , если Вы наберете
и запустите ее, то в регистр "A"
будет занесена единица.  По  ко-
манде "RET" произойдет выход  в
вызывающую программу (если прог-
рамма была запущена из  BASIC'а,
то по команде "RET" она  вернет
управление BASIC'у).
   Во все регистры, за  исключе-
нием "F" и "PC", можно заносить
числа, например:

    LD A,1      ; 1-->A
    LD B,15     ; 15-->B
    LD HL,16384 ; 16384-->HL
    LD IX,50000 ; 50000-->IX

   Но  обычно  программисту  не
хватает регистров, тогда  прихо-
дится использовать память компь-
ютера, например:

    BASIC        ASSEMBLER
LET A=PEEK 23556  LD A,(23556)

   После выполнения этой команды
в "A"  будет  находиться  число,
записаное в указанной ячейке па-
мяти, а учитывая то, что в этой
ячейке  BASIC хранит код послед-
ней нажатой клавиши, данная  ко-
манда  не лишена  практического
смысла.
   Также используются и обратные
команды :

    BASIC        ASSEMBLER
 POKE 23607,A     LD (23607),A

   Но часто  приходиться записы-
вать/считывать значение  ячейки,
адрес  которой  рассчитывается
или берется из таблицы. В таком
случае  используются  следующие
команды:

   ЗАПИСЬ          ЧТЕНИЕ
  LD (BC),A       LD A,(BC)
  LD (DE),A       LD A,(DE)
  LD (HL),0       LD E,(HL)

   Примечание:  Хочу  заметить,
 что не сушествует команды пря-
 мой записи числа в ячейку  па-
 мяти, как и записи  из ячейки
 в ячейку.

   А теперь я хочу привести про-
грамму, которая  печатает любое
сообщение  (она аналогична  опе-
ратору "PRINT").
   В программе используется  ко-
манда "CALL", для вызова  проце-
дуры  ПЗУ, эту  команду  можно
сравнить  с  командой  BASIC'а
"GO SUB", например:

     BASIC        ASSEMBLER
  10 GO SUB 999     CALL M1
      ....           ....
 999 LET A=1     M1 LD A,1
1000 RETURN         RET

   Здесь "М1"-это метка, вместо
которой   при  ассемблировании
программы будет поставлен  соот-
ветствующий адрес.

       ПРИМЕР ПРОГРАММЫ

   После точки  с запятой  в ас-
семблере, также  как после REM
в бейсике пишутся комментарии.

 ;Программа печати текстовых
 ;сообщений. -= PRINT TEXT =-
      ORG 30000
      ENT
START LD A,1    ;Открываем 1
      CALL #1601;канал для
                ;печати.
      LD DE,TEXT;Адрес текста
      LD BC,LEN ;Длина текста
      CALL #203C;Печать текста
      RET
TEXT  DEFB 22   ;Код "AT"
      DEFB  Y,X ;Позиция печати
      DEFM "HELLO, EVEREBODY!"
LEN   EQU 20    ;LEN=20
Y     EQU 10    ;Y=10
X     EQU 5     ;X=5

   Эта  программа  аналогична
строке BASIC'a:
 10 PRINT AT 10,5;"HELLO,
    EVEREBODY!"


   В следующем номере я расскажу
об арифметических командах и ко-
мандах сравнения, и приведу при-
мер маленькой игры.

   До встречи !

________________________________



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

IS-DOS - Информация: новости в мире IS-DOS

IS-DOS - начинающим: IS-DOS - первое знакомство

IS-DOS - пользователям: Краткий путеводитель по системному диску IS-DOS

IS-DOS - Программистам: UniColor - cтандарт настройки цветов в программах IS-DOS

IS-DOS - программистам: Оконная система IS-DOS

IS-DOS - Программистам: Программа gmen.com

Железо - Доработки: блокиpовка поpта #1FFD на Scorpion ZS-256

Железо - Переферия: тормоз KAY'я

Железо - Производители: KAY

Железо - производители: Scorpion ZS 256

Игрушки - Новелла: Crystal Kingdom Dizzy

Игрушки - По полочкам: Быки и коровы

Игрушки - По полочкам: НЛО. Враг неизвестен

Игрушки - Что новенького: обзор новинок

Интервью - Старые знакомые: Рассказ Славы Медноногова о своей деятельности как программиста

Информация - От авторов

Конкурс - Конкурс на конкурс

Конкурс - Уровни к Laser Squad

Отдохнём - Нечто: один день из жизни программиста

Почтовый ящик - Доска объявлений

Почтовый ящик - Обмен опытом: читы

Почтовый ящик - Письма по играм

Премьера - Color Lines

Программистам - Basic для всех: Basic для программистов

Программистам - Ассемблер для чайников

Программистам - Системы: Редактор миссий к игре Laser Squad

Разное - Amiga: история Амиги

Разное - Перспективы: игрушки


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

Похожие статьи:
Part 5 - Emulate letters.
SOFTWARE - Трактат о великой пользительности некоторых авторский разработок.
Реклама и объявления - ложка меда в бочке с медом :)
Editorial
Rants & Raves - Что мы используем при создании газеты ?..

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