Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Баула В.Г. -> "Введение в архитектуру ЭВМ и системы программирования" -> 8

Введение в архитектуру ЭВМ и системы программирования - Баула В.Г.

Баула В.Г. Введение в архитектуру ЭВМ и системы программирования — Москва, 2003. — 144 c.
Скачать (прямая ссылка): vvedenievarhetekturuevm2003.pdf
Предыдущая << 1 .. 2 3 4 5 6 7 < 8 > 9 10 11 12 13 14 .. 86 >> Следующая


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

Запись программы состоит из строк, каждая строка снабжается номером ячейки, куда будет помещаться это машинной слово (команда или переменная с начальным значением) при загрузке программы. Вслед за номером задаются все поля команды, затем программист может указать комментарий. Номера ячеек, кодов операций и адреса операндов будем записывать в десятичном виде, хотя первые программисты использовали для этого 8-ую или 16-ую системы счисления. Кроме того, так как числа неотличимы по внешнему виду от команд, то будем записывать их тоже чаще всего в виде команд. Текст нашей первой программы с комментариями приведён на рис. 3.1.

№ Команда Комментарий
001 06 101 001 000 Ввод x
2 11 103 101 009 r1 = (x+1)
3 13 103 103 103 r1 = (x+1)2
4 12 104 101 009 r2 = (x-1)
5 13 104 104 104 r2 = (x-1)2
6 24 102 103 104 y := r1 mod r2 13

7 16 102 001 000 Вывод y
8 31 000 000 000 Стоп
9 00 000 000 001 Целая константа 1

Рис 3.1. Текст программы первого примера.

После написания программы осталось поместить на устройство ввода два массива - саму программу (9 машинных слов) и число x (одно машинное слово) и нажать кнопку ПУСК. Как мы уже говорили, первый массив заканчивался специальной строкой - признаком конца ввода, так что устройство ввода знает, сколько машинных слов надо ввести в память по кнопке ПУСК.

3.2.2. Пример 2. Условный оператор.

Составим теперь программу, реализующую условный оператор присваивания. Пусть целочисленная переменная y принимает значение в зависимости от вводимой целочисленной переменной x в соответствии с правилом:

г

x+2, при x < 2,

y := J2, при x = 2,

2*(x+2), при x > 2;

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

Для определения того, является ли значение переменной x больше, меньше или равным константе 2, мы будем выполнять операцию вычитания x-2, получая в регистре w значение 0 при x=2, 1 при x<2 и 2 при x>2. При этом сам результат операции вычитания нам не нужен, но по нашему формату команд указание адреса ячейки для записи результата является обязательным. Для записи таких ненужных значений мы будем чаще всего использовать ячейку с номером 0. В соответствии с принципом однородности памяти, эта ячейка ничем не отличается от других, то есть, доступна как для записи, так и для чтения данных. В некоторых реальных ЭВМ этот принцип нарушается: при считывании из этой ячейки всегда возвращался нуль, а запись в ячейку с адресом ноль физически не осуществляется (на практике такой принцип работы c с этой ячейкой иногда удобнее).

Для хранения переменных x и y выделим ячейки 100 и 101 соответственно. Программист сам определяет порядок размещения в программе трёх ветвей нашего условного оператора присваивания. Мы будем сначала располагать вторую ветвь (x=2), затем первую (x<2), а потом третью (x>2). На рис. 3.2 приведён текст этой программы.

№ Команда Комментарий
001 ВВЦ 100 001 000 Read(x)
2 СЛЦ 101 100 011 y := x+2
3 ВЧЦ 000 100 011 <000> := x-2; формирование w
4 УСЛ 005 007 009 Case w of 0: goto 005; 1: goto 007; 2: goto 009 end
5 ВЫЦ 011 001 000 Write(2)
6 СТОП 000 000 000 Конец работы
7 ВЫЦ 101 001 000 Write(y)
8 СТОП 000 000 000 Конец работы
9 УМЦ 101 011 101 y := 2 * y
010 БЕЗ 000 007 000 Goto 0 07
1 00 000 000 002 Целая константа 2

Рис 3.2. Текст программы второго примера. 14

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

3.2.3. Пример 3. Реализация цикла.

В качестве следующего примера напишем программу для вычисления начального отрезка гармонического ряда:

y = Z1Zi

i=1

Для хранения переменных n,y и i выделим ячейки 100, 101 и 102 соответственно. В этом алгоритме мы реализуем цикл с предусловием, поэтому при вводе n<1 тело цикла не будет выполняться ни одного раза, и наша программа будет выдавать нулевой результат. На рис. 3.3 приведена возможная программа для решения этой задачи.

Сделаем некоторые замечания к этой программе. В нашем языке у нас нет команды деления целого числа на вещественное, поэтому при вычислении величины 1.0/i нам пришлось отдельной командой

ВЕЩ 000 000 102

преобразовать значение целой переменной i в вещественной значение. Обратите также внимание, что для нашей учебной машины мы ещё не определили формат представления вещественных чисел, поэтому в ячейке с адресом 14 стоит пока просто условное обозначение константы 1.0, а не её машинное представление.
Предыдущая << 1 .. 2 3 4 5 6 7 < 8 > 9 10 11 12 13 14 .. 86 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.