Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodicheskie_ukazania_k_kursovomu_proektu_VMSi....doc
Скачиваний:
4
Добавлен:
20.04.2019
Размер:
4.98 Mб
Скачать

Арифметические и логические команды

Все рассмотренные выше команды были либо командами перехо­дов, либо командами пересылки информации. Обратимся теперь к командам обработки информации. К ним относятся команды сложе­ния, вычитания, логического И, логического ИЛИ, команды сдвигом и т. д. В качестве типичного представителя этого класса рассмотрим «сложение с- регистром и переносом» ADC R.

На рис. 4.13 показаны потоки информации, когда R задает любой общий регистр в диапазоне 016, . . ., Е16. В соответствии с табл. 4.2 это однобайтовая команда. Следовательно, после второго синхроим­пульса первого и единственного машинного цикла содержимое акку­мулятора и регистра R может быть подано на входы АЛУ в качестве операндов. АЛУ по этим двум операндам и переносу С (считая его пере­носом в младший разряд) вычисляет 8-разрядную сумму и новое зна­чение переноса.

Рис. 4.13 Информационные потоки в фазе выполнения команды ADC R, когда R 11112

Таким образом, по третьему синхроимпульсу машинного цикла сумма передается в аккумулятор, а результирующий пере­нос — в триггер переноса С.

Выполнение команды ADC R при R = 11112 показано на рис. 4.14.

Рис. 4.14 Информационные потоки в фазе выполнения команды

ADC R, когда R = 11112

В этом случае второй машинный цикл затрачивается на выборку операнда из памяти по адресу на регистрах Н и L. Этот операнд вре­менно заносится в младшие разряды регистра адреса данных и оттуда через R-селектор в нужный момент подается на вход АЛ У.

Команды ввода/вывода

Теперь рассмотрим группу команд, обеспечивающих передачу информации между микропроцессором и устройствами ввода/вывода. Для конкретности остановимся на команде OUT. Поскольку это двух байтовая команда, второй байт во втором машинном цикле будет помещен в регистр адреса данных в младшую его половину. В связи с задержками распространения сигнала в шинах, а также в логических схемах устройств вывода и самого микропроцессора в фазе выполнения команды используется третий машинный цикл.

Этот цикл иллюстрирует рис. 4.15

Рис. 4.15 Информационные потоки в фазе выполнения команды OUT

По первому синхроимпуль­су третьего машинного цикла содержимое младшей половины регистра адреса данных подается на адресную шину, а содержимое аккумуля­тора через г-селектор — на шину данных. Все устройства вывода де­кодируют содержимое младшей половины адресной шины. Однако только то устройство, которое опознает код на адресной шине как свой код, подает разрешающий сигнал на прием информации с шины дан­ных в свой входной регистр. По второму синхроимпульсу третьего машинного цикла БУС подаст сигнал на линию «вывод» шины управ­ления, который стробирует передачу содержимого шины данных в открытый для приема регистр.

Специальные команды

Это последний класс команд в наборе команд микропроцессора. Они улучшают как эффективность программ, так и удобство их на­писания.

Поскольку пару общих регистров Н и L можно использовать для обращения к ячейкам памяти при косвенной адресации, команды IHL и DHL увеличения и уменьшения значения, хранящегося в этих регистрах, оказываются очень удобными для модификации адре­сов. Команды разрешения и запрещения прерываний необходимы для обслуживания запросов прерывания различных устройств. Пустая команда (NOP) реализует программную за­держку времени. Она бывает нужна при взаимодействии с медлен­ными устройствами ввода/вывода. Команда останова (HLT), очевид­но, позволяет закончить выполнение программы.

Две оставшиеся команды в классе специальных команд это команды PUSH и POP, работающие со стеком. Когда выполняется подпрограм­ма или программа обработки прерывания, ей для ввода, вывода и об­работки данных нужны общие регистры. Однако, как правило, они содержат информацию, нужную основной программе или подпрограм­ме. Поэтому содержимое трех верхних общих регистров Асс, Н и L вместе с содержимым триггера переноса С можно запомнить в стеке командой PUSH и затем в нужный момент восстановить командой POP. Это позволяет использовать регистры Асс, Н, L и триггер С при вы­полнении подпрограммы и вместе с тем сохранять их содержимое. Более того, поскольку информация сохраняется в стеке, процедура сохранения/восстановления может быть повторена в подпрограмме или в программе обработки прерываний, обеспечивая много уровней вложения.

Фаза выполнения команды PUSH проходит за два синхроимпульса. По третьему синхроимпульсу командного цикла в стек опускается значение переноса С и аккумулятора, а затем по следующему синхро­импульсу, который фактически будет первым импульсом в следующем командном цикле, в стек опускается значение регистров Н и L. Такое совмещение командных циклов в данном случае вполне допустимо, поскольку информационные потоки не интерферируют друг с другом. Потоки информации в фазах выполнения команд POP и PUSH в точности противоположны.

В приложении в конце книги приведены все команды нашего ил­люстративного микропроцессора. Табл. П1 содержит команды в ал­фавитном порядке, а табл. П2 — в порядке кодов операций.