![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Безпосередня адресація припускає, що операнд (вхідний) знаходиться в пам'яті безпосередньо за кодом команди. Операнд звичайно являє собою константу, яку треба кудись переслати, до чого додати і т.д. Наприклад, команда може полягати в тому, щоб додати число 6 до вмісту якогось внутрішнього регістра процесора. Це число 6 буде розташовуватися в пам'яті, усередині програми в адресі, що слідує за кодом даної команди додавання.
У командах безпосередньої адресації операнд розташовується в байтах, що слідують безпосередньо за операційним кодом. Байт або байти, наступні за операційним кодом, частіше є операндами, а не значенням адреси. У цьому випадку дійсний адресу команди визначається знаком # прямо вказує на байт, наступний за операційним кодом. Безпосереднє значення обмежується одним або двома байтами, в залежності від розміру регістра, пов'язаного з командою. У таблиці 1 перераховані команди які використовують безпосередню адресацію.
Команди безпосередньої адресації, пов'язані з використанням індексного регістра (H: X), є трьохбайтовими: один байт - операційний код, два байти містять безпосередні дані. Нижченаведений приклад містить дві безпосередні команди: AIX (скласти безпосереднє значення з H: X) і CPHX (порівняти H: X з безпосереднім значенням). H: X спочатку очищується і потім послідовно инкрементируется на 1 до значення $ FFFF. Після досягнення стану, що визначається CPHX, програма переходить до START і процес необмежено повторюється.
Машинний код | Мітка | Операція | Операнд | Комментар |
5F | START | CLRX | ; X = 0 | |
8C | CLRH | ; H = 0 | ||
AF01 | TAG | AIX | #1 | ; (H:X) = (H:X) + 1 |
65FFFF | CPHX | #$FFFF | ; Порівняння (H:X) с $FFFF | |
26F9 | BNE | TAG | ; Цикл виконуєтся до співпадіння значень | |
20F5 | BRA | START | ; Почати спочатку |
Таблиця 1. Команди безпосередньої адресації
Мнемоніка | Команда |
ADC | Скласти безпосереднє значення, з перенесенням, з акумулятором (Add with Carry Immediate Value to Accumulator) |
ADD | Скласти безпосереднє значення з акумулятором (Add Immediate Value to Accumulator) |
AIS | Скласти безпосереднє значення, зі знаком, з покажчиком стека (Add Immediate Value (Signed) to Stack Pointer) |
AIX | Скласти безпосереднє значення, зі знаком, з індексним регістром (Add Immediate Value (Signed) to Index Register (H: X)) |
AND | Виконати логічне AND безпосереднього значення з акумулятором (Logical AND Immediate Value with Accumulator) |
BIT | Виконати порозрядне порівняння безпосереднього значення з акумулятором (Bit Test Immediate Value with Accumulator) |
CBEQA | Порівняти акумулятор з безпосереднім значенням і перейти якщо дорівнює (Compare A with Immediate and Branch if Equal) |
CBEQX | Порівняти молодший байт індексного регістра з безпосереднім значенням і перейти якщо дорівнює (Compare X (Index Register Low) with Immediate and Branch if Equal) |
CMP | Порівняти акумулятор з безпосереднім значенням (Compare Accumulator with Immediate Value) |
CPHX | Порівняти індексний регістр з безпосереднім значенням (Compare Index Register (H: X) with Immediate Value) |
CPX | Порівняти молодший байт індексного регістра з безпосереднім значенням (Compare X (Index Register Low) with Immediate Value) |
EOR | Виконати виключаюче OR безпосереднього значення з акумулятором (Exclusive OR Immediate Value with Accumulator) |
LDA | Завантажити акумулятор безпосереднім значенням (Load Accumulator from Immediate Value) |
LDHX | Завантажити індексний регістр безпосереднім значенням (Load Index Register (H: X) with Immediate Value) |
LDX | Завантажити молодший байт індексного регістра безпосереднім значенням (Load X (Index Register Low) from Immediate Value) |
ORA | Виконати включаюче OR безпосереднього значення (Inclusive OR Immediate Value) |
SBC | Відняти безпосереднє значення з перенесенням (Subtract with Carry Immediate Value) |
SUB | Відняти безпосереднє значення (Subtract Immediate Value) |
Дата публикования: 2014-11-26; Прочитано: 483 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!