Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
22
Добавлен:
16.04.2013
Размер:
117.65 Кб
Скачать

Команда Scc

Команда Scc (set conditionally) проверяет условие, описанное в поле сс, как это делается в командах Bcc и DBcc. В отличии от Bcc и DBcc, проверка в команде Scc не приводит к переходу. Вместо этого результат используется для установки адресата в FF, если условие удовлетворяется, или в 00, если условие не удовлетворяется. При¸мник операнда, который является байтом, может быть определ¸н любым изменяемым способом адресации. Те же 16 условий проверки, что и в команде DBcc, включая F (ложно) и Т (истинно), могут быть применены в Scc. Заметим, что команда SF будет устанавливать адресат в 00, в то время как ST устанавливает адресат в FF.

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

IF X>=Y THEN FLAG:=TRUE

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

MOVE.W XX,D1

CMP.W YY,D1

SGE FLAG

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

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

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

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

Команды jmp, nop и stop

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

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

Òàáë. 2

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

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

JMP Безразмерная EA Управление EA®ÐÑ - - - - -

(Перейти)

NOP Безразмерная Нет - Нет действия - - - - -

(Нет действия)

STOP Безразмерная EA #I I®SR; Stop - - - - -

(Остановить)

Как пример, иллюстрирующий гибкость в определении адреса перехода в команде JMP, предположим, что таблица переходов определяется следующим образом:

ORG $20000

TABLE DC.L LABEL1

DC.L LABEL2

DC.L LABEL3

при этом при выполнении команд

MOVEA.L TABLE(A1),A0

JMP (A0) осуществляется переход на один из тр¸х адресов, в зависимости от содержимого в A1: LABEL1, когда A1=0; LABEL2, A1=4; LABEL3, когда A1=8.

Управляющие конструкции

Любая программа может быть разбита на комбинации 6 основных конструкций управления, которые представляют собой следующие простые последовательности:

1. IF condition

THEN action 1;

2. IF condition

THEN action 1

ELSE action 2;

3. FOR counter=initial TO final value

DO action 1;

4. REPEAT action 1

UNTIL condition;

5. WHILE condition

DO action 1;

6. CASE selector OF

action 1,

action 2,

.

.

.

action N;

Для каждой из этих управляющих конструкций на Рис. 3 даны блок-схемы, иллюстрирующие их работу, и примеры, реализованные на ассемблере 68000. В этих примерах операнды памяти определены как слова.

Соседние файлы в папке Motorola - Описание лаб