СТРУКТУРА И СИСТЕМА КОМАНД ПРОЦЕССОРНОГО МОДУЛЯ К-580
Цель работы: изучение шинной структуры и программной организации микропроцессора серии К-580 и исследование механизма передачи информации при выполнении различных команд.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
Структурная схема процессорного модуля приведена на рис 1. В Состав кристалла процессора ПР входит устройство синхронизации УС, устройство управления УУ, устройство обработки УО, блок регистров БР, буфер адреса БА и буфер данных БД.
В ходе выполнения программы процессор устанавливает адреса памяти на 16-разрядной шине адреса ША. По 8-разрядной двунаправленной шине данных из памяти принимаются коды команд и данные, по этой же шине данные записываются в память. Коды команд поступают по внутренней магистрали в регистр команд РК и дешифруются с помощью программируемой логической матрицы ПЛМ. Для каждой команды устройство управления УУ генерирует необходимую последовательность сигналов, управляющих обработкой и пересылкой информации в кристалле.
Устройство обработки УО с помощью АЛУ выполняет задаваемые кодом команды арифметические и логические операции. При этом один из операндов находится в аккумуляторе, а второй подается через внутреннюю магистраль из блока регистров БР или с шины данных ШД черед буфер данных БД. Результат операции фиксируется в аккумуляторе А, а признаки результата – в регистре F. Отдельные биты регистра F характеризуют результат операции следующим образом:
Разряд регистра F
| Обозначение признака
| Параметр результата, при котором признак = 1
|
| S
| 7 (старший) разряд результата равен 1
|
| Z
| Результат равен нулю
|
|
|
|
| W
| Перенос из разряда 3 результата
|
|
|
|
| Р
| Четный паритет (число единичных разрядов)
|
|
|
|
| Y
| Перенос из 7 разряда результата
| Примечание: биты 5 и 3 регистра F всегда равны нулю; бит 1 всегда равен 1.
16-разрядный счетчик команд PC находится в блоке регистров БР и после выборки каждого байта команды его значение увеличивается на 1. В случае программных переходов в PC заносится адрес перехода.
16-разрядный указатель стека SP используется для адресации находящейся в ОЗУ стековой области памяти. При записи информации в стек содержимое SP уменьшается на число переданных байт, а при выборке информации – увеличивается.
8-разрядные регистры H, L, D, F, B, C, W, Z используются для хранения промежуточных результатов. Заметим, что регистры W и Z, так же как регистр команд РК, не являются программно-управляемыми. Выдачей информации из регистров БР на шину адреса ША и обменом с шиной данных управляет УУ. В состав БР входит также не показанная на рис.1 схема инкремента – декремента, позволяющая увеличивать или уменьшать, содержимое регистров.
Рис. 2
Устройство синхронизации УС осуществляет тактирование работы кристалла и совместно с УУ – обработку и выдачу внешних управляющих сигналов.Функции управляющих сигналов рассмотрим на примере выполнения команды вывода OUT1CH, которая выдает байт информации из аккумулятора А в буферный регистр внешнего устройства с адресом 1С.Всечисла далее указываются в 16–ричном коде, при записи па ассемблере этот код заканчивается символом H (1СН).
Сама команда занимает в памяти 2 байта. В первом байте находится код команды D3, во втором – адрес внешнего устройства (1С). Будем для определенности полагать, что первый байт команды расположен в ячейке 007F, а содержимое аккумулятора перед выводом равно 3В.
Количество циклов, в течение которых выполняется каждая команда, равно числу необходимых обращений к памяти и/или внешним устройствам во время выполнения команды. Команда OUT выполняется в течение 3 циклов (рис. 2) – выборки кода операции, чтения адреса ВУ и вывода содержимого аккумулятора. Каждый цикл состоит из нескольких тактов. Тактирование осуществляется подачей внешних импульсов частотой 2 МГц на входы Ф1 и Ф2 с генератора тактовых импульсов ГТИ (рис. 1).
В первом такте Т1 каждого цикла на шине ША выставляется необходимый адрес, а на шину данных из УУ выдается байт состояния, который фиксируется во внешнем регистре состояния RS с помощью сигнала СХ. Байт состояния определяет тип выполняемого цикла и его отдельные биты S7 , ... , S0 имеет следующий смысл:
S0 = 1 цикл прерывания;
S1 = 0 выдача информации (в память или внешнее устройство);
S2 = 1 адрес стека (на ША выдано содержимое SP);
S3 = 1 цикл останова (после команды HLT);
S4 = 1 вывод информации на внешнее устройство;
S5 = 1 цикл выборки кода операции;
S6 = 1 ввод информации с внешнего устройства;
S7 = 1 чтение информации из памяти.
По схеме (рис.l) биты 4 и 6 регистра состояния RS используются для получения признака внешнего устройства – ПВУ/, а 0 бит – для получения сигнала подтверждения прерывания ПП/ (символ / отмечает, что сигнал активен по низкому уровню). В цикле выборки кода операции байт состояния равен А2 (активны биты 7 и 5).
Во втором такте Т2 процессор проверяет сигнал готовности ГОТ, который поступает с шины управления ШУ через ГТИ по цепи ГТ/– ГОТ. Если ГОТ = 0 (ГТ/=1), процессор переходит в фазу ожидания и выполнение программы приостанавливается до момента восстановления высокого уровня на входе ГОТ. В конце второго такта процессор выдает сигнал приема ПРМ или выдачи ВД/. Они определяют направление и момент передачи информации по шине данных (ШД). В цикле выборки кода операции выдается сигнал ПРМ, который используется для формирования системного сигнала прием ПР/ на шине управления. В цикле прерывания (S0 = 1) формируется системный сигнал подтверждения прерывания ПП/ – Sо ^ ПРМ. Если сигнал готовности ГОТ активен, процессор переходит к такту ТЗ, в котором завершается прием или выдача информации по шине данных.
Четвертый такт в цикле выборки используется для внутренних операций процессора, в частности, для дешифрования кода команды и межрегистровых передач. В некоторых командах такие передачи требуют пятого такта работы процессора.
Таким образом, в первом цикле – выборка кода операции – процессор считывает из PC и выдает на ША адрес первого байта команды 007F и принимает по ШД код операции DЗ (содержимое первого байта команды) в регистр команд РК. Во втором цикле – чтение памяти– процессор считывает из PC и выдает на ША адрес второго байта команды 0080 и принимает по ШД адрес внешнего устройства (ВУ) 1СH (содержимое второго байта команды, оно записывается в регистры W и Z). В третьем цикле –вывод информации на ВУ– процессор выдает на ША адрес ВУ (1С1С) из регистров W и Z, содержимое аккумулятора 3В по ШД выводится в буферный регистр ВУ. Так как адреса ВУ в отличие от адресов памяти восьмиразрядные, то при их выдаче по 16-разрядной шине адреса младший и старший байты дублируются.
В последнем такте последнего цикла каждой команды процессор анализирует состояние входа запроса прерывания ЗП (см. рис. 1), если триггер разрешения прерывания ТР установлен в 1. Состояние ТР выдается на выход разрешения прерывания РП. Если ТР = 1 и ЗП = 1, процессор переходит квыполнению цикла прерываний.
При нажатии кнопки сброса КС (рис. 1) на вход СБ через ГТИ подастся высокий логический уровень, что вызывает сброс счетчика команд PC. В результате при снятии сигнала сброса прoгpaмма всегда начинает выполняться с команды, записанной в нулевой ячейке памяти.
Рассмотрим теперь более подробно систему команд процессора K-580, которая приведена в табл.1. В графах 1 и 2 указывается содержание поля кода операции и поля операндов. При записи программ на ассемблере символы R1, R2, R в поле операндов заменяются обозначения регистров A, В, С, D, E, Н, L, а символ RP–обозначениями регистровых пар SP, В, D, Н (пары В-С, D-E, H-L обозначаются по старшему регистру).
Символы * и ** в поле операнда при записи на ассемблере заменяются однобайтными (*) и двухбайтными (**) выражениями, которые в простейшем случае могут быть числами или идентификаторами. В процессе трансляции определяются значения этих выражений и полученные числа размещаются во втором (*) или втором и третьем (**) байтах команды. Таким образом, символы * и ** в табл.1 являются признаком двухбайтной (*) или трехбайтной (* *) команды. Остальные команды – однобайтные. Код операции всегда находится в первом байте команды.
Символы && в поле кода операции (команды условной передачи управления) заменяются обозначениями условий, приведенными в нижней части табл.1.
В графе 3 табл.1 приводится краткое описание операции, в графе 4 отмечается формирование признаков, в графе 5 указывается количество тактов в каждом цикле команды. Формирование признаков в соответствии с обозначениями графы 4 поясняется в нижней части табл.1.
Команды, использующие символ М в поле операнда, работают с байтом памяти, адрес которого предварительно должен быть установлен в регистровой паре H-L (например, командой LXI Н, ADR ).
Поясним теперь особенности выполнения отдельных команд.
OUT * – информация из аккумулятора выводится на внешнее устройство *.
EI – разрешение прерывания.
DI – запрет прерывания.
HLT – останов до появления прерывания.
NOP – нет операции, переход к следующей команде.
Команды пересылки
MOV R1, R2 – информация из регистра R2 пересылается в регистр R1. Содержимое R2 не изменяется.
MOV R, M MOV M, R – пересылка из памяти в регистр и из регистра в память. Адрес памяти определяется содержимым регистровой пары H-L.
При записи команд вместо обозначения R1, R2, R следует использовать имена необходимых регистров А, В, С, D, Е, Н, L. Все возможные модификации команды MOV и их 16-ричные коды приведены в таблице 2.
MVI R, * MVI М, * – непосредственная засылка байта в регистр (R) или ячейку памяти (M). При записи программы символ * заменяется однобайтным выражением, которое размещается во втором байте команды. Кодировка первого байта приведена в таблице 2.
LXI RP, ** – непосредственная засылка двухбайтного числа ** в одну из регистровых пар В, D, Н, SP. Число ** при трансляции размещается во 2 и 3 байтах команды (младший байт числа – во втором байте команды). Кодировка первого байта приведена в таблице 2.
LDA ** – байт из памяти засылается в аккумулятор А. Вместо символов ** должен быть указан адрес памяти, он размешается во 2 и 3 байтах команды (младший байт адреса – во втором байте команды).
STA ** – содержимое аккумулятора загружается в память, адрес памяти указывается аналогично командеLDA.
LHLD ** – содержимое ячейки ** засылается в регистр L а следующей ячейки – в регистр Н. Вместо символов ** указывается адрес памяти, который размешается во 2 и 3 байтах команды.
SHLD ** – содержимое регистра L записывается по адресу **, а регистра H – в следующую ячейку.
LDAX RP – содержимое ячейки памяти, адрес которой находится в регистровой парс В-С или D-E (вместо RP подставляется B или D), записывается в аккумулятор.
STAX RP – содержимое аккумулятора записывается в ячейку памяти, адрес которой находится в регистровой паре В-С или D-E, коды команд LDAX и STAX приведены в таблице 2.
XCHG – обмен информацией между регистровыми парами H-L и D-E.
SPHL – содержимое пары H-L. засылается я указатель стека SP.
PCHL – содержимое пары H-L засылается в счетчик команд PC.
Арифметические команды.
При выполнении арифметических команд один из операндов находится в аккумуляторе, местонахождение другого указывается в команде; результат фиксируется в аккумуляторе, по значению результата формируются все признаки. При вычислении разности вычитаемое инвертируется и увеличивается на 1. Затем производится сложение с содержимым аккумулятора, однако, в отличие от обычного сложения признак переноса Y устанавливается инверсно (Y = 1 при отсутствии переноса из старшего (знакового) разряда, при возникновении переноса Y = 0).
ADD R ADD M ADI * – содержимое аккумулятора складывается с содержимым регистра (R). Ячейки памяти (М), адресуемой парой H-L, или со вторым байтом команды (символ * заменяется значением байта).
ADC R ADC M ACI * – эти команды действуют аналогично командам ADD, ADI, но при сложении учитывают значение бита переноса Y, установленное в регистре признаков до выполнения команды.
SUB R SUB M SUI * – из содержимого аккумулятора вычитается содержимое регистра (R), ячейки памяти (М) или непосредственно заданное значение байта (*).
SBB R SBB M SBI * – эти команды действуют аналогично командам SUB, SUI, но при вычитании учитывают ранее установленный бит переноса У.
Рассмотренные арифметические команды в процессе выполнения формируют все признаки в регистре признаков F.
INR R INR M – увеличение на 1 содержимого регистра или ячейки памяти.
DCR R DCR М – уменьшение на 1 содержимого регистра или ячейки памяти.
INR R(M) DCR R(M) – формируют все признаки кроме признака переноса Y.
INX RP DCX RP – увеличение (1NX) иди уменьшение (DCX) на 1 содержимого регистровой нары. Символы RP в поле операнда заменяются обозначениями регистровых пар В, D, Н, SP, Эти команды не формируют признаков (сохраняются ранее установленные значения).
DAD RP – содержимое указанной регистровой пары (RP=В, D, Н, SP) складывается с содержимым пары H-L. Результат сложения фиксируется в паре H-L. Формируется только бит переноса Y. Внимание! Команда DAD выполняется в течение трех машинных циклов, в течение двух последних машинных циклов на шинах ШД и ША информация не формируется.
DАА – корректируется находящийся в аккумуляторе результат сложения двух операндов, представленных а двоично-десятичном коде (каждый полубайт операндов не более 9). В результате коррекции сумма в аккумуляторе также преобразуется в двоично-десятичную форму.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|