ЧАСТЬ II.
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ В МАШИННЫХ КОДАХ
ВВЕДЕНИЕ
Вы перешли ко второй части нашего учебного пособия, что безусловно свидетельствует о серьезности Ваших намерений изучить программирование в машинных кодах и на языке АССЕМБЛЕРа для бытовых персональных ЭВМ типа "ZX-Спектрум" и других, совместимых с системой СИНКЛЕР.
Вы познакомились с архитектурой процессора, с системой команд Z-8 0, мы дали Вам первичную информацию, позволяющую преодолеть психологический барьер при переходе к программированию в машинном коде. Работая с материалом второй части, Вы приобретете навыки практической работы и узнаете те приемы и "маленькие хитрости", которые широко используют опытные программисты, но перед которыми встают в тупик начинающие.
Приведем пример. Что Вы подумаете, если встретите в программе две команды, следующие одна за другой?
INC D - увеличить на единицу содержимое регистра D.
DEC D - уменьшить на единицу содержимое регистра D.
На первый взгляд, программист бесполезно истратил 2 байта памяти, потому что эти две команды взаимно противоположны и никак не изменяют содержимое регистра D. Это верно, но не совсем. Дело в том, что обе команды имеют еще и косвенный эффект, связанный с тем, что в соответствии с их результатом выставляются флаги регистра F. Поэтому результат действия этих команд эквивалентен как бы действию команды: "Проверить
содержимое регистра D и, не изменяя его, установить флаги регистра F в соответствии с ним". Такой команды процессор Z-80 не имеет, вот почему приходится прибегать к обходному маневру.
Вот таким конкретным приемам мы и обучим тех читателей, у которых хватит бодрости прочитать и вторую часть книги.
В рамках глав второй части мы для упрощения подачи материала будем пользоваться следующими условными обозначениями:
N - целое число от 0 до 255 (байт) ;
NN - целое число от 0 до 65535 (слово) ;
reg - регистр общего назначения (регистр B,C,D,E,H или L) ; rp - регистровая пара (шестнадцатиразрядные регистры
HL,BC,DE) ; xy - индексный регистр (IX или IY) ;
ADDR - шестнадцатиричный адрес в поле памяти компьютера; rph - старший регистр регистров ой пары ( B, D, H) ; rpl - младший регистр регистровой пары (C,E,L); В тех случаях, когда в процедурах будут участвовать несколько регистров, будут применяться обозначения reg1, reg2 или rp1, rp2, а также rph1, rph2, rpl1, rpl2 .
На всех этапах работы Вам может быть полезна информация, приведенная в третьей части книги - "Справочник...". В
частности, там указаны все косвенные воздействия команд процессора на содержимое флагового регистра. Вам также могут быть полезны те данные, которые имеются в справочнике о длительности исполнения команд процессора.