2012 КОНТРОЛЬНАЯ РАБОТА ПО АрхПК / ЛабораторныйПрактикумПоАрхПК для ЗО
.pdf34
1) Исходя из допустимых пределов изменения аргумента функций (табл. 2.12) и значения параметра а для своего варианта задания (табл.2.13) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п.1 формуле, и недопустимые значения аргумента, рисунок 20.
Рисунок 20 – Область допустимых значений
2) Разработать блок-схему алгоритма решения задачи, рисунок 21. Рисунок 21 – Блок-схема алгоритма программы
35
3) Разработать программу вычисления и вывода значения функции.
Причем x вводится с устройства ввода IR, результат у выводится на OR. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999.
В данной лабораторной работе используются двухсловные команды, с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда. Рисунок 2.6, формат 4,
Оценив размер программы примерно в 20 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде таблицы 7 .
Таблица 7 – Пример программы вычисления функции
Адрес |
Команда |
Комментарии |
|
|
|
|
|
|
Мнемокод |
Код |
|
|
|
|
|
000 |
IN |
010000 |
Ввод х |
|
|
|
|
001 |
WR 030 |
220030 |
Запись х в ячейку М (30) |
|
|
|
|
002 |
SUB #20 |
241020 |
Сравнение с нижней границей (х -20) |
|
|
|
|
36
Продолжение таблицы 7
003 |
|
JS 012 |
130012 |
|
Переход, если разность отрицательна |
|
|
|
|
|
|
004 |
|
RD 030 |
210030 |
|
Чтение ОЗУ |
|
|
|
|
|
|
005 |
|
SUB #041 |
241041 |
|
Сравнение с верхней границей (х - 41) |
|
|
|
|
|
|
006 |
|
JNS 20 |
140020 |
|
Переход, если разность положительна |
|
|
|
|
|
|
007 |
|
RD 030 |
210030 |
|
Вычисление по первой формуле |
|
|
|
|
|
|
008 |
|
MUL 030 |
250030 |
|
Умножение на содержимое ячейки (возведение х в |
|
|
|
|
|
степень) |
|
|
|
|
|
|
009 |
|
SUB #5 |
241005 |
|
Вычитаем 5 |
|
|
|
|
|
|
010 |
|
WR 031 |
220031 |
|
Запись в ячейку М (31) |
|
|
|
|
|
|
011 |
|
JMP 22 |
100022 |
|
Переход на вывод результата |
|
|
|
|
|
|
012 |
|
RD 030 |
210030 |
|
Чтение ОЗУ |
|
|
|
|
|
|
013 |
|
SUB #5 |
241005 |
|
Сравнение с нижней границей (х - 5) |
|
|
|
|
|
|
014 |
|
JS 20 |
130020 |
|
Переход к ячейке М (20) |
|
|
|
|
|
|
015 |
|
RDI 002000 |
410000 002000 |
|
Вычисление по второй формуле |
|
|
|
|
|
|
017 |
|
DIV 030 |
260030 |
|
Деление на содержимое ячейки 030 |
|
|
|
|
|
|
018 |
|
WR 032 |
220032 |
|
Запись результата в ячейку М (32) |
|
|
|
|
|
|
019 |
|
JMP 22 |
100022 |
|
Переход на вывод результата |
|
|
|
|
|
|
020 |
|
RDI 199999 |
410000 199999 |
|
Чтение ОЗУ (двухсловной команды, ячейки 015-016 |
|
|
|
|
|
) |
|
|
|
|
|
|
022 |
|
OUT |
020000 |
|
Вывод результата |
|
|
|
|
|
|
023 |
|
HLT |
090000 |
|
Стоп |
|
|
|
|
|
|
|
4) Ассемблировать текст |
программы, при необходимости исправить |
синтаксические ошибки.
37
5) Отладить программу. Для этого:
а) записать в IR значение аргумента х > а (в области допустимых значений);
б) записать в PC стартовый адрес программы;
в) проверить правильность результата и адреса останова в автоматическом режиме. В случае наличия ошибки выполнить пп.5.г и 5.д; иначе перейти к п. 5.е;
г) записать в PC стартовый адрес программы;
д) наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить пп. 5.a — 5.в;
е) записать в IR значение аргумента х < а (в области допустимых значений); выполнить пп. 5.б и 5.в;
ж) записать в IR недопустимое значение аргумента х и выполнить пп. 5.б и
5.в.
6)Для выбранного допустимого значения аргумента х наблюдать выполнение отлаженной программы в режиме Шаг и записать в форме табл. 2.10 содержимое регистров ЭВМ перед выполнением каждой команды.
7)Записать изменения состояний регистров и содержимого ячеек памяти в режиме Шаг, для одного значения аргумента х = 20, таблица 8.
Таблица 8 –Состояния регистров
РС |
Асс |
М(30) |
М(31) |
|
|
|
|
000 |
000000 |
000000 |
000000 |
|
|
|
|
001 |
000020 |
000000 |
000000 |
|
|
|
|
002 |
000020 |
000020 |
000000 |
|
|
|
|
003 |
000000 |
000020 |
000000 |
|
|
|
|
004 |
000000 |
000020 |
000000 |
|
|
|
|
005 |
000020 |
000020 |
000000 |
|
|
|
|
38
006 |
100021 |
000020 |
000000 |
|
|
|
|
007 |
100021 |
000020 |
000000 |
|
|
|
|
008 |
000020 |
000020 |
000000 |
|
|
|
|
009 |
000400 |
000020 |
000000 |
|
|
|
|
010 |
000395 |
000020 |
000000 |
|
|
|
|
011 |
000395 |
000020 |
000395 |
|
|
|
|
… |
… |
… |
… |
|
|
|
|
022 |
000395 |
000020 |
000395 |
|
|
|
|
023 |
000395 |
000020 |
000395 |
|
|
|
|
8) Записать результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно в форме таблицы 9.
Таблица 9 – Значения х, у
Входные данные (х) |
Выходные данные (Y) |
|
|
20 |
395 |
|
|
25 |
620 |
|
|
41 |
199999 |
|
|
4 |
199999 |
|
|
5 |
400 |
|
|
15 |
133 |
|
|
Дана функция:
По таблице 10 выбрать вариант задания. Например, первый вариант: значение Fi
= 2, что соответствует номеру 2 в таблице 11; значение Fj = 1, что соответствует
39
номеру 1 в таблице 2.13; a = 12. В данном случае, функция для первого варианта задании:
Таблица 10 – Варианты значения параметров i, j, a
Таблица 11 – Варианты заданий функции
40
Форма и содержание отчета
1)Титульный лист;
2)Формулировка варианта задания;
3)Область допустимых значений;
4)Блок-схема алгоритма решения задачи;
5)Размещение данных в ОЗУ (какие ячейки памяти используются для данных, программы, констант);
6)Программа в форме таблицы 2.9;
7)Последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента в форме таблицы 2.10;
8)Результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно в форме таблицы 2.11.
Контрольные вопросы
1)Какие команды условной передачи управления вы знаете?
2)При каком условии передается управление каждой из команд?
3)Если условие выполняется, то какой адрес точки перехода будет по команде JZ 25?
Рекомендуемая литература
1.Майоров С.А, Кириллов В.А, Приблуда А.А. Введение в микроЭВМ. Л.: Машиностроение. Ленингр. отд-ние, 1988. – 304с.
2.Таненбаум Э. Т18 Архитектура компьютера. 5-е изд. — СПб.: Питер, 2007. — 844 с.
3.Преснухин Л.Н. Микропроцессоры: В 3 кн. Кн. 2: Средства сопряжения. Контролирующие и управляющие системы: Учеб.для техн. Вузов /В.Д. Вернер, Н.В. Воробьев, А.В. Горячев и др.; Под ред. Л.Н. Преснухина. –
Мн.: Выш.шк., 1987.-303 с.
41
Лабораторная работа № 4
Тема: программирование цикла;
Цель: изучение организации циклических программ с условной передачей управления; исследование порядка функционирования ЭВМ при выполнении команд условной передачи управления;
Техническое обеспечение: персональный компьютер, программная модель учебной ЭВМ;
Основные понятия: косвенная адресация, косвенно-регистровая адресация.
Общие положения
При решении задач, связанных с последовательной и однотипной обработкой элементов массива, имеет смысл хранить только адрес текущего обрабатываемого элемента массива, тем самым сокращая число команд программы. Эта задача решается путем использования косвенной или косвенно- регистровой адресации, рисунок 9, 10 (стр. 22-23). При этом необходимо организовать цикл в программе, с помощью условных команд ЭВМ.
Порядок выполнения работы
Задание. Написать программу определения заданной характеристики последовательности чисел: С1, С2, …, Сn. Варианты заданий приведены в таблице 13. Число элементов массива принять равным 10. При нахождении адресов элементов последовательности использовать косвенную или косвенно- регистровую адресацию.
Пример. Вычислить сумму элементов последовательности чисел С. 1. Для решения использовать промежуточные переменные:
Ai - адрес i-го элемента массива в ОЗУ, i изменяется от 1 до 10; S - текущая сумма;
42
k - счетчик циклов программы, определяющий число повторений тела
цикла.
2. Блок-схема алгоритма решения задачи, рисунок 22.
Рисунок 22 – Блок-схема алгоритма
3.Распределение памяти:
программа размещается в ячейках ОЗУ, начиная с адреса 000000,
Ai (адрес элемента последовательности) - в ячейке ОЗУ с адресом 030, k (счётчик циклов) - по адресу 031,
S (сумма элементов последовательности) - по адресу 032.
43
4.Последовательность шагов, реализующих алгоритм программы:
а) занесение адреса первого элемента последовательности (А1=040) в ячейку ОЗУ с адресом 030
б) занесение значения счётчика цикла (k = 10) в ячейку ОЗУ с адресом 031 в) занесение начального значения суммы (S = 0) в ячейку ОЗУ с адресом 032 г) добавление к начальной сумме (значение ячейки 032) значения первого
(следующего при повторных циклах) элемента последовательности (используется косвенная адресация, адрес ячейки памяти, где находится элемент берётся из ячейки с адресом 030)
д) получение адреса следующего элемента последовательности (значение ячейки 030 увеличивается на 1)
е) уменьшение значения счётчика цикла на 1 (ячейка ОЗУ с адресом 031) ж)- реализация цикла – если значение счётчика цикла не равно 0, переход на
г), иначе – команда СТОП.
Команда ADD @30 косвенно адресует ячейку памяти 030, которая содержит адрес массива 040, по этому адресу в памяти содержится операнд
(000001), рисунок 23.
Рисунок23 – Косвенно адресуемая ячейка памяти
Другой вариант программы - с косвенно-регистровой адресацией. В данном случае, адрес операнда хранится, например, в регистре R3, рисунок 24.