Искусство схемотехники. Том 3 [Изд.4-е] | страница 5



GE Больше или равно нулю

GT Больше нуля

HI Выше

LE Меньше или равно нулю

LS Ниже или равно

LT Меньше нуля

MI Минус

NE Не равно нулю

PL Плюс

T Всегда истина>2)

VC Переполнение сброшено

VS Переполнение установлено

>____

>1)>См. «Коды условий».

>2)>Не используется в командах Вcс; вместо «ВТ» используйте BRA


MOVE.W (непосредственная,

# $FFFF,D0 регистровая)

MOVE.B (А0), (А1) (косвенная, косвенная)

ADD.L D5, (А2) + (прямая, косвенная с постинкрементом)

BTST.B #2$C0000 (непосредственная, абсолютная длинная)


В первом примере устанавливаются в 1 все 16 бит регистра D0 (символ «$» обозначает «шестнадцатиричное», а «#» указывает на «непосредственную» константу); вторая команда копирует байт из ячейки памяти, адрес которой находится в А0, в ячейку памяти, адрес которой находится в А1; третья прибавляет 32-разрядное знаковое целое к 4-байтовому («длинному») целому, которое начинается в памяти с байта, адресуемого через А2, после чего содержимое А2 увеличивается на 4; последняя команда проверяет бит 2 в ячейке памяти С0000Н, устанавливая соответствующим образом флаг нуля Z (для последующей команды условного перехода). Заметьте, что операнды cледуют в порядке — источник, приемник, что противоположно нотации МП 8086.

МП 68000 позволяет использовать почти все режимы адресации и размеры операндов с любой командой («Справочное пособие программиста МП 68000» исчерпывающе описывает все допустимые сочетания; наиболее полезная информация собрана в табл. 11.2). В результате написание изящных и эффективных программ на языке ассемблера оказывается относительно простой задачей. Например, работая с МП 8086 и желая проанализировать состояние флага порта ввода-вывода, вы должны будете сохранить и восстановить содержимое регистра AL и в сумме использовать 5 команд (PUSH, IN, TEST, POP, Jcc). МП 68000 позволяет выполнить ту же операцию с помощью всего двух команд: BTST и Всс; никакие регистры не нужны, потому что бит памяти (и, следовательно, регистры порта) можно проанализировать непосредственно. Более того, «автоинкрементный» режим адресации вроде «(А2) +» дает возможность работать с массивами. Хотя мы еще не описали все режимы адресации и команды, вы вполне сможете выполнить следующее упражнение.

>Упражнение 11.1. Скопировать массив длиной $100 байт из таблицы, начинающейся в ячейке $А0000 в таблицу, начинающуюся в ячейке SA8000. При решении этой задачи будет полезна команд WGT метка (переход если больше нуля).