Краткие сведения. Микрокомпьютер «Е97» представляет собой учебную модель компьютеров четвертого поколения и предназначен для изучения основ функционирования современных
Микрокомпьютер «Е97» представляет собой учебную модель компьютеров четвертого поколения и предназначен для изучения основ функционирования современных персональных ЭВМ. Программа разработана Е. А. Ереминым в 1997 г. В состав «Е97» (рис. 4.1) входят центральный процессор, оперативное и постоянное запоминающие устройства (ОЗУ и ПЗУ), дисплей и клавиатура. Основным устройством в «Е97», построенном на основе неймановской архитектуры, является шестнадцатиразрядный процессор «Е97». Его система команд позволяет обрабатывать двухбайтовые машинные слова и отдельные байты. Процессор (рис. 4.2) содержит программно доступные регистры — четыре регистра общего назначения (КО—КЗ), указатель стека (8Р — §1аск рот1ег); служебные регистры — счетчик адреса команд (РС — рго§гатт сошйег), регистр состояния процессора (Р8); и программно недоступные (внутренние), которые процессор использует в своих целях — регистр команд (РК), регистры операндов (Рг1, Рг2) и сумматор (См). Счетчик адреса команд РС при работе программы всегда указывает на адрес очередной команды, выполняя которую, автоматически изменяется согласно основному
алгоритму работы процессора. Регистры об- Рис- 4-2. Процессор «Е97» Напомним основной алгоритм работы процессора: 1) считывается команда из оперативной памяти по адресу, указанному в счетчике команд, и записывается в регистр команд; 2) счетчик команд автоматически увеличивается так, чтобы он содержал адрес следующей команды (в «Е97» автоматически увеличивается на2); 3) содержимое регистра команд дешифруется, из памяти выбираются значения операндов и размещаются в регистрах операндов, выполняется нужная команда; в случае необходимости результат записывается в ОЗУ; 4) осуществляется переход к п.1. Согласно этому алгоритму процессор исполняет программу до тех пор, пока не встретится команда СТОП. Указатель стека 8Р чаще всего используется при организации подпрограмм, о чем речь пойдет ниже, а также для промежуточного хранения данных. Регистр состояния процессора (точнее говоря, отдельные его биты) анализи-, руется при организации переходов, прерываний и т.д. Реально далее будут использованы только два бита: Ъ и N. Значения этих битов при возможных значениях результатов операций указаны ниже в таблице.
При работе программы в регистр команд считывается очередная команда для дешифрования и дальнейшего выполнения; в регистры операндов считываются согласно выполняемой команде операнды из регистров общего назначения или из оперативной памяти; выполняется необходимое действие, результат которого помещается в сумматор и сохраняется до тех пор, пока не будет выполнено следующее действие; из сумматора результат копируется в один из регистров общего назначения или в оперативную память. Последние четыре регистра доступны лишь для наблюдения, их содержимое программист изменить не может (в отличие от программно доступных). Минимальной адресуемой ячейкой памяти в микрокомпьютере «Е97», как и1 в любой современной персональной ЭВМ, является байт. Номера байтов (адреса) лежат в диапазоне от 0000(16) до РРРР(16). Гораздо чаще приходится работать с машинными словами (в «Е97» они двухбайтовые). Напомним, что это связано с разрядностью процессора. Адрес машинного слова совпадает с номером младшего байта, входящего в слово, поэтому адреса всех машинных слов четные. Для размещения программы и данных в распоряжении программиста существует ОЗУ (с адреса 0000 до адреса 00РЕ включительно). Программа и данные записываются в память «Е97» (в том числе и в регистры) в шестнадцатеричном коде. ПЗУ содержит полезные подпрограммы автора «Е97» и размещается с адреса 4000 по адрес 4106. Список этих подпрограмм — в лабораторной работе №5. Рассмотрим два основных способа адресации данных в «Е97»: прямой регистровый — когда данные для обработки содержатся в регистрах, и косвенный регистровый — когда данные расположены в ОЗУ, а их адреса находятся в регистрах общего назначения. Указанные способы адресации кодируются следующим образом:
Условным обозначением косвенной адресации, в отличие от регистровой, служит название (идентификатор) регистра, заключенное в круглые скобки. Например: (К2). Кроме рассмотренных способов адресации имеется еще адресация по командному счетчику РС. Если в качестве операнда указано значение В, то соответствующий операнд входит непосредственно в команду и расположен в ОЗУ по следующему за командой адресу; если — Е, то по следующему за командой адресу указан адрес, где хранится величина. Более подрЪбно об этих способах адресации — в примерах. Замечание. Код В может выступать только в качестве первого операнда (в силу того, что результат всегда помещается во второй операнд). Познакомимся с некоторыми командами процессора «Е97».Все их можно разделить на безадресные (без операндов), одноадресные (с одним операндом) и двухадресные (с двумя операндами). Безадресная команда имеет формат Третий полубайт (отсчет ведется справа налево), как и в других командах, занимает код операции (КОП) — то действие, которое необходимо выполнить. Другие полубайты могут содержать все, что угодно, так как они не задействованы; по традиции туда записывают нули. К безадресным относятся команды нет операции (0) и стоп (Р). Согласно принятым соглашениям в полной форме эти команды записываются так: 0000 (нет операции); 0Р00 (стоп). Всякую программу обязательно должна завершать команда СТОП. Двухадресная команда имеет формат МОД | КОП | ОП1 | ОП2 На приведенной схеме модификатор (МОД) — некоторый вспомогательный код; ОП1 и ОП2 — операнды в команде. Вот список таких команд:
Действия выполняются по схеме ОП2 е ОП1-» ОП2, где 0 — операция. Как видно из схемы, конечный результат операции всегда помещается во второй операнд. Особое место занимает операция сравнения: при ее выполнении содержимое операндов не изменяется, а действие ОП2 — ОП1 выполняется лишь для установления значений управляющих битов Ъ и N регистра состояния Р8. В каждой из указанных здесь команд значение МОД (модификатора) равно нулю. Модификатор может быть отличен от нуля (об этом — позднее). Приведем примеры использования команд: 1) 0123 — переслать содержимое регистра К2 в регистр КЗ, содержимое К2 сохраняется; 2) 0534 — умножить содержимое регистра КЗ на содержимое ячейки памяти, адрес которой указан в регистре КО, результат поместить в эту ячейку памяти. Для реализации развилок и циклов в системе команд «Е97» есть две команды перехода — абсолютного и относительного. Наиболее простой является команда абсолютного перехода. В этом случае просто необходимо указать адрес, куда надо попасть. Структура команды следующая: | МОД |[ КОП | || ОП1 Код команды абсолютного перехода — С. Команда относительного перехода имеет следующий формат: МОД КОП Смещение Смещение указывает, на сколько необходимо изменить текущее значение счетчика команд при организации перехода. Значение модификатора в команде в большинстве случаев зависит от управляющих битов Ъ и N регистра состояния Р8. Следующая таблица показывает возможные значения модификатора:
Код команды относительного перехода — Б. Если переход осуществляется в сторону увеличения адресов, то смещение будет положительным, в сторону уменьшения адресов — отрицательным. Смещение записывается в дополнительном коде. Развилка может быть полной или неполной. Полная развилка имеет структуру если < условие> то ссерия 1> иначе ссерия 2> Здесь < условие> — это отношение между двумя величинами. Например, х< у; 1> 10. ссерия 1>, ссерия 2> — действия, которые необходимо осуществить соответственно в случае истинности или ложности условия. Например: если а с Ь то Ш1п: = а иначе Ш1П: = Ь. В примере выбирается наименьшее из двух целых чисел а, Ь. Неполная развилка имеет структуру если сусловие> то ссерия 1> В этом случае действия выполняются только в случае истинности условия, в противном случае никаких действий выполнять не надо. Например: если а с 0 то а: = -а. В примере данное число а заменяется модулем. При реализации развилки (как полной, так и неполной) с помощью системы команд «Е97» обычно используется несколько различных команд (в их числе в большинстве случаев должна быть команда сравнения для установки управляющих битов 2, N регистра состояния Р8; очень часто присутствуют команды условного и безусловного перехода). При обращении к подпрограммам в «Е97» (и не только в ней) используется стек. Стек позволяет по окончанию работы подпрограммы обеспечить возврат в ту точку основной программы, которая следует сразу же за вызовом подпрограммы. При обращении к вспомогательному алгоритму адрес в указателе стека (8Р) уменьшается на 2, по вновь полученному адресу записывается адрес, следующий за вызовом подпрограммы. Подпрограмма исполняется и, когда встречается команда возврата (0Б00), в счетчик команд помещается адрес, на который указывает 8Р, значение 8Р увеличивается на 2. Так обеспечивается продолжение исполнения основной программы. Из сказанного выше следует, что в 8Р надо поместить адрес, свободный от данных и программы; несколько предшествующих адресов также должны быть свободны, поскольку стек строится в сторону уменьшения адресов. Удобным способом выполнения действия с константой, значение которой не превышает по абсолютной величине 15(10) (Р(16))> является операция с короткой константой. В этом случае место первого операнда (ОП1) в двухадресной команде занимает модуль константы. На знак константы указывает модификатор. Если его значение 2(16), то константа положительная; 3(16) — отрицательная. Указанный способ оказывается экономичнее рассмотренного ранее способа адресации по РС, так как команда в этом случае занимает одно слово вместо двух. Например, команда «переслать по адресу, записанному в регистре НО, число 3» 0020 0Ю4 0022 0003 может быть заменена на такую: 0020 2134 которая выполняет то же самое действие. Контрольные вопросы 1. Что такое дискретность памяти ЭВМ? 2. Что такое адресуемость памяти ЭВМ? 3. Что такое регистр процессора? 4. Какие виды памяти можно выделить в ЭВМ? В чем различие между ними? 5. Сформулируйте и разъясните принципы Дж.фон Неймана функционирования ЭВМ. 6. Для чего нужна внешняя память? 7. Какие устройства используются в качестве внешней памяти ЭВМ? 8. Из чего состоит основная память? Дайте характеристику каждой компоненты. 9. В чем различие внутренней и внешней памяти ЭВМ? 10. Если выключить компьютер, что произойдет с содержимым внутренней и внешней памяти? 11. В какой (внутренней или внешней) памяти должна находиться выполняемая в данный момент программа? 12. Что такое адресное пространство? 13. Как определить объем адресного пространства? 14. Что такое режимы адресации к памяти? 15. Расскажите о режимах адресации персональных компьютеров. 16. Расскажите о регистровой адресации. 17. Расскажите о косвенно-регистровой адресации. 18. Расскажите об автоинкрементной адресации. 19. Расскажите об автодекрементной адресации. 20. Что такое микропроцессор (МП)? 21. Расскажите о поколениях МП и их основных характеристиках. 22. Из чего состоит МП? 23. Что такое РОН? 24. Что такое регистр состояния микропроцессора? Каково назначение битов N и Ъ регистра состояния Р8? Расскажите о назначении других битов Р8. 25. Какие регистры являются программно-управляемыми? программно-неуправляемыми? 26. Каково назначение следующих регистров: счетчика команд, регистра команд, регистра адреса? 27. Что такое система команд МП? классификация команд? Расскажите о назначении команд. 28. Расскажите об алгоритме работы микропроцессора. 29. Расскажите о форматах команд микропроцессора. 30. Что такое безусловный переход? В каких случаях он применяется? 31. Как организовать условный переход? 32. Как вычислить смещение при организации перехода? 33. Чем отличается абсолютный переход от относительного? 34. Какие виды циклов существуют? 35. Как организовать цикл? 36. Что такое стек? 37. Что такое подпрограмма? 38. В каких случаях целесообразно использовать подпрограммы? 39. Объясните механизм обращения к подпрограмме. 40. Почему использование подпрограмм облегчает отладку программы? 41. Существуют ли ограничения на вложенность подпрограмм друг в друга? Может ли одна подпрограмма вызывать другую? 42. Какие подпрограммы называются рекурсивными!
|