Plutonium
#02
14 сентября 1998 |
|
Coding - Раздел для начинаюших кодеров...
+=======================================+ | 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 Эту процедуру можно повешать на преры- вания и она вечно будет мигать двумя эк- ранами.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября