Главная страница
Навигация по странице:

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

  • Федеральное агентство по культуре и кинематографии Федеральное государственное образовательное учреждение среднего профессионального образования

  • «Сергиево-Посадский киновидеотехнический колледж»

  • «Подпрограммы и стек»

  • 9.4.1. Пример 4

  • 9.4.2. Задание 4

  • Лабораторная работа №1 «Архитектура ЭВМ и система команд». Архитектура эвм и вычислительных систем


    Скачать 0.54 Mb.
    НазваниеАрхитектура эвм и вычислительных систем
    АнкорЛабораторная работа №1 «Архитектура ЭВМ и система команд
    Дата15.10.2022
    Размер0.54 Mb.
    Формат файлаdoc
    Имя файлаЛабораторная работа №1 «Архитектура ЭВМ и система команд».doc
    ТипЛабораторная работа
    #735656
    страница3 из 7
    1   2   3   4   5   6   7

    9.3.3. Содержание отчета

    1. Формулировка варианта задания.

    2.Граф схема алгоритма решения задачи.

    3. Распределение памяти (размещение в ОЗУ переменных, программы и не­обходимых констант).

    4. Программа.

    5. Значения исходных данных и результата выполнения программы.
    9.3.4. Контрольные вопросы

    1. Как организовать цикл в программе?

    2. Что такое параметр цикла?

    3. Как поведет себя программа, приведенная в табл. 9.7, если в ней будет от­сутствовать команда wr 31 по адресу 014?

    4. Как поведет себя программа, приведенная в табл. 9.7, если метка m1 будет поставлена по адресу 005? 007?

    Федеральное агентство по культуре и кинематографии

    Федеральное государственное образовательное учреждение

    среднего профессионального образования

    «Сергиево-Посадский киновидеотехнический колледж»


    Рассмотрено на

    заседании предметной комиссии

    «___» ____________________ 200__г.

    Председатель предметной комиссии

    _______________________________
    Утверждено на заседании методического кабинета

    «___» ____________________ 200__г.

    Председатель методического кабинета

    _________________________________


    Лабораторная работа № 4
    «Подпрограммы и стек»
    По учебной дисциплине
    «Архитектура ЭВМ и вычислительных систем»
    Выполнил:

    Студент ____ курса

    Группы_____

    _______________________


    Принял: преподаватель

    _______________________
    Сергиев Посад

    2007 г

    В программировании часто встречаются ситуации, когда одинаковые дейст­вия необходимо выполнять многократно в разных частях программы (напри­мер, вычисление функции sin x). При этом с целью экономии памяти не сле­дует многократно повторять одну и ту же последовательность команд — дос­таточно один раз написать так называемую подпрограмму (в терминах языков высокого уровня — процедуру) и обеспечить правильный вызов этой подпро­граммы и возврат в точку вызова по завершению подпрограммы.

    Для вызова подпрограммы необходимо указать ее начальный адрес в памяти и передать (если необходимо) параметры — те исходные данные, с которыми будут выполняться предусмотренные в подпрограмме действия. Адрес под­программы указывается в команде вызова call, а параметры могут переда­ваться через определенные ячейки памяти, регистры или стек.
    Возврат в точку вызова обеспечивается сохранением адреса текущей коман­ды (содержимого регистр ГС) при вызове и использованием в конце подпро­граммы команды возврата, которая возвращает сохраненное значение ад­реса возврата в PC.

    Для реализации механизма вложенных подпрограмм (возможность вызова подпрограммы из другой подпрограммы и т. д.) адреса возврата целесообраз­но сохранять в стеке. Стек ("магазин") — особым образом организованная безадресная память, доступ к которой осуществляется через единственную ячейку, называемую верхушкой стека. При записи слово помещается в вер­хушку стека, предварительно все находящиеся в нем слова смещаются вниз на одну позицию; при чтении извлекается содержимое верхушки стека (оно при этом из стека исчезает), а все оставшиеся слова смещаются вверх на одну позицию. Такой механизм напоминает действие магазина стрелкового ору­жия (отсюда и второе название). В программировании называют такую дис­циплину обслуживания LIFO (Last In First Out, последним пришел — первым вышел) в отличие от дисциплины типа очередь — FIFO (First In First Out, первым пришел — первым вышел).
    В обычных ОЗУ нет возможности перемещать слова между ячейками, поэто­му при организации стека перемещается не массив слов относительно неподвижной верхушки, а верхушка относительно неподвижного массива. Под стек отводится некоторая область ОЗУ, причем адрес верхушки хранится в специальном регистре процессора — указателе стека SP.
    В стек можно поместить содержимое регистра общего назначения по команде push или извлечь содержимое верхушки в регистр общего назначения по команде pop. Кроме того, по команде вызова подпрограммы call значение программного счетчика PC (адрес следующей команды) помещается в вер­хушку стека, а по команде ret содержимое верхушки стека извлекается в PC, При каждом обращении в стек указатель SP автоматически модифицируется. В большинстве ЭВМ стек "растет" в сторону меньших адресов, поэтому пе­ред каждой записью содержимое SP уменьшается на 1, а после каждого из­влечения содержимое SP увеличивается на 1. Таким образом, SP всегда ука­зывает на верхушку стека.
    Цель настоящей лабораторной работы — изучение организации программ с использованием подпрограмм. Кроме того, в процессе организации циклов мы будем использовать новые возможности системы команд модели ЭВМ, которые позволяют работать с новым классом памяти— сверхоперативной (регистры общего назначения — РОН). В реальных ЭВМ доступ в РОН зани­мает значительно меньшее время, чем в ОЗУ; кроме того, команды обраще­ния с регистрами короче команд обращения к памяти. Поэтому в РОН разме­щаются наиболее часто используемые в программе данные, промежуточные результаты, счетчики циклов, косвенные адреса и т. п.

    В системе команд учебной ЭВМ для работы с РОН используются специаль­ные команды, мнемоники которых совпадают с мнемониками соответствую­щих команд для работы с ОЗУ, но в адресной части содержат символы реги­стров RO—R9.
    Кроме обычных способов адресации (прямой и косвенной) в регистровых командах используются два новых — постинкрементная и предекрементная (см. табл. 8.5). Кроме того, к регистровым относится команда организации цикла JRNZ R,M. По этой команде содержимое указанного в команде регист­ра уменьшается на 1, и если в результате вычитания содержимого регистра не равно 0, то управление передается на метку M. Эту команду следует ставить в конце тела цикла, метку M — в первой команде тела цикла, а в регистр R помещать число повторений цикла.
    9.4.1. Пример 4
    Даны три массива чисел. Требуется вычислить среднее арифметическое * максимальных элементов. Каждый массив задается двумя параметрами: адресом первого элемента и длиной.
    Очевидно, в программе трижды необходимо выполнить поиск максимального элемента массива, поэтому следует написать соответствующую подпро­грамму.

    Параметры в подпрограмму будем передавать через регистры: R1 — началь­ный адрес массива, R2 — длина массива.

    рассмотрим конкретную реализацию этой задачи. Пусть первый массив на­чинается с адреса 085 и имеет длину 14 элементов, второй— 100 и 4, тре­тий— 110 и 9. Программа будет состоять из основной части и подпрограм­мы. Основная программа задает параметры подпрограмме, вызывает ее и со­храняет результаты работы подпрограммы в рабочих ячейках. Затем I осуществляет вычисление среднего арифметического и выводит результат на устройство вывода. В качестве рабочих ячеек используются регистры общего назначения R6 и R7 — для хранения максимальных элементов массивов. Подпрограмма получает параметры через регистры R1 (начальный адрес мас­сива) и R2 (длина массива). Эти регистры используются подпрограммой в качестве регистра текущего адреса и счетчика цикла соответственно. Кроме того, R3 используется для хранения текущего максимума, a R4 — для вре­менного хранения текущего элемента. Подпрограмма возвращает результат через аккумулятор. В табл. 9.9 приведен текст основной программы и под­программы. Обратите внимание, цикл в подпрограмме организован с по­мощью команды JRNZ, а модификация текущего адреса — средствами пост­инкрементной адресации.
    Таблица 9.9. Программа примера 4

    Команда

    Примечание

    Основная программа




    RD #85

    Загрузка

    WR R1

    Параметров

    RD #14

    Первого

    WR R2

    Массива

    CALL M

    Вызов подпрограммы

    WR R6

    Сохранение результата

    RD #100

    Загрузка

    WR R1

    Параметров

    RD #4

    Второго

    WR R2

    массива




    Команда

    Примечания

    CALL M

    Вызов подпрограммы

    WR R7

    Сохранение результата

    RD #110

    Загрузка

    WR Rl

    параметров

    RD #9

    третьего

    WR R2

    массива

    CALL M

    Вызов подпрограммы

    ADD R7

    Вычисление

    ADD R6

    среднего

    DIV #3

    арифметического

    OUT

    Вывод результата

    Подпрограмма MAX

    HLT

    Стоп

    M: RD @R1

    Загрузка

    WR R3

    первого элемента в R3

    L2: RD @R1+

    Чтение элемента и модификация адреса

    WR R4

    Сравнение

    SUB R3

    и замена,

    JS LI

    если R3 < R4

    MOV R3,R4




    LI: JRNZ R2,L2

    Цикл

    RD R3

    Чтение результата в Асе

    RET

    Возврат


    9.4.2. Задание 4

    Составить и отладить программу учебной ЭВМ для решения следующей задачи. Три массива в памяти заданы начальными адресами и длинами. Вычислить и вывести на устройство вывода среднее арифметическое параметр этих массивов. Параметры определяются заданием к предыдущей лабораторной работе (см. табл. 9.8), причем соответствие между номерами вариант заданий 3 и 4 устанавливается по табл. 9.10.
    Таблица 9.10. Соответствие между номерами заданий

    Номер варианта задания 4

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    Номер строки в табл. 9.9

    5

    7

    13

    11

    9

    12

    1

    10

    14

    3

    6

    8

    2

    4


    , '















    1   2   3   4   5   6   7


    написать администратору сайта