![]() |
![]() |
![]() |
![]() |
Главная Кремниевые микросхемы 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 (предпоследняя строка) такой адрес уже определен: OOOOie. Для остальных: KEY STORE, SUM STORE и NUM STORE пгестнадцатеричным адресом может быть любой, больший чем 0018i6 (т. е. любой, до сих пор не исгюльзован-ныи, адрес). Пусть, например, их адресами будут соответственно: 0064)6, 0065i6 и 0066i6 Тогда получим: KEY STORE 0064 NUM STORE ч-* 0065 START ч-* ООШ SUM STORE ч~> 0066 Остается снова просмотреть программу и представить каждую команду (код операции и адрес, если требуется) в шестнадцатеричном коде (с учетом списка шестнад-
ааю 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аким образом, программа примет следующий вид:
Первое значение 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 порождает дополнительный код), |
© 2007 EPM-IBF.RU
Копирование материалов разрешено в случае наличия письменного разрешения |