- •Микропроцессор мс68000
- •Команда dBcc
- •Команда Scc
- •Команды jmp, nop и stop
- •Управляющие конструкции
- •Работа с подпрограммами.
- •Практическая часть.
- •Команды безусловной передачи управления .
- •Команды условного перехода.
- •1010 Nop Точка останова.
- •Команды условного перехода с декрементом в регистре.
- •Команды работы с подпрограммами
- •Подпрограмма вывода списка слов на терминал output bsr ent Перевести строку
- •Подпрограмма перевода строки
- •Контрольные вопросы и задания.
- •Команды Bcc и bra.
Практическая часть.
Команды передачи управления условно разделены на 3 группы:
1. Команды безусловной передачи управления;
2. Bcc <label> - условный переход по метке;
3. DBcc Dn,<label> -условный переход с декрементом в регистре Dn;
4. Команды работы с подпрограммами.
Замечание.
В приведенных ниже экспериментах будут использованы не изученные ранее команды:
CMP Dn,Dm сравнение содержимого регистров
Dm(приемника) и Dn (источника).Производит
операцию вычитания (Dm)-(Dn) и по результату
выставляет флаги N , Z , V èC.
ADDA.L #I,An прибавляет к содержимому регистра Аn длинное
слово I, записанное в двух дополнительных
словах.
Команды безусловной передачи управления .
В набор команд МС68000 входят две инструкции безусловной передачи управления: BRA и JMP.
Команда JMP является наиболее универсальной, т.к. представляет собой по существу запись эфективного адреса в счетчик команд РС. К ней применимы все рассмотренные в предыдущей лабораторной работе методы адресации, за исключением прямой регистровой и непосредственной адресаций. Ниже мы расмотрим пример передачи управления с использованием абсолютной короткой адресации.
1000 JMP $900 переход к адресу $900 с использованием абсолютной
короткой адресации.
При ассемлировании этой команды адрес $900 записывается в следующее за командным слово. При выполнении этой команды процессор считывает это слово, переводит его в 32-х разрядную сетку и записывает в РС.
Следующий доступный для этой команды способ адресации - относительнпая адресация со смещением, при использовани этого способа команда JMP становится эквивалентом операции BRA с адресуемой памятью ограниченной 64К, т.к для задания смещенея относительно РС используется одно дополнительное слово.
1000 JMP $900(PC) Переход к адресу $900 с использованием
относительной адресации, в дополнительное слово
записывается -$102=$FEFE.
BRA.S $900 Переход к адресу $FB6, в младший байт командного
слова записывается -$50=$B0.
Введите эти две команды начиная с адреса $1000. Просмотрите получившийся код, особое внимание обратив на вычисленное системой TUTOR смещение.
Основным отличием этих команд в данном случае является границы переходов. Команда BRA имеет два варианта использования. В первом случае с префиксом .S для задания смещения используются 8 бит командного слова, таким образом передача управления может осуществлятся на растояния от -128 до 127 байт. Во втором - с префексом .L наряду с уже упомянутыми 8-ю битами, которые в данном случае являются старшим байтом, для описания смещения используется дополнительное слово, следующее за командным, следовательно границы пересылок увеличиваются до ±32Кбайт.
В системе TUTOR, также как и в кроссассемблере, при написании программ нет необходимости напрямую указывать с помощью префекса длину команды, ассемблер сам вычисляет длину смещения.
Команды условного перехода.
Система команд процессора МС68000 предоставляет программисту широчайший выбор команд условного перехода с помощью которых можно создавать большие разветвленные системы.
Рассмотрим специфику выполнения операций данной подгруппы на примере выполнения простейшей, но в то же время наиболее часто используемой команды Всс в различных программных структурах:
Следующий эксперемент илюстрирует применение команд условного перехода в структуре типа if.....then.....else :
1000 MOVEQ #-1,D0
MOVEQ #12,D1
CMP.L D0,D1 сравнение содержимого регистров данных
D0 è D1;
BHI $100E если число в D1 больше по модулю, чем в D0 ,
òî èäòè ê $100A,
MOVEQ #6,D0 иначе-записать в D0 число 30.
BRA $1010
100E MOVEQ #8,D0