Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
12_100229_1_70131.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

1.3. Команды пересылки данных

Простейшими командами являются команды пересылки данных. Список

этих команд приведен в табл. 1.2. Рассмотрим каждую из команд подробнее на

простых примерах.

Таблица 1.2

Команды пересылки данных

TSTA

CLRA

TAB

PSHA

TSTB

CLRB

ТВА

PULA

TST*

CLR*

TAP

PSHB

LDAA**

STAA***

ТРА

PULB

LDAB**

STAB***

TSX

PSHX

LDD**

STD***

TXS

PULX

LDX**

STX***

TSY

PSHY

LDY**

STY***

TYS

PULY

LDS**

STS***

XGDX

XGDY

Примечания:

* – команды, использующие расширенную и индексную адресацию;

** – команды, использующие непосредственную, прямую, расширенную и ин-

дексную адресацию;

*** – команды, использующие прямую, расширенную и индексную адресацию.

Команды TSTA, TSTB и TST служат для установки регистра статуса в со-

ответствии с содержимым регистра А, В или ячейки памяти соответственно.

Далее результат может быть использован в командах условного перехода. Зане-

16

сите в регистр А значение $00 и выполните в поша-

говом режиме команду TSTA. Теперь посмотрите на

содержимое регистра статуса: должен быть уста-

новлен флаг нуля (Z) и сброшены флаг

отрицательного результата (М), переноса (С) и

переполнения (V). Проведите подобный опыт при

других значениях регистра А, обращая внимание на

различное состояние регистра статуса.

Рассмотрим команды загрузки в регистр содер-

жимого ячейки памяти:

org $8000

ldab $56

;

загрузить в регистр В содержимое ячейки $56,

;

используя прямую адресацию

ldy $c800

;

загрузить в регистр Y данные, расположенные по адресу

;

$с800 (предыдущую команду)

ldx #$1f00

;

установить регистр X

ldaa $03,х

;

считать информацию

Работа команд очистки регистров А и В и ячейки

памяти может быть проиллюстрирована на примере

следующей простой программы:

org $8000

clrb

;

очистить регистр В

ldx #$1f00

;

установить регистр X

clr $04,х

;

очистить

Теперь рассмотрим работу команд модификации

ячеек памяти. Для этого введем следующую про-

грамму:

org $8000

ldd #$AA55

;

установить в регистре D значение $АА55

ldx #$1f00

;

установить регистр X

clr $04,x ;

очистить

staa $04,x ;

записать

stab $04,х ;

записать

ldaa $03,х ;

считать информацию

staa $04,х ;

записать

В результате выполнения команды TAB значение аккумулятора А будет

17

присвоено аккумулятору В. Команда ТВА имеет

противоположный эффект. Следует отметить, что

регистр статуса принимает состояние, подобное

выполнению команд STAA, STAB.

Команда

ТРА

осуществляет

перенос

содержимого регистра CCR в аккумулятор А. Это

удобно, если после выполнения какой-либо

подпрограммы необходимо сохранить состояние

регистра статуса (см. также ТАР).

Группа команд работы с регистром стека имеет одну особенность: при пе-

реносе числа из индексного регистра регистр стека получает на единицу мень-

шее значение, при обратной пересылке происходит увеличение индексного ре-

гистра. Рассмотрим эти команды подробнее:

org $8000

ldx #$220

;

занести в регистр X адрес $220

xgdx

; обмен содержимого регистров X и D

clrb

;

очистить младший байт регистра D

xgdx

; X = $200

txs

; SP = $1ff

tsy

; Y = $200

Обмен содержимого индексного регистра и регистра D, как правило, ис-

пользуется при арифметических операциях (так как арифметические команды

работы с регистром D более развиты) или в случае необходимости 8-разрядного

доступа к содержимому индексного регистра, что может быть полезно, напри-

мер, для организации кольцевого буфера.

Команда ТАР осуществляет перенос значения

регистра А в соответствующие биты регистра

статуса CCR. При этом содержимое регистра А

остается неизменным. Флаг X, служащий для

маскирования прерывания XIRQ, в результате

выполнения этой команды может быть сброшен, но он не может быть уста-

новлен, если до выполнения команды флаг был сброшен.

org $8000

ldaa #$47

;

занести в регистр А новое cодержимое регистра статуса

tap

; установить новое значение регистра статуса: заметьте,

;

что флаг X не будет установлен

Команды работы со стеком, как правило, используются в подпрограммах

для того, чтобы сохранить значение одного или более регистров.

18

Алгоритм работы команд PSH таков:

1) в ячейку памяти, на которую указывает регистр

SP, записывается младший байт регистра-операнда;

2) значение регистра SP уменьшается на 1, указы-

вая на следующую свободную ячейку в области сте-

ка;

3) в случае двухбайтного операнда последовательность (1–2) повторяется со

старшим байтом операнда.

Команды группы PUL выполняют данную последовательность в обратном

порядке, увеличивая значение регистра SP.

Следующая программа демонстрирует, каким образом можно сохранить

неизменными все внутренние регистры ОЭВМ (рекомендуется также обратить

внимание на содержимое стека):

org $8000

psha

; последовательно сохраняем регистры в стеке: А, В, X, Y, CCR

pshb

pshx

pshy

tpa

psha

ldaa #$20 ; выполняем какие-либо действия, в результате которых изменяется

ldx $12 ; содержимое регистров

ldy $1f03

clrb

xgdy

pula

;

восстанавливаем регистры: CCR, Y, X, В, А

tap

puly

pulx

pulb

pula

Следует отметить, что из-за особенностей эмуляции при выполнении про-

граммы в пошаговом режиме содержимое ячеек памяти, расположенных ниже

указателя, не сохраняется.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]