Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / motorola / 68LAB3.DOC
Скачиваний:
14
Добавлен:
16.04.2013
Размер:
299.29 Кб
Скачать

Команда Scc

Команда Scc (set conditionally) проверяет условие, описанное в поле сс, также как это делается в командах Bcc и DBcc. В отличие от Bcc и DBcc, проверка в команде Scc не приводит к переходу. Вместо этого результат используется для установки байта приемника в состояние TRUE (ему соответствует значение FF - все единицы), если условие удовлетворяется, или в состояние FALSE (ему соответсвует значение 00 - все нули), если условие не удовлетворяется. Заметим, что для приемника допустимы все режимы адресации, относящиеся к Data Alterable. Команда SF будет устанавливать байт приемника в 00, в то время как ST устанавливает байт приемника в FF.

Команда Scc удобна, когда необходимо установить или сбросить флаг в зависимости от результата проверки. Например оператор языка Паскаль

IFALPHA>=BETA THENFLAG:=TRUE

ELSEFLAG:=FALSE; может быть реализован, как

MOVE.W ALPHA,D1

CMP.W BETA,D1

SGE FLAG

Без использования команды Scc для реализации этих же действий потребовалось бы 5 команд.

CLR.B FLAG

MOVE.W ALPHA,D1

CMP.W BETA,D1

BLT NEXT

MOVE.B #$FF,FLAG

NEXT . . .

Ещ¸ одним применением команды Scc является сохранение определ¸нных проверяемых условий для дальнейшего использования в программе. Рассмотрим пример вычисления следующего логического выражения:

(A>B) OR (B<C) AND (C>D)

Здесь требуется провести три сравнения: А и В, В и С, и С и D. Используя команду Scc, результат каждого сравнения может быть записан в однобайтную булевскую переменную. Затем над этими переменными можно выполнить логические команды OR и AND.

Ниже в табл. 1 представлены все ранее рассмотренные команды передачи управления.

Òàáë. 1

Мнемоника Размерность Формат Допустимый Действие Сост. флагов

или суффикс операнда тип EA N Z V C X

JMP áåç ÅÀ Control addr. DST®ÐÑ - - - - -

(Переход) размера modes

BRA .S èëè <label> DST®ÐÑ - - - - -

(Переход) ничего

Bcc .S или <label> Если cc, тогда - - - - -

(Переход ничего DST®PC

по условию)

DBcc без Dn,<label> Если cc/, тогда - - - - -

(Декремент и размера Dn.W-1®Dn.W

переход Если Dn.W¹1, тогда

по условию) DST®PC

Scc байт EA Data Если cc, тогда - - - - -

(Установка alterable FF®EA, в противном

по условию) случае 00®EA

Условия, по которому определяется сс, даны ниже.

Установки флагов для:

Синтаксис Проверяемые условия перехода по Bcc, или окончания в DBcc, или

для перемещения FF в EA в Scc

BEQ, DBEQ, SEQ Равно Z=1

BNE, DBNE, SNE Не равно Z=0

BGT, DBGT, SGT Больше Z+(NÅV)=1

BLT, DBLT, SLT Меньше NÅV=1

BGE, DBGE, SGE Больше или равно NÅV=0

BLE, DBLE, SLE Меньше или равно Z+(NÅV)=0

BVS, DBVS, SVS Переполнение V=1

BVC, DBVC, SVC Нет переполнения V=0

BPL, DBPL, SPL Ïëþñ N=0

BMI, DBMI, SMI Минус N=1

BHI, DBHI, SHI Âûøå C+Z=0

BLS, DBLS, SLS Ниже или равно C+Z=1

BCS, DBCS, SCS Перенос установлен (ниже) C=1

BCC, DBCC, SCC Перенос сброшен (выше или равно) C=0

DBF, SF Ложно (никогда) -

DBT, ST Истинно (всегда) -

Команды nop и stop

Команда NOP (no operation) не выполняет никаких действий. Подобно оператору CONTINUE в языке FORTRAN, эта команда обеспечивает место для перехода из других мест программы.

Команда STOP является привилегированной командой. В режиме супервизора эта команда загружает указанное как непосредственный операнд слово в регистр состояния, после чего происходит останов процессора.

Например , команда STOP #$2700 вызовет останов процессора и занесет в регистр состояния SR константу $2700, что соответствует установке режима супервизора, 7-го уровня приоритета процессора и нулевых значений всех флагов условий.

Соседние файлы в папке motorola