+=======================================+
| Coding... |
+======================================+|
X-treamer/Infotek +=+||
+=++|
Раздел для начинаюших кодеров.. +=+
Итак, с этого выпуска мы начнем обзор
команд процессора Z80. Первый раздел -
это команды 8 и 16-разрядной загрузки.
В процессоре Z80 постоянно храняться в
рабочем виде следуюшие регистры:
BC - рагистры-счетчики ;
DE - разрядные регистры ;
HL - адресные регистры ;
A - аккумулятор - все основные
арифметические действия производяться с
ним ;
F - флаговый регистр, недоступный
в обычном виде ;
SP - указатель адреса стека ;
PC - указатель текушей позиции ис-
полнения ;
IX,IY - индексные регистры ;
-----------------------------------------
Теперь приступим к описанию команд
процессора 8-разрядной загрузки:
LD A,B - загружается содержимое ре-
гистра B в регистр A. Сокрашенно это
обозначается как A-----------------------------------------
Далее - рассмотрим команды 16-разрядной
загрузки:
команда также имеет формат LD dd,nn, где
dd - один из регистров:
BC, DE, HL, SP, IY, IX - двуполовинчатые
регистры. Заметьте, что здесь нельзя
присваивать регистр регистру. Можно
только напрямую заносить в регистр значе-
ние типа WORD.
Работа с ячейками памяти осушествля-
еться как с 8-разрядными, так и с 16-раз-
рядными:
LD (nn),A - примерно означает, что в
ячейку памяти с адресом nn заноситься со-
держимое аккумулятора. Т.е. значение ре-
гистра или числа в скобках означает адрес
ячейки памяти. Может также быть следуюшая
запись мнемоники ассемблера:
ld de,49152
ld (de),a
Это означает, что в ячейку памяти по ад-
ресу 49152 (#С000) заноситься содержимое
аккумулятора.
Запись в ячейки памяти может быть и
16-разрядной, например:
ld de,49152
ld (de),32768;
Напрямую задавать адреса в скобках ни в
том, ни в другом случае нельзя.
Считывание из ячейки памяти может быть
также 8 и 16-разрядным:
ld de,49152;
ld a,(de) - содержимое ячейки по
адресу, заданному в DE, заноситься в ак-
кумулятор. Также,
ld de,49152;
ld hl,(de);
означает, что содержимое двух ячеек по
адресам 49152 и 49153 преобразовывается в
число типа word и заноситься в пару ре-
гистров hl.
-----------------------------------------
Не будем пока затрагивать индексные ре-
гистры и перейдем к описанию 8 и 16-раз-
рядной арифметики. Арифметическо/логичес-
кое устройство Z80 (АЛУ) может склады-
вать и вычитать регистры, а также их
инкременировать и декреминировать, в от-
личии от Intel (outside;), который может
только складывать (поэтому он и
Supermazdie). В основном все логические
операции и операции сравнения работают с
аккумулятором. Начнем мы с операции
инкременирования и декременирования ре-
гистров: такие команды, как inc rr и dec
rr, где rr - любой регистр или пара ре-
гистров, означают буквально следуюшее:
inc rr - rr=rr+1 , а
dec rr - rr=rr-1.
Фактически эти команды, работая с 8 раз-
рядными регистрами занимают 4 такта, а с
16 разрядными - 11 тактов, в то время как
прямая операция сложения будет занимать 7
и 15 тактов соответственно.
Команда Add A,r - команда прибавляет к
аккумулятору содержимое регистра r и яв-
ляется 8-разрядной арифметикой. Команда
add a,n прибавляет к регистру а число n.
sub n - команда вычитания числа n из ак-
кумулятора. Она присутствует только в
8-разрядной арифметике. в 16-разрядной
арифметике нет работы напрямую с числами
- там есть только арифметика с регистра-
ми, например: add rr,dd , где rr и dd -
16-разрядные регистры. А ,например, чтобы
прибавить к регистру HL число 80 надо
сделать следуюшие действия:
ld de,80
add hl,de.
Также там сушествуют команды инкремени-
рования и декременирования, такие, как:
inc rr, dec rr.
При арифметических действиях используют-
ся следуюшие флаги: P/V.
V - признак переполения результата
арифметики-этот флаг включается, если ре-
зультат в 8-разрядном регистре больше 255
или в 16-разрядном регистре больше 65535.
Или значение регистра меньше 0.
Р - флаг это признак четности результа-
та.
------------------------------------------
Логика и работа с условиями:
Процессор Z80 содержит команды логики
типа наложения байта или регистра по OR,
AND и XOR. Так,
Xor rr, or rr и and rr означает, что
число или регистр rr объединяется с акку-
мулятором в результате логической опера-
ции. Тут также используется флаг P -
признак четности.
Операция сравнения аккумулятора с числом
делается командой CP n, где n - какое ли-
бо число. Результат работы этой команды
представлен в следуюшей таблице:
+---------------+-----------------------+
| Результат | мнемоника флага. |
+===============+=======================+
| A=n | Z - 1 |
| A<>n | NZ - 0 |
| A>n | C - 1 |
| Aret, сушествуют команды условного вызова,
исполняемые относительно флагов:
Call NZ, nn - вызывает процедуру по ад-
ресу nn, если флаг Z содержит 0. Обратная
процедура - Call Z,nn. Есть и команды ус-
ловного безусловного =) перехода:
JR nz,nn и JR z,nn - релоцируемые ко-
манды и JP nz,nn и JP z,nn - нерелоцируе-
мые команды безусловного перехода.
-----------------------------------------
В следуюшем номере мы рассмотрим работу
с командами перемешения блоков памяти в
другую область памяти и в порт. Команды
ротации, проверки и установки/сброса би-
тов. А пока разберитесь с этими команда-
ми.
-----------------------------------------
Перейдем к новому эффекту. Вернее эффект
не новый, я дам вам новую модификацию из-
вестной процедуры, которая поможет вам
разрабатывать новые эффекты типа
256-color:
Num DB #17
ld a,(num);
xor 8
ld bc,#7FFD
out (c),a
ld (num),a
ret
Эту процедуру можно повешать на преры-
вания и она вечно будет мигать двумя эк-
ранами.
Other articles: