- •Микропроцессор мс68000
- •Команда dBcc
- •Команда Scc
- •Команды jmp, nop и stop
- •Управляющие конструкции
- •Работа с подпрограммами.
- •Практическая часть.
- •Команды безусловной передачи управления .
- •Команды условного перехода.
- •1010 Nop Точка останова.
- •Команды условного перехода с декрементом в регистре.
- •Команды работы с подпрограммами
- •Подпрограмма вывода списка слов на терминал output bsr ent Перевести строку
- •Подпрограмма перевода строки
- •Контрольные вопросы и задания.
- •Команды Bcc и bra.
Команда 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. В этих примерах операнды памяти определены как слова.