Как написать игру для ZX Spectrum на ассемблере


         

ЧТО МОЖЕТ МИКРОПРОЦЕССОР Z80?



ЧТО МОЖЕТ МИКРОПРОЦЕССОР Z80?

Поскольку ассемблер непосредственно связан с машинными командами, то начинать его изучение будет резонно с вопроса «а что же может микропроцессор?» Так вот, если вы считаете, что он способен играть музыку, рисовать картинки или печатать текст, то глубоко заблуждаетесь. Ничего такого микропроцессор не умеет. Он может выполнять лишь самые элементарные действия вроде «2 + 2», а более сложным, таким как «2 ґ 2», его еще нужно научить. В этом и состоит задача программиста. Но у микропроцессора есть одно преимущество - за одну секунду он способен выполнить многие тысячи операций, поэтому в реальном времени он и кажется достаточно одаренным.

Вот краткий и не совсем полный список операций, доступных микропроцессору:

  • простейшие арифметические действия сложения и вычитания;
  • операции с памятью, такие как запись в определенную ячейку или считывание из памяти чисел (подобно POKE и PEEK в Бейсике);
  • связь с внешними устройствами через порты (то, чем занимаются в Бейсике OUT и IN);
  • обработка отдельных битов (разрядов двоичных чисел) (напомним, что в Бейсике можно задавать битовые константы с помощью ключевого слова BIN);
  • логические операции с двоичными числами;
  • различные вызовы других подпрограмм;
  • условные и безусловные переходы;
  • работа с прерываниями (это средство, совершенно недоступное Spectrum Бейсику, будет обсуждаться в отдельной главе).
  • Вам может показаться странным, что компьютер, располагая столь незначительными средствами, умудряется создавать на экране целые миры, исполнять сложные музыкальные произведения и даже управлять какими-то механизмами вроде принтера. Чтобы прояснить, как это получается, приведем маленький примерчик на Бейсике, построенный по тому же принципу, что и большинство программ в машинных кодах:

    10 LET ADDR1=16384 20 LET ADDR2=15880 30 LET N=8 40 LET A=PEEK (ADDR2) 50 POKE (ADDR1),A 60 LET ADDR1=ADDR1+256 70 LET ADDR2=ADDR2+1 80 LET N=N-1 90 IF N<>0 THEN GO TO 40




    Содержание  Назад  Вперед