Команди звернення до підпрограм
Команда виклику підпрограм JSR завантажує до РС з комірки пам’яті, адресу якої зазначено в команді, адресу першої команди підпрограми. Перед цим поточний вміст РС (адреса наступної команди) запам’ятовується у стеку. Виклик підпрограми виконується також командою BSR, яка використовує відносне адресування, аналогічно до команди BRA. Повернення до програми, яка викликає, після завершення підпрограми здійснюється командою RTS, яка повертає зі стека поточне значення РС, чим забезпечує перехід до виконування наступної команди програми. Як правило, перша команда підпрограми завантажує до стека поточне значення регістра SR з метою збереження ознак останнього результату. У цих випадках слід при поверненні з підпрограми використовувати команду RTR, яка відновлює поточне значення байта CCR (ознаки X, N, Z, V, C) та вміст лічильника команд РС.
Команди передавання керування наведено у табл. 12.4.
До команд керування також належать команди організації виключень:
TRAP (TRAP) – команда звернення до підпрограми обслуговування виключень. Команда завантажує до стека супервізора поточний вміст регістрів SR і PC, а потім завантажує до РС початкову адресу (вектор) підпрограми обслуговування відповідного виключення, яке відповідає числу #Dt = 0...15, що входить до команди;
TRAPV (TRAP ON OVERFLOW) – команда виконується аналогічно до команди TRAP за умови встановлення ознаки переповнювання V = 1 і викликає виключення переповнювання;
ILLEGAL (TAKE ILLEGAL INSTRUCTION TRAP) – команда містить відповідне виключення при надходженні помилкового коду команди;
RTE (RETURN FROM EXCEPTION) – повернення з підпрограми обслуговування виключень. Команда є привілейованою і може виконуватися лише в режимі супервізора. При її виконуванні відбувається поновлення вмісту програмного лічильника і регістра SR зі стека
Таблиця 12.4 – Команди передавання керування
Синтаксис Асемблера | Операція | Адресування |
JMP <EA> | <dst> ® PC | Непряме регістрове (усі види), пряме (коротке та довге), відносне, відносне з індексуванням |
BRA ds | PC + ds ® PC | Відносне |
JSR <EA> | SP – 4 ® SP, PC ® (SP), <dst> ® PC | Непряме регістрове (усі види), пряме (коротке та довге), відносне, відносне з індексуванням |
BSR ds | SP – 4 ® SP, PC ® (SP), PC + ds ® PC | |
RTS | (SP) ® SP, SP + 4 ® SP | |
RTR | (SP) ® CCR, SP + Z ® SP, (SP) ® PC, SP + 4 ® SP | |
Bcc ds | Якщо (сс) виконується, то PC + ds ® PC | |
DBcc ds | Якщо (сс) не виконується, то Dn–1®Dn; якщо Dn ¹ -1, то PC + ds ® PC |
і спеціальні команди:
NOP (NOP OPERATION) – команда здійснює перехід до наступної команди без виконання будь-яких операцій;
STOP (LOAD STATUS REGISTER AND STOP) – є привілейованою командою і виконується в режимі супервізора. Завантажує до регістра SR слово, зазначене в команді, після чого процесор припиняє роботу;
RESET (RESET EXTERNAL DEVICES) – команда формує сигнал RESET на відповідному виводі МП; використовується для початкового встановлення підсистем МПС;
CHK (CHECK REGISTER AGAINST BOUNDS) – спеціальна команда, яка виконує порівнювання вмісту відповідного регістра з межею, завданою вмістом ефективної адреси; якщо значення виходить за межу, то виконується відповідне переривання;
LINK (LINK AND ALLOCATE) – зменшує значення вказівника стека на 4, завантажує вміст регістра адреси, який зазначено в команді, до стека, завантажує значення вказівника стека до регістра адреси, збільшує значення вказівника стека на 4. Отже, команда завантажує нове значення вказівника стека, зберігаючи у стеку і регістрі адреси дані задля повернення до вихідних значень;
UNLK (UNLINK) – команда скасовує зміни, які відбулися внаслідок виконування команди LINK.
Синтаксис команд організації переривань і спеціальних команд подано у табл. 12.5.
Таблиця 12.5 – Перелік команд організації переривань і спеціальних команд
Синтаксис Асемблера | Операція | Адресування |
TRAP #Dt | (SSP) – 2 → (SSP), (SR) → SSP (SSP) – 4 → (SSP), (PC) → SSP; Ve(#Dt) → РС | |
TRAPV | Якщо Ve = 1, то виконується аналогічно до TRAP; якщо Ve = 0, то команда не виконується | |
ILLEGAL | Якщо код команди є помилковий, то виконується аналогічно до TRAP | |
RTE | (SP) → SR; SR + 2 → (SP); SP → PC; (SP) + 4 → SP | |
NOР | (PC) + 2 → PC; | |
STOP #WS | WS → SR і зупин програми | |
RESET | Встановлення початкового стану пристроїв МПС | |
CHK <EA>,Dn | Якщо Dn < 0 або Dn > <EA>, то виконується аналогічно до TRAP | Непряме регістрове (усі види), пряме (коротке та довге), відносне, відносне з індексуванням |
LINK An,dS | (SP) – 4 → (SP); An → SP; (SP) → An; (SP) + dS → (SP) | |
UNLK An | An → SP; (SP) → An; (SP) + 4 → (SP) |
Контрольні питання:
1 Які прапорці виставляє МП фірми Motorola при виконуванні команд пересилань?
2 Які прапорці виставляються при виконуванні арифметичних операцій?
3 Які прапорці виставляються при виконуванні логічних операцій?
4 З якою метою використовується команда СМР <src>,<dst> і в який спосіб вона виконується?
5 Наведіть приклади виконування команд ASL та LSL з операндом, який дорівнює $82 на два розряди і поясність результати.
6 З якою метою виконуються команди циклічних зсувів?
7 Поясніть, в який спосіб виконується команда CMPM (A3)+,(A4)+.
8 Де вміщується адреса переходу при виконуванні команди JMP <EA>?
9 У який спосіб формується адреса нового вмісту програмного лічильника РС при виконуванні команди BRA ds?
10 Які умови можна зазначати у команді умовного переходу Всс?
11 У який спосіб перевіряють команди DBсс та DBF умову завершення циклу, задану в команді, яка виконує вихід з циклу?
Контрольні питання підвищеної складності:
1 Які дії МП МС68ххх спричинює виконування команди виклику ПП JSR <EA>?
2 Які дії МП МС68ххх спричинює виконування команди повернення з ПП RTS?
3 Яка команда перевіряє потрапляння заданого операнда до зазначеного в ній діапазону значень і в який спосіб вона працює?
4 Які команди виконують операції з бітовими полями і в який спосіб вони виконуються?