Главная страница Комод Кухня Компьютерный стол Плетеная мебель Японский стиль Литература
Главная  Кремниевые микросхемы 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 [ 53 ] 54 55 56 57 58 59 60

к однобайтным командам относятся следующие:

Мнемокод К'Д операции

INC 16

СОМР 17

BRK 00

Теперь программу можно представить в шестнадцатеричных кодах. Начиная с первой команды, можно проследить всю программу, назначая каждой команде ячейку в памяти. Если код операции для первой команды помещен в ячейку OOOOiG, то, поскольку эта команда занимает 3 байта, код операции для следующей команды должен быть помещен в ячейку 0003i6. Разместив таким образом все команды, определяя их местоположение в памяти (в ячейках с шестнадцатеричным адресом) с учетом длины команды, получим следующее:

Адрес

Метка

Мнемокод

Символический адрес

START

LDA,

STORE

0003

ADD, STA,

STORE

0003

STORE

0009

LCA,

STORE

OOOD

STA,

STORE

0010

ООП

0012

ADD,

STORE

0015

BR NZ,

START

0018

Каждому символическому адресу необходимо поставить в соответствие реальный шестнадцатеричный адрес. Очевидно, для символического адреса START (предпоследняя строка) такой адрес уже определен: OOOOie. Для остальных: KEY STORE, SUM STORE и NUM STORE пгестнадцатеричным адресом может быть любой, больший чем 0018i6 (т. е. любой, до сих пор не исгюльзован-ныи, адрес). Пусть, например, их адресами будут соответственно: 0064)6, 0065i6 и 0066i6 Тогда получим:

KEY STORE 0064

NUM STORE ч-* 0065 START ч-* ООШ

SUM STORE ч~> 0066

Остается снова просмотреть программу и представить каждую команду (код операции и адрес, если требуется) в шестнадцатеричном коде (с учетом списка шестнад-



u>

OCBI

oosz

ocss

00S5

ooss

Bos-

noes

nas/i

006B

OOBC

nnsB

OOBE

ааю aaif aoiz aats oon cms aow ooa aoie aais

aoiB

aotc

oatB

aaiE

aaiF

0001

oooz

0004

0005

0006

0007

aaoa

oaoA

aaac

OOOB

none

oaof

Рис. 11.5. Модель памяти с шестнадцатеричными кодами в виде стеллажа

цатеричных кодов операций для данного микропроцессора) против каждой ячейки. Если в данную микро-ЭВМ вводятся только двоичные коды, придется воспользоваться двоичным представлением вместо шестнадцатерич-ного.

1аким образом, программа примет следующий вид:

Адрес

Содержимое памяти

ШОО

AD65

0003

6D66

0006

8D66

0009

AD65

000D

8D65

0010

ООП

0012

0015

0)!8

Первое значение N(0) должно храниться в ячейке 0065i6, первое значение S (также 0) - в ячейке 0066i6, а число 2110-в ячейке 0064,6:

00о4 ООО 5 006G

Г) 00 00

Заметим, что число 21io cooiBCктвует 15,6. Окончательное размещение программы и данных в памяти указано на рис. 11.5.



Как осуществляется прогон этой программы и что при этом происходит внутри микропроцессора?

Сначала счетчик команд устанавливается в состояние, соответствующее номеру ячейки, в которой размещена первая команда (OOOOie). При прогоне программы из этой ячейки выбирается код операции первой команды ADi6 со следующим за ним адресом (сначала самый младший байт) из ячеек 0002i6 и 0003i6 по мере того, как на это укажет счетчик команд. После выполнения первой команды начальное значение N(0), которое хранится в ячейке памяти 0065i6, загружается в аккумулятор.

Далее аналогичным образом делается выборка следующего кода операции GDie и адреса OO6616, и после выполнения этой команды начальное значение S(0), которое хранится в ячейке памяти OO6616, прибавляется к числу N, содержащемуся в аккумуляторе.

Результатом выполнения первых двух команд S+N (все еще нуль в данный момент) является новая сумма S, которая и будет теперь находиться в аккумуляторе. Далее вызывается следующая команда 8D6600, после выполнения которой новая сумма S посылается на хранение обратно в ячейку OO6616 на место прежнего значения S. Затем вызывается очередная команда AD 6500, и после ее выполнения начальное значение N, пока еще хранящееся в ячейке 0065i6, переписывается в аккумулятор на место находящегося там числа.

Следующая вызываемая команда INC содержимого аккумулятора с кодом операции I616 выполняет процедуру приращения 1 к числу N. Аккумулятор теперь содержит второе значение N (т. е. N-fl), называемое новым N. Когда выбирается очередная команда 8D 6500, то после ее выполнения новое значение N заносится обратно в память на место прежнего содержимого ячейки 0065i6.

Аккумулятор все еще сохраняет это новое значение N, поскольку оно не изменилось со времени выполнения команды INC. Выбирается из памяти и выполняется очередная команда с кодом операции 17le, вызывающая поразрядное инвертирование содержимого аккумулятора. Следующая за ней команда I616 прибавляет единицу к содержимому аккумулятора. В аккумуляторе теперь записан дополнительный код второго значения N (обратный код+1 порождает дополнительный код),



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 [ 53 ] 54 55 56 57 58 59 60

© 2007 EPM-IBF.RU
Копирование материалов разрешено в случае наличия письменного разрешения