Motorola 6800 (пример 4)

Программа сложения чисел для МП Motorola 6800 использует оба аккумулятора и индексный регистр. В аккумуляторе А содержится сумма, в аккумуляторе В—счетчик, а в индексном регистре — указатель данных, т. е. адрес того элемента данных, который сейчас прибавляется к сумме.

М6800 пример 4

Эта команда обнуляет аккумулятор А. Она занимает одну ячейку памяти и выполняется за 2 мкс.

LDX # 42

Эта команда посылает в 16 битный индексный регистр содержимое двух последовательных ячеек памяти. Старшие 8 бит находятся в первой ячейке, младшие — во второй (это стандартный способ, который, однако, отличается от способа, используемого МП Intel 8080). Команда занимает три ячейки памяти и выполняется за 3 мкс.

ADDA X (или 0, X)

Данная команда осуществляет сложение содержимого ячейки памяти, адрес которой находится в индексном регистре, и содержимого аккумулятора. В ассемблерной программе можно не указывать нулевое смещение; фактический адрес равен нулю плюс содержимое индексного регистра. Команда занимает две ячейки памяти и выполняется за 5 мкс; центральный процессор должен затратить дополнительное время на прибавление 16-битного значения смещения, даже если это значение равно нулю.

INX

Команда прибавляет 1 к содержимому 16-битного индексного (сокращенно X) регистра. Она занимает одну ячейку памяти и выполняется за 5 мкс. Команда INX инкрементирует указатель данных так, что в нем оказывается следующий, больший на 1 адрес.

DECB

 

Шестнадцатиричный адрес ячейки памяти

Мнемонический код операции

Шестнадцатиричный код содержимого памяти

00

CLRA

4F

01

LDAB f 41

D6

02

 

41

03

LDX #.$42

СЕ

04

00

05

 

42

06

SUMD ADDAX

АВ

07

 

00

08

INX

08

09

DECB

BNE SUMD

26

OB

 

FA

ОС

STAA $ 40

97

0D

 

40

SWI

3F

Рис. 5.15. Результат ассемблирования программы суммирования массива для МП

Motorola 6800

 


По этой команде из содержитйого аккумулятора В вычитается 1 Команда занимает одну ячейку памяти и выполняется за 2 мкс. В кумуляторе В содержится число повторений цикла, которое осталось выполнить.

BNESUMD

♦ Эта команда в случае равенства нулю признака НУЛЬ вызывает передачу управления ячейке, помеченной именем SUMD. В. команде используется относительная адресация; значение смещения, записанное в дополнительном коде длиной 8 бит, представляет собой расстояние от ячейки памяти, находящейся непосредственно за командой ^перехода, до ячейки, куда передается управление. Команда BNE занимает две ячейки памяти и выполняется заЛ мкс. Как и при индексации, центральный процессор затрачивает дополнительное время на прибавление 16-битного смещения к счетчику команд. Команда BNE приводит к дополнению следующих действий:

(PC) = SUMD, если признак НУЛЬ - О

(PQ = (PC) — 2, если признак НУЛЬ = 1

Результат ассемблирования данной программы приведен на рис. 5:15. Новыми особенностями этой программы являются следующие:

1. Для загрузки индексного регистра зарезервированы две ячейки памяти (в четвертое и- п-ятой ячейках размещены числа 00 и 42 соответственно).

2. В шестой и седьмой ячейках размещены код индексируемой команды ADDA X и нулевое смещение.

3. В ячейках памя-т» А и В размещен кед команды BNE с относи-тетзиым емштнъм-.-Значение смещения * можне-^ределнть, если вычесть ^з-адреса* ячейка программной памяти, расположенной непосред-ственно*за/командой условногоперехода, адрес-ячейки* которая указа-нв-в^а^еет®е^>перанда в команде передача управления, т. е.

06 — ОС — 06 + F4 = FA.

Шестнадцатиричное вычитание выполняется путем сложения значена я^уменмнаемого с донел ии^ельным кодом вычитаемого.

На рис. 5.16 приведена часть трассы программы при использова-ти* паяных из-приведенного примера. Следует обратить внимание на - индексирование и косвенную адресацию.

Intel SOW (пример 4)

В программе суммирования ряда чисел для МП lntel 8080 в качестве счетчика использован РОНг & а.качестве адресного у&азателя -данных регистровая пара Н и L.



 



http://фламбе.рф/ лучшие рестораны и банкетные залы спб для свадьбы. . Сервис лэнд ремонт телефонов.