Программирование на Ассемблере
------------------------------------------
Bcc Label условное ветвление, зависит от кода условия cc
Bcc.S Label условное короткое ветвление
BRA Label безусловное ветвление
BRA.S Label безусловное короткое ветвление
BSR Label обращение к подпрограмме, адрес возврата запоминается
в стеке
BSR.S Label короткое обращение к подпрограмме
CHK ,Dn проверка содержимого регистра Dn на принадлежность
диапазону 0..
DBcc Dn,Label проверка условия, декремент и ветвление
DBRA Dn,Label аналог DBF
JMP безусловный переход (в отличии от BRA операнд задает
абсолютный адрес перехода)
JSR переход к подпрограмме (в отличии от BSR, операнд
задает абсолютный адрес подпрограммы)
NOP нет операции
RESET сброс внешних устройств (привелегированная команда)
RTD #offset возврат из подпрограммы с восстановлением стека
(68020+)
RTE возврат из обработчика исключения, влияет на весь SR
(привелегированная команда)
RTR возврат с загрузкой флагов (влияет только на младший
байт SR)
RTS возврат из подпрограммы
Scc запись в байта -1, если условие выполнено
STOP останов процессора (привелегированная команда)
TRAP #n генерация исключения по команде TRAP
TRAPV проверка флага переполнения и генерация исключения
Сделаем несколько важных замечаний: Когда происходит вызов подпрограммы (по BSR или JSR), адрес следующей за
вызовом команды заносится в стек. По команде RTS этот адрес извлекается из
стека и используется для возврата в основную программу. Рассмотрим, к примеру, следующую программу: run: pea subroutine ;адрес подпрограммы - в стек
jsr subroutine ;вызов подпрограммы
move.l (sp)+,d1 ;выборка длинного слова из стека
; illegal ;если нет отладчика - останов subroutine:
move.l (sp),d0 ;считываем адрес в d0
rts ;и возврат Первая команда, PEA, записывает адрес подпрограммы в стек.
|