Из сборника Введение в информатику. Лабораторные работы. Ч. II / Авт.-сост. А.П. Шестаков; Перм. ун-т. — Пермь, 1999. — 71 с.

Учебный компьютер E97. Структура процессора и памяти.
Способы адресации данных. Система команд

В состав E97 входят центральный процессор, оперативное и постоянное запоминающие устройства (ОЗУ и ПЗУ), дисплей и клавиатура.

Схема устройства учебного компьютера Е97

Основным устройством в E97, построенном на основе неймановской архитектуры, является шестнадцатиразрядный процессор E97. Его система команд позволяет обрабатывать двухбайтовые машинные слова и отдельные байты.

Процессор содержит программно доступные регистры: четыре регистра общего назначения (R0-R3), указатель стека (SP — stack pointer); служебные регистры: счетчик адреса команд (PC — programm counter), регистр состояния процессора (PS); и программно недоступные (внутренние), которые процессор использует в своих целях: регистр команд (РК), регистры операндов (Рг1, Рг2) и сумматор (См).

Внутреннее устройство учебного процессора Е97

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

Напомним основной алгоритм работы процессора:

  1. считывается команда из оперативной памяти по адресу, указанному в счетчике команд, и записывается в регистр команд;
  2. счетчик команд автоматически увеличивается так, чтобы он содержал адрес следующей команды (в E97 автоматически увеличивается на 2);
  3. содержимое регистра команд дешифруется, из памяти выбираются необходимые данные, и выполняется указанное действие. В случае необходимости результат записывается в ОЗУ;
  4. осуществляется переход к п. 1.

Согласно этому алгоритму процессор исполняет программу до тех пор, пока не встретится команда СТОП.

Указатель стека SP чаще всего используется при организации подпрограмм, о чем речь пойдет ниже.

Регистр словосостояния (точнее говоря, отдельные его биты) анализируются при организации переходов, прерываний и т.д. Реально мы будем использовать только два бита: Z и N. Значения этих битов при возможных значениях результатов операций указаны ниже в таблице.

Результат Значение бита Z Результат Значение бита N
Нулевой (=0) 1 Отрицательный (<0) 1
Ненулевой (≠ 0) 0 Неотрицательный (>= 0) 0

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

Минимальной адресуемой ячейкой памяти в микрокомпьютере E97, как и в любой современной персональной ЭВМ, является байт. Номера байтов (адреса) лежат в диапазоне от 0000(16) до FFFF(16). Гораздо чаще приходится работать с машинными словами (в E97 они двухбайтовые — напомним, что это связано с разрядностью процессора). Адрес машинного слова совпадает с номером младшего байта, входящего в слово, поэтому адреса всех машинных слов четные.

Для размещения программы и данных в распоряжении программиста ОЗУ (с адреса 0000 до адреса 00FE включительно). Программа и данные записываются в память E97 (в том числе и в регистры) в шестнадцатеричном коде. При этом целые числа задаются в дополнительном коде.

ПЗУ содержит полезные подпрограммы автора E97 и размещается с адреса 4000 по адрес 4106.

Рассмотрим способы адресации данных в E97. Основных здесь два — прямой регистровый, когда данные для обработки содержатся в регистрах, и косвенный регистровый, когда данные расположены в ОЗУ, а их адреса находятся в регистрах общего назначения. Указанные способы адресации кодируются следующим образом:

 Код операнда
Регистр Регистровая адресация Косвенная адресация
R004
R115
R226
R337

Условным обозначением косвенной адресации, в отличие от регистровой, служит название регистра, заключенное в круглые скобки. Например (R2).

Кроме рассмотренных способов адресации имеется еще адресация по командному счетчику PC. Если в качестве операнда указано значение D, то соответствующий операнд входит непосредственно в команду и расположен в ОЗУ по следующему за командой адресу; если — E, то по следующему за командой адресу указан адрес, где хранится величина. Более подробно об этих способах адресации — в примерах.

Познакомимся с некоторыми командами процессора E97. Все их можно разделить на безадресные (без операндов), одноадресные (с одним операндом) и двухадресные (с двумя операндами).

Безадресная команда имеет формат

Безадресная команда в E97

Третий полубайт (отсчет ведется справа налево), как и в других командах, занимает код операции (КОП) — то действие, которое необходимо выполнить. Другие полубайты могут содержать все, что угодно, так как они не задействованы; по традиции туда записывают нули.

К безадресным относятся команды нет операции (0) и стоп (F). Согласно принятым соглашениям в полной форме эти команды запишутся так:

Всякую программу обязательно должна завершать команда СТОП.

Двухадресная команда имеет формат

Двухадресная команда в E97

На приведенной схеме модификатор (МОД) — некоторый вспомогательный код; ОП1 и ОП2 — операнды в команде.

Вот список таких команд

Команда Код Команда Код
Переписать 1 Логическое И (AND) 7
Сложить 2 Логическое ИЛИ (OR) 8
Вычесть 3 ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) 9
Сравнить 4 Ввести в порт A
Умножить 5 Вывести из порта B
Разделить 6  

Действия выполняются по схеме ОП2 операция ОП1 ==> ОП2. Как видно из схемы, конечный результат операции всегда помещается во второй операнд.

Особое место занимает операция сравнения: при ее выполнении содержимое операндов не изменяется, а действие ОП2 - ОП1 выполняется лишь для установления значений управляющих битов Z и N регистра состояния PS.

В каждой из указанных здесь команд значение МОД (модификатора) равно нулю. Модификатор может быть отличен от нуля, об этом — позднее.

Приведем примеры использования команд.

1) 0123 — переслать содержимое регистра R2 в регистр R3, содержимое R2 сохраняется;

2) 0534 — умножить содержимое регистра R3 на содержимое ячейки памяти, адрес которой указан в регистре R0, результат поместить в эту ячейку памяти.

При разработке и отладке программ для E97 целесообразно действовать так:

  1. разработать план решения задачи (составить алгоритм решения);
  2. распределить память для аргументов, результатов и промежуточных величин, которые будут использованы при работе программы;
  3. подобрать набор тестовых данных для последующей проверки правильности программы;
  4. составить программу согласно плану решения (алгоритму);
  5. ввести программу и исходные данные в память E97;
  6. проверить правильность алгоритма и программы с помощью тестов. Если результаты тестирования окажутся положительными, программа пригодна для проведения расчетов по ней. В противном случае следует приступить к ее отладке с целью выявления алгоритмических либо других ошибок, после чего вернуться к тестированию.

Примеры решения задач с помощью E97

Пример 1. В регистрах R0, R1 содержатся целые числа. Получить сумму этих чисел в регистре R3, не изменяя содержимого R0, R1.

План решения

  1. Переслать R0 в R3.
  2. Сложить R1 с R3.

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

Тест
R0 R1 R2 R3
FFFE 5  — 3

Программа

Адрес  Команда  Действие       Замечания
0000   0103     R0 => R3       R3 := R0
0002   0213     R1 + R3 => R3  R3 := R3 + R1
0004   0F00     стоп

При решении задачи использовалась только регистровая адресация.

Пример 2. В последовательных ячейках памяти расположены пять целых чисел. Получить произведение этих чисел. Содержимое памяти не изменять.

Идея решения. Поскольку величины хранятся в памяти последовательно, в одном из регистров будем изменять адреса от адреса первого числа до последнего, а в другом — накапливать произведение.

Распределение памяти
R0 R1 R2 R3
Адрес очередного числа  —  — P

Заданные числа будем хранить с адреса 0050.

Тест
Адрес 0050 0052 0054 0056 0058
Величина 0002 FFFE 000A FFFF 0003

Ответ: 120(10)=78(16)

Замечание. Целые числа записываются в память в дополнительном коде.

Программа

Адрес  Команда  Действие         Замечания
0000   0143     (R0) => R3       R3 := (R0)
0002   02D0     R0 + 2 => R0     адрес второго числа
0004   0002 
0006   0543     R3 * (R0) => R3  R3 := R3 * (R0)
0008   02D0     R0 + 2 => R0     адрес третьего числа
000A   0002
000C   0543     R3 * (R0) => R3  R3 := R3 * (R0)
000E   02D0     R0 + 2 => R0     адрес четвертого числа
0010   0002
0012   0543     R3 * (R0) => R3  R3 := R3 * (R0)
0014   02D0     R0 + 2 => R0     адрес пятого числа
0016   0002
0018   0543     R3 * (R0) => R3  R3 := R3 * (R0)
001A   0F00     стоп

При решении задачи использованы способы адресации: регистровая, косвенная и по счетчику команд.

Пример 3. Дано трехзначное натуральное число, записанное в десятичной системе счисления. Получить число, записанное теми же цифрами, но расположенными в обратном порядке.

Идея решения. Пусть данное число имеет вид N=abc, тогда ответ должен быть M=cba=c × 100 + b × 10 + a. Из исходного числа N цифры могут быть получены так:

a = N div 100; b = (N - a × 100) div 10; c = N - a × 100 - b × 10

Здесь через div обозначена операция целочисленного деления одного целого числа на другое, которая и используется в E97.

План решения

  1. Запомнив исходное число N, разделить его на 100, полученную цифру a запомнить.
  2. Получить часть числа M: M := a.
  3. Вычесть из числа N произведение a × 100, результат запомнить.
  4. Разделить разность N-a × 100 на 10, полученную цифру b запомнить.
  5. Добавить к числу M очередную его часть: M := M + b * 10.
  6. Вычесть из разности N-a × 100 число b × 10, получим цифру c.
  7. Добавить к числу M последнюю его часть: M := M + c * 100.
  8. Стоп.

Распределение памяти
R0 R1 R2 R3
N цифры  — M
и разности и произведения

 

Тест. Дано: 684(10)=2AC(16). Ответ: 486(10)=1E6(16).


Программа

Адрес Команда  Действие         Замечания
0000  0101     R0 => R1
0002  06D1     R1 / 100         a := N / 100
0004  0064
0006  0113     R1 => R3         M := a
0008  05D1     R1 * 100         a * 100
000A  0064
000C  0310     R0 := R0 - R1    N := N - a * 100
000E  0101     R0 => R1
0010  06D1     R1 / 10          b := (N - a * 100) / 10
0012  000A
0014  05D1     R1 * 10
0016  000A
0018  0213    R3 := R3 + R1     M := M + b * 10
001A  0310    R0 := R0 - R1     c := N - a * 100 - b * 10
001C  05D0    R0 * 100
001E  0064
0020  0203    R3 := R3 + R0     M := M + c * 100
0022  0F00    стоп

При разработке программы были использованы регистровая и адресация по PC.

Задания для самостоятельного выполнения

  1. Найти сумму чисел, находящихся в регистрах с R0 по R2, накапливая ее в регистре R3. Примечание. Содержимое регистров R0-R2 не изменять.
  2. Найти разность суммы чисел, находящихся в регистрах R0 и R1, и числа из регистра R2. Результат — в регистре R3. Примечание. Содержимое регистров R0-R2 не изменять.
  3. Найти сумму чисел, находящихся в основной памяти с адреса 20 по 26. Результат поместить в регистр R3.
  4. Найти разность суммы чисел, находящихся в основной памяти с адреса 40 по 44, и суммы чисел, находящихся в регистрах R0 и R1. Результат поместить по адресу, который находится в регистре R3.
  5. Найти сумму чисел, расположенных в основной памяти по адресам, которые находятся в регистрах с R0 по R2, накапливая ее в регистре R3.
  6. Найти разность суммы чисел, адреса которых заданы в регистрах R0 и R1, и числа из регистра R2. Результат — в регистре R3. Примечание. Содержимое регистров R0-R2 и основной памяти не изменять.
  7. Найти сумму четырех чисел, расположенных в основной памяти последовательно. Адрес первого числа хранится в основной памяти по адресу, заданному в регистре R0.
  8. Даны два целых числа x и y. Вычислить их сумму, разность, произведение и частное.
  9. Сложить два вектора с целочисленными координатами (a1, b1) и (a2, b2).
  10. Найти разность двух векторов с целочисленными координатами (a1, b1) и (a2, b2).
  11. Сложить два вектора с целочисленными координатами (a1, b1, c1) и (a2, b2, c2).
  12. Найти разность двух векторов с целочисленными координатами (a1, b1, c1) и (a2, b2, c2).
  13. Вычислить периметр и площадь прямоугольного треугольника с катетами a, b и гипотенузой c.
  14. Найти произведение цифр заданного четырехзначного числа.
  15. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.
  16. Найти площадь трапеции с основаниями a и b и высотой h.
  17. Дано целое число x. Не пользуясь никакими другими арифметическими операциями, кроме умножения, сложения и вычитания, вычислить за минимальное число операций 2x4-3x3+4x2-5x+6.
  18. Дано целое число x. Получить значения -2x+3x2-4x3 и 1+2x+3x2+4x3. Позаботиться об экономии операций.
  19. Дано a. Получить a8 за три операции и a10 и a16 за четыре операции.
  20. Найти сумму арифметической прогрессии, если известны ее первый член, разность и количество слагаемых.
  21. Составить программу для вычисления пути, пройденного лодкой, если ее скорость в стоячей воде v км/ч, скорость течения реки v1 км/ч, время движения по озеру t1 ч, а против течения реки — t2 ч.
  22. Дана величина A, выражающая объем информации в байтах. Перевести A в биты и килобайты.
  23. Вычислить объем и площадь полной поверхности прямоугольного параллелепипеда с измерениями a, b, c.
  24. Вычислить площадь и периметр прямоугольника со сторонами a, b.
  25. Умножить число a на вектор (с1, с2, c3).
  26. Вычислить сопротивление R, если известны напряжение U и сила тока I.
  27. В регистре R1 хранится число единиц, в R2 — число десятков, в R3 — число сотен некоторого трехзначного числа. Написать программу, помещающую это число в память по адресу 54.
  28. Даны a, h — основание и высота треугольника. Вычислить его площадь.
  29. Даны двузначные числа a, b. Вычислить отдельно сумму цифр каждого из этих чисел, затем вычислить разность этих сумм.
  30. Дано четырёхзначное натуральное число.
    1. Найти сумму последних трёх цифр
    2. найти произведение трёх первых цифр
    3. Найти разность первой и последней цифр
    4. Найти отношение второй цифры к третьей
    5. Из произведения двух первых цифр вычесть сумму двух последних
    6. Из суммы двух первых цифр вычесть произведение двух последних
    7. Найти отношение первой цифры к последней
    8. Вычислить произведение второй и третьей цифр
    9. Вычислить произведение квадратов цифр
    10. Вычислить сумму кубов цифр
    11. Вычислить число, противоположное разности первой и суммы всех остальных цифр
    12. Определить число - среднее арифметическое цифр

 

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

  1. Что такое "дискретность памяти ЭВМ"?
  2. Что такое "адресуемость памяти ЭВМ"?
  3. Что такое "регистр процессора"?
  4. Какие три вида памяти можно выделить в ЭВМ? В чем различие между ними?
  5. Сформулируйте и разъясните принципы Дж. фон Неймана функционирования ЭВМ.
  6. Для чего нужна внешняя память?
  7. Какие устройства используются в качестве внешней памяти ЭВМ?
  8. Из чего состоит основная память? Дайте характеристику каждой компоненты.
  9. В чем отличие внутренней и внешней памяти ЭВМ?
  10. Если выключить компьютер, что произойдет с содержимым внутренней и внешней памяти?
  11. В какой (внутренней или внешней) памяти должна находиться выполняемая в данный момент программа?
  12. Что такое "адресное пространство"?
  13. Как определить объем адресного пространства?
  14. Что такое режимы адресации к памяти?
  15. Рассказать о режимах адресации персональных компьютеров.
  16. Рассказать о регистровой адресации.
  17. Рассказать о косвенной регистровой адресации.
  18. Рассказать о автоинкрементной адресации.
  19. Рассказать о автодекрементной адресации.
  20. Что такое микропроцессор (МП)?
  21. Рассказать о поколениях МП и их основных характеристиках.
  22. Из чего состоит МП?
  23. Что такое РОН?
  24. Что такое "регистр состояния микропроцессора"? Рассказать о назначении основных битов RS.
  25. Какие регистры являются программно-управляемыми, программно-неуправляемыми?
  26. Каково назначение следующих регистров: счетчика команд, регистра команд, регистра адреса?
  27. Что такое система команд МП? Классификация команд. Рассказать о назначении команд.
  28. Рассказать об алгоритме работы микропроцессора.

 


Рейтинг ресурсов УралWeb
© А.П. Шестаков, 1999-2010
Сайт создан в системе uCoz