- •Микропроцессор мс68000
- •Команда dBcc
- •Команда Scc
- •Команды nop и stop
- •Управляющие структуры
- •Практическая часть.
- •Команды безусловной передачи управления .
- •Команды условного перехода.
- •Команды условного перехода с декрементом в регистре Dn
- •Команды работы с подпрограммами
- •Контрольные вопросы и задания.
Команда 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-го уровня приоритета процессора и нулевых значений всех флагов условий.