Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

тема команд МП К1801

Работа добавлена на сайт samzan.net: 2016-03-30

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.5.2024

PAGE   \* MERGEFORMAT 2

[1]
Цель работы

[2] Задание

[3] Подпрограмма и стек

[4] Выполнение арифметических операций

[4.1] Сложение

[4.2] Умножение

[5] Способы адресации и система команд МП К1801.

[5.1] Устройство МП К1801

[5.1.1] Автоинкрементная адресация (код 2)

[5.1.2] Косвенная автоинкрементная адресация (код 3).

[5.1.3] Автодекрементная адресация (код 4)

[5.1.4] Косвенная автодекрементная адресация (код 5)

[5.1.5] Индексная адресация (код 6)

[5.1.6] Косвенная индексная адресация (код 7)

[6] Рекомендации для выполнения задания по эмуляции команд МП 1801.

[7]
Контрольные вопросы

[8]
Список литературы


Цель работы

Целью работы является получение практических навыков использования микроЭВМ МП БИС КР580ВМ80 (i8080) для выполнения арифметических операций и работой с подпрограммами, а также для изучения различных способов адресации.

Задание

  1.  Разработать подпрограмму сложения однобайтных чисел с получением двухбайтного результата. Наименование подпрограммы – ADDB. Однобайтные числа располагаются в оперативной памяти микроЭВМ в виде массива, имеющего адрес первого элемента равным 0B00h. Количество элементов массива должно содержаться в регистре B. Старший байт результата должен быть расположен в регистре С, младший – в A. Осуществить вызов разработанной подпрограммы, протестировать корректность её работы на произвольном наборе чисел.
  2.  Разработать подпрограмму умножения однобайтных чисел с получением двухбайтного результата. Наименование подпрограммы – MPL. Входные параметры: регистр D – множимое, регистр Е – множитель. Результат перемножения записывается в регистровой паре BC. Осуществить вызов разработанной подпрограммы, протестировать корректность её работы.
  3.  Используя теоретический материал раздела настоящего методического пособия  «Способы адресации и система команд МП К1801», написать и отладить на эмуляторе Manef программу эмуляции команды процессора К1801 командами процессора КР580ИК80. Работу команды необходимо эмулировать для всех восьми способов адресации. Выбор команды осуществить по таблице 1 в соответствии с номером студента в списке журнала группы по модулю 22.

Подпрограмма и стек

Память микро-ЭВМ, построенной на основе МПК серии К580, может иметь не более 65536 однобайтных ячеек. Учитывая ограниченные возможности памяти при разработке программ, нужно стараться сделать их как можно короче. С этой целью часть программы, которая неоднократно повторяется, или программа, которая часто используется, могут быть оформлены в виде подпрограмм – последовательностей команд, выполнение которых может быть вызвано из любого места программы любое количество раз. Процесс передачи управления к подпрограмме называется ее вызовом. Данные и адреса, требуемые для работы подпрограммы, называются входными параметрами. Результаты работы подпрограммы, передаваемые по окончании ее работы в основную программу, называются выходными параметрами.

Для вызова подпрограммы и возврата из них используются команды CALL <A2><A1> и RET.

Команда CALL <A2><A1> загружает в программный счетчик МП БИС содержимое байтов <A2><A1>, записанных в последующих двух адресах памяти после адреса, где записан код команды. Содержимое байта <A2> записывается в младший байт PCL программного счетчика, а третий байт <A1> команды – в старший байт PCH программного счетчика, при этом МП БИС автоматически сохраняет в стеке адрес основной программы, к которому она будет обращаться после выполнения подпрограммы.

Стек – специально организованная область ОЗУ, задействованная в микро-ЭВМ для временного хранения данных или адресов. Число, записанное в стек последним, извлекается из него первым.

Команда RET помещает в программный счетчик последнее записанное на данный момент в стеке число. После этого выполнение программы будет осуществляться с этого адреса. Любая подпрограмма должна кончаться командой RET.

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

Существуют также команды условного вызова подпрограмм и возврата из них. Они позволяют вызвать подпрограмму и возвратиться из нее по определенному состоянию заданных разрядов регистра признаков (аналогично командам условных переходов). Все команды условного вызова подпрограммы – трехбайтные, во втором и третьем байтах сообщается начальный адрес подпрограммы. Команды вызова подпрограмм и возврата из них используют внутренний регистр МП БИС SP (Stack Pointer) для адресации к стеку.

Помимо команд вызова подпрограмм и возврата из них со стеком можно обмениваться с помощью команд PUSH <R> (записать в стек содержание обозначенного регистра МП БИС) и POP <R> (Записать данные из стека в обозначенный регистр МП БИС). Эти команды являются однобайтными. В качестве операнда R выступает регистровая пара микропроцессора, указанная названием первого регистра из этой пары.

При записи в стек содержимого пары регистров или программного счетчика по адресу SP-1 записывается содержимое старшего регистра из указанной пары или старший байт PCH программного счетчика, а по адресу SP-2 в стек записывается содержимое младшего регистра из указанной пары младшего байта PCL программного счетчика.

При записи из стека данных в пару регистров или программный счетчик в младший регистр пары или PCL записывается число из адреса, указанного в указателе стека SP, а в старший регистр пары или PCH – число, записанное по адресу SP+1. В результате выполнения команды содержимое указателя стека SP увеличивается на два. Данные в памяти не изменяются, а лишь происходит их чтение и увеличение содержимого SP.

Таким образом, при записи данных адреса стека растут от больших к меньшим, а указатель стека SP всегда содержит последний адрес стека, в котором записано число. При разработке программ необходимо первоначально назначать область стека, записывая в SP с помощью команды  LXI SP, <A2><A1> или команды SPHL.

Все операции со стеком должны быть сбалансированы, т.е. каждая подпрограмма должна содержать равное количество команд PUSH <R> и POP <R> и оканчиваться командой RET.

В противном случае выполнение команды RET в конце подпрограммы приведет к записи в программный счетчик случайного числа из стека. Адрес возврата в основную программу будет потерян и нарушится последовательность ее выполнения.

Как правило, в начале каждой подпрограммы сохраняют в стеке содержимое всех задействованных при ее выполнении регистров с помощью команд PUSH <R>. В конце подпрограммы восстановление содержимого регистров осуществляется с помощью команд POP <R> и в обратной последовательности по отношению к их записи в стек.

Обычно в виде подпрограмм записываются многократно используемые фрагменты программ, например подпрограмма выдачи звукового сигнала, подпрограмма обслуживания клавиатуры и дисплея и т.д.

Алгоритм работы простой подпрограммы временной задержки приведен на рис. 1. Общее время задержки вычисляется по формуле , где N1 – число, первоначально записанное в счетчике. В качестве счетчика выбран регистр B, в который записывается число N1 из регистра C.

Команда NOP нужна для увеличения времени выполнения цикла, а, следовательно, и общей задержки. Вместо команды NOP может быть записана любая последовательность команд, выполнение которых не изменяет содержимого регистров микропроцессора. Время записи числа N1 в регистр B и  возврата из подпрограммы t1+ t5 фиксировано и в цикл не входит. Минимальная задержка для приведенной подпрограммы определяется при N1 = 0,1 и равна . Максимальная задержка имеет место при N1 = 00 и вычисляется по формуле        .

Выполнение арифметических операций

Сложение

Микро-ЭВМ может проводить арифметические операции с числами с двойной или большей длиной машинного слова. Так как МП имеет 8-разрядное АЛУ, то операции с такими числами должны проводиться по байтам, начиная с младших байтов. Например, операция сложения чисел 17F5h + 3411h будет проводиться в следующем виде:

Старший байт

Флаг СY

Младший байт

Числа

00010111

+

00110100

              +1

01001100

1

11110101

+

00010001

00000110

17F5

+

3411

4C06

Подпрограмма сложения массива однобайтных чисел с получением двухбайтного результата (задание 1) может быть реализована в соответствии с алгоритмом, представленном блок-схемой на рисунке 2-а.

Умножение

Существует несколько алгоритмов умножения чисел. При первом алгоритме умножение можно заменить многократным сложением, например 14*3 = 14+14+14. Существенный недостаток этого способа – значительная длительность процесса вычисления. При втором алгоритме умножение осуществляется в столбец. Этот алгоритм применим и для умножения двоичных чисел, например:

                  0110 = 610 

                  0011 = 310 

                  0110

                 0110 

                0000  

               0000           

              00010010 = 1810 .

При вычислении результата по второму алгоритму необходимо осуществить многократное суммирование со сдвигом влево множимого при одновременной проверке содержимого разрядов множителя, начиная со стороны его младшего разряда. При этом если в очередном разряде множителя записана 1, то множимое прибавляется к сумме и сдвигается влево на 1 разряд, а если в разряде записан 0, то произойдет только сдвиг множимого. Сдвиг множимого влево можно заменить сдвигом суммы вправо. По этому алгоритму (рис. 2., б) может работать подпрограмма умножения двух однобайтных чисел с получением двухбайтного результата (задание 2).

Способы адресации и система команд МП К1801.

Устройство МП К1801

В состав МП К1801 входит АЛУ, регистры общего назначения РОН, регистр состояния процессора РСП и устройство управления магистралью УУМ.

Рис. 3. Структурная схема МП К1801

МП содержит восемь (R0 … R7) 16-разрядных РОН, которые могут использоваться как накапливающие, индексные с автоувеличением и автоуменьшением, указатели стеков для временного запоминания данных в оперативной памяти, а также для выборки операндов и записи результатов при выполнении арифметических и логических операций. Регистр R6(SP) используется как аппаратный указатель стека и содержит адрес последней заполненной ячейки стека. Система автоматически изменяет его содержимое при обработке внутренних и внешних прерываний и при работе с подпрограммами. Регистр R7 (PC) является счетчиком команд, который после выборки очередной команды всегда содержит адрес следующей выбираемой команды. Обычно он служит только для адресации команд, а не как накапливающий регистр.

Обмен информацией в упрощенном виде показан на рисунке выше. Поток данных с системной магистрали через УУМ поступает в АЛУ и через его выходные цепи – к РОН. Затем информация опять поступает в АЛУ и через его выходные цепи – к УУМ и системной магистрали.

Возможны следующие виды передачи данных : регистр – регистр, регистр – память, память – регистр, память – память. В МП имеется отдельный 8-разрядный регистр состояния процессора РСП (PSR). Разряд 7 служит для управления разрешением (равен 0) или запрещением (равен 1) прерываний от внешних устройств. Разряды 6 и 5 в МП К1801ВМ1 не используются, а в К1801ВМ3 разряды 7-5 задают приоритет МП по отношению к другим источникам прерывания.

Разряд 4(T) используется системным программным обеспечением при отладке программ (пошаговое исполнение программы). Разряды 3 … 0 (N, Z, V, C) содержат информацию о результатах выполнения предыдущих операций: N=1 – отрицательный результат, Z=1 – нулевой результат, V=1 – переполнение при выполнении арифметических операций, C=1 – перенос из 15-го разряда.

Таблица 1. Команды процессора К1801 с одним операндом

Номер

Мнемоническое обозначение

Операнд

Описание

1

CLRB

dst

Сброс операнда dst

2

COMB

dst

dst =

3

INCB

dst

dst = dst+1

4

DECB

dst

dst= dst-1

5

NEGB

dst

dst = -dst

6

ASRB

dst

Арифметический сдвиг dst вправо

7

ASLB

dst

Арифметический сдвиг dst влево

8

RORB

dst

Циклический сдвиг dst вправо через разряд C

9

ROLB

dst

Циклический сдвиг dst влево через разряд C

10

ADCB

dst

dst+C  dst

11

SBCB

dst

dst-C  dst

12

CLR

dst

Сброс операнда dst

13

COM

dst

dst =

14

INC

dst

dst = dst+1

15

DEC

dst

dst= dst-1

16

NEG

dst

dst = -dst

17

ASR

dst

Арифметический сдвиг dst вправо

18

ASL

dst

Арифметический сдвиг dst влево

19

ROR

dst

Циклический сдвиг dst вправо через разряд C

20

ROL

dst

Циклический сдвиг dst влево через разряд C

21

ADC

dst

dst+C  dst

22

SBC

dst

dst-C  dst

Команды с одним операндом называются одноадресными, а с двумя – двухадресными. Структура одноадресной команды представлена на рис. 4-а, а двухадресной – на 4-б. В настоящей работе, в задании 3, предлагается выполнить эмуляцию одноадресной команды.

Рис. 4. Структура команд МП К1801

Под поле «Способ адресации» отведено 3 бита, которые кодируют один из 8 возможных в данной архитектуре способов адресации (см.            Рис. 5).


Способы адресации МП К1801

Регистровая адресация (код 0)

В качестве операнда используется содержимое адресуемого регистра. Это самый простой и наиболее быстрый способ адресации, не требующий обращения к памяти.

Пример

РС

Машинный код

Мнемокод

Описание

1000

MOV R1, R0

R1  R0

До исполнения

РС

Память

РОН

1000

010100

000020

R0

003000

R1

После исполнения

Память

РОН

1000

010100

003000

R0

003000

R1

Примечание: при описании МП К1801 принята 8-ричная система счисления.

Иллюстративно, регистровая адресация представляется следующим образом:

Рис 6. Регистровая адресация

Регистровая косвенная адресация (код 1) 

Содержимое адресуемого регистра используется как адрес операнда.

Пример

РС

Машинный код

Мнемокод

Описание

1000

CLR wR3

0  wR3

До исполнения

Память

РОН

1000

005013

002000

2000

000700

После исполнения

Память

РОН

1000

005013

002000

2000

000000

Схематически, этот тип адресации имеет вид, представленный на рис. 7.

Рис 7. Регистровая косвенная адресация

Автоинкрементная адресация (код 2)

Содержимое адресуемого регистра является адресом операнда. После получения адреса содержимое регистра автоматически увеличивается на 1 при байтовых операциях и на 2 при операциях со словами. Содержимое регистров R6 (SP) и R7 (PC) всегда увеличивается на 2. Этот способ адресации удобен при обработке таблиц (последовательно расположенных в памяти данных).

Пример

РС

Машинный код

Мнемокод

Описание

1000

CLR

0  

До исполнения

Память

РОН

1000

005023

001300

R3

1300

007200

1302

После исполнения

Память

РОН

1000

005023

001302

R3

1300

000000

1302

Схематически, этот тип адресации имеет вид, представленный на рис. 8.

Рис 8. Автоинкрементная адресация

Косвенная автоинкрементная адресация (код 3).

Содержимое регистра задает указатель адреса операнда, затем содержимое регистра увеличивается на 2 (в том числе и для байтовых команд).

Пример

РС

Машинный код

Мнемокод

Описание

1000

CLR w

0  w

До исполнения

Память

РОН

1000

005032

001300

R2

1300

004000

4000

005730

После исполнения

Память

РОН

1000

005032

001302

R2

1300

004000

1302

4000

000000

Этот способ удобен для таблиц, состоящих из адресов. Схематически, этот тип адресации имеет вид, представленный на рис. 9.

Рис 9. Косвенная автоинкрементная адресация

Автодекрементная адресация (код 4)

Содержимое регистра сначала уменьшается на 1 для байтовых операций и на 2 для операции со словами, затем используется как адрес операнда. Содержимое регистров R6 (SP) и R7 (PC) уменьшается всегда на 2.

Пример

РС

Машинный код

Мнемокод

Описание

1000

CLR

0  

До исполнения

Память

РОН

1000

005043

001300

R3

1276

032650

1300

После исполнения

Память

РОН

1000

005043

001276

R3

1276

000000

1300

Схематически, этот тип адресации имеет вид, представленный на рис. 10.

Рис 9. Автодекрементная адресация

Косвенная автодекрементная адресация (код 5)

Содержимое регистра уменьшается на 2 и после этого задает указатель адреса операнда.

Пример

РС

Машинный код

Мнемокод

Описание

1000

CLR w-(R4)

0  w-(R4)

До исполнения

Память

РОН

1000

005054

001400

R4

1376

002600

1400

2600

011100

После исполнения

Память

РОН

1000

005054

001376

R4

1376

002600

1400

2600

000000

Схематически, этот тип адресации имеет вид, представленный на рис. 11.

 

Рис 11. Косвенная автодекрементная адресация

Индексная адресация (код 6)

Содержимое адресуемого регистра складывается с индексным словом, следующим за командой, и используется как адрес операнда. Содержимое индексного слова и адресуемого регистра (за исключением РС) после выполнения команды не изменяется.

Пример

РС

Машинный код

Мнемокод

Описание

1000

005065

CLR 300(R5)

0  300(R5)

1002

000300

0  (300+R5)

До исполнения

Память

РОН

1000

005065

1002

000300

001400

R5

1700

012345

После исполнения

Память

РОН

1000

005065

1002

000300

001400

R5

1700

000000

Схематически, этот тип адресации имеет вид, представленный на рис. 12.

Рис 12. Индексная адресация

Косвенная индексная адресация (код 7)

Содержимое индексного регистра складывается с индексным словом, следующим за командой, и сумма задает указатель адреса операнда.

Пример

РС

Машинный код

Мнемокод

Описание

1000

005072

CLR w400(R2)

0  w400(R2)

000400

0  w(400+R2)

До исполнения

Память

РОН

1000

005072

003000

R2

1002

000400

3400

005200

5200

123456

После исполнения

Память

РОН

1000

005072

003000

R2

1002

000400

3400

005200

5200

000000

Схематически, этот тип адресации имеет вид, представленный на рис. 13.

 

Рис 13. Косвенная индексная адресация

Рекомендации для выполнения задания по эмуляции команд МП 1801.

Поскольку при выполнении команд процессор оперирует с регистрами R0 … R7, целесообразно выделить в памяти 8 ячеек размером в одно слово и обозначить их мнемоническими обозначениями R0 … R7:

R0:  DW

R1:  DW

R2:  DW

R3:  DW

R4:  DW

R5:  DW

R6:  DW

R7:  DW

Также необходимо выделить место в виде двухбайтовой ячейки для регистра команд. Обозначим ее как RK:

RK: DW

Теперь доступ к регистрам R0 … R7 может осуществляться по их мнемоническому обозначению. Но иногда имя регистра может быть неизвестно заранее, если, например, его номер вычисляется в программе. Чтобы получить доступ к содержимому регистра по его номеру необходимо ввести т.н. базовый адрес и вести отсчет от него, учитывая, что регистры расположены в памяти последовательно, начиная с R0 и далее по возрастанию номера. Обозначим базовый адрес мнемоникой BASE.

BASE:  DW  R0

Теперь адрес регистра Rn (где n – номер регистра: 0,1,…7) может быть вычислен как BASE+2*n.

Далее рассмотрим содержимое регистра команд (рис. 4). Здесь reg – двоичное представление номера регистра, с которым оперирует команда. Для извлечения номера регистра следует выполнить побитовую операцию логического умножения содержимого  регистра команд с маской 0000000000000111. Полученное число и будет номером регистра. Для извлечения способа адресации следует таким же образом наложить маску на биты 3,4,5 и затем сдвинуть результат вправо на три разряда, например трехкратным выполнением команды RRC или RAR. Здесь следует помнить, что при выполнении команды RRC в старший разряд числа попадает значение флага переноса С, которое может быть ненулевым. Чтобы избежать ошибок, можно сначала произвести тройной сдвиг, а затем обнулить все разряды кроме обозначающих способ адресации (с помощью маски 0000000000000111).

Рис 14. Алгоритм работы программы, эмулирующей выполнение команды МП К1801

После выполнения описанных выше операций можно получить информацию о том, с каким регистром оперирует команда и какой способ адресации необходимо применить. Далее можно руководствоваться блок-схемой, представленной на рис. 14 (литерой A обозначено числовое значение способа адресации) для реализации программы, эмулирующей выполнение команды микропроцессора МП К1801.


Контрольные вопросы

1. Что такое подпрограмма, каковы её цели?

Ответ

2. Что такое стек?

Ответ

3. Изложите алгоритм работы подпрограммы многобайтного сложения для МП К580 (i8080).

Ответ

4. Изложите алгоритм работы подпрограммы умножения для МП К580 (i8080).

Ответ

5. Изложите основы архитектуры МП К1801.

Ответ

6. Какова структура машинного кода команды МП К1801?

Ответ

7. Изложите прямой и косвенный регистровый способ адресации для МП К1801.

Ответ

8. Изложите прямой и косвенный автоинкрементный способ адресации для МП К1801.

Ответ

9. Изложите прямой и косвенный автодекрементный способ адресации для МП К1801.

Ответ

10. Изложите прямой и косвенный индексный способ адресации для МП К1801?

Ответ


Список литературы

  1.  Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы. М.: Радио и связь, 1986.
  2.  Балашов Е.О., Пузанков Д.В. Микропроцессоры и микропроцессорные системы. М.: Радио и связь, 1981.
  3.  Соучек Б. Микропроцессоры и микро-ЭВМ; пер. с англ. – М.: Советское радио, 1979.
  4.  Прангишвили И.В. Микропроцессоры и микро-ЭВМ. – М.: Энергия, 1979.
  5.  Микропроцессоры в 3-х книгах / под редакцией А.Н. Прескухина. М.: Высшая школа, 1986.
  6.  Сичановский Лж.У. Программирование на МАКРО-II и организация PDP-II: Пер.  с англ. - М.: Радио и связь, 1985.  –  136 с.
  7.  Микро-ЭВМ "Электроника НМС 11100.1" (МС 1201). Техническое описание. ЩИО.305.019.ТО, 1984. – С. 81-83.
  8.  Техническое описание микро-ЭВМ "Электроника-60": Центральный процессор М2. Техническое описание и конструкция по эксплуатации 3.858.382.ТО.


t5

t4

t3

t2

t1

временной задержки

Рис.1. Алгоритм простой подпрограммы

Да

Выход из подпрограммы

?

=0

на 1

B

регистра

Уменьшить содержимое

Нет операции - NOP

B

в регистр

C

из регистра

N1 

Записать число

Способ

адресации

reg

Код операции

15

6

5

3

2

0

0

2

3

5

6

15

reg

адресации

Способ

reg

адресации

Способ

8

9

11

12

КОП

КОП

(а)

(б)

Признак прямой(0) или

косвенной (1) адресации

Адресации:

00 –

регистровая

01 –

автоинкрементная

10 –

автодекрементная

11 –  

 индексная

Команда

Рис5. Кодирование способов адресации МП К1801

Операнд

Операнд

для байтов

-1

для слов

-2

Адрес

Команда

reg

Команда

Адрес

-2

Адрес

Операнд

Операнд

+

Адрес

Команда

reg

Адрес

+

Адрес

Адрес

Команда

Операнд

reg

Индекс

Команда

Адрес

указателя

Адрес

reg

+2

Операнд




1. Точные курсовые системы ТКС И ГМК
2. Структура уверенности и когнитивные стили
3. деятельность объединенных в определенную систему субъектов управления направленная на достижение целей ф
4. ДИМенделеев не наукой единой
5. Модификационная изменчивость.html
6. Осн источником дохв большинства граждан явл зар плата хотя ее удельный вес в общ совокупности дохв снизилс
7. Реферат- Виды форм собственности предприятий
8. Конституционно-правовой статус правительства
9. между не менее значимыми в мире топливного бизнеса компаниями BP moco и RCO tlntic Richfield Compny
10. ~а~тар 2014 ж Атырау индустриалды колледжіні~ директоры Х
11. перевозки грузов-пассажиров несколькими видами транспорта сухопутные морские воздушные Мультимодальны
12. Правила поведения и действия населения в очагах поражения
13. ФИЛОСОФИЯ для студентов всех специальностей
14. кому как повезёт
15. Вчителі-новатори та їхні авторські технології у рамках педагогіки співпраці
16. тематике в 3 классеСложные уравнения подготовила учитель начальных классов Болучевская Ирина Ге
17. а пришелся на Первое марта
18. КУРСОВОЙ ПРОЕКТ Современный НДС- значение эффективность аудит по дисциплине- Налоги и налогооб
19. Про охорону навколишнього природного середовища 25
20. Использование материалов экологического аудита для экологического обучения