Лаб9. Модельная ЭВМ Основы информатики
Содержание
Что делать 1
Учебная машина УМ-3 2
Пример 1. Оператор присваивания 4
Пример 2. Условный оператор 4
Пример 3. Реализация цикла 6
Пример 4. Работа с массивами 7
И набор команд http://cmcmsu.no-ip.info/1course/um3.command.set.htm
Что делать
Повторить пример 1. Реализовать его в эмуляторе УМ-3. Написать программу для обмена значениями двух переменных.
Изучить пример 2. Реализовать его в эмуляторе УМ-3. Написать программу печати большего из двух чисел.
Изучить пример 3. Реализовать его в эмуляторе УМ-3. Написать программу вычисления суммы вводимых чисел. Количество чисел считать известным.
Изучить пример 4. Реализовать его в эмуляторе УМ-3 (пусть массив состоит из 10 чисел). Написать программу вычисления наибольшего числа в массиве.
Решать задачи из сборника упражнений.
Сборник упражнений по учебным машинам (УМ-3)
Ввести вещественное x и вывести значение y = { x + 1, при x < 1; 1, при x = 1; 1/(x+1), при x > 1 }.
Ввести координаты двумерных векторов x и y. Вывести 1, если x || y, иначе 0.
Модификация команд (формирование операндов)
Ввести координаты 50-мерного вещественного вектора X и вектора Y, вычислить их сумму Z = ( X + Y ) и вывести координаты Z на экран.
Ввести последовательность из 100 целых чисел и вывести её в обратном порядке.
Ввести 50 целых и вывести их сумму.
Ввести последовательность из 100 целых чисел и вывести 1, если последовательность неубывающая, иначе — 0.
Ввести последовательность из 100 целых чисел {a100} и число x. Вывести 1, если x присутствует в последовательности {a100}.
Ввести последовательность из 100 целых чисел и вывести значение максимума.
Ввести целое n (2 ≤ n ≤ 100). Ввести n вещественных чисел и вывести значение максимального из них.
Ввести целое n (2 ≤ n ≤ 100). Ввести вещественные координаты двух n-мерных векторов x и y. Вывести их скалярное произведение (x, y).
Модификация команд (формирование кода операции)
Имеется шаблон фрагмента кода, при выполнении которого с 52 ячейки происходит суммирование вещественных значений ячеек с 100 по 499.
50 xxx xxx xxx xxx
51 СЛЦ xxx xxx xxx
52 СЛВ 100 100 101
53 СЛЦ 52 52 58 ; модификация второго операнда
54 ВЧЦ 59 59 58 ; декремент счётчика цикла
55 УСЛ 56 56 52 ; цикл
56 ВЫВ 100 1 ; вывод результата
57 СТОП
58 <1> ; константа 1
59 <399> ; константа 399
60 УВЧ 99 99 98
61 СЛВ xxx xxx xxx
Подобрать и вставить в пустые места, обозначенные символами «x», такие значения, чтобы при переходе на 50 ячейку УМ-3 вычислила и вывела бы произведение вещественных значений ячеек с 100 по 499.
Учебная машина ум-3
Память УМ-3 будет состоять из 512 ячеек, имеющих адреса от 0 до 511. Каждая ячейка состоит из 32 двоичных разрядов. По современным понятиям это очень маленькая память (всего 2 Kb). Записанное в ячейке машинное слово может рассматриваться как одно целое или вещественное число или как одна команда. Машинное слово, трактуемое как команда, будет разбиваться на четыре поля, и представляться в следующей форме:
КОП |
A1 |
A2 |
A3 |
5 разрядов |
9 разрядов |
9 разрядов |
9 разрядов |
Номера ячеек, кодов операций и адресов операндов будем для удобства записывать в десятичном виде, хотя первые программисты использовали для этого восьмеричную или шестнадцатеричную системы счисления. Первое поле с именем КОП (Код ОПерации) содержит число от 0 до 31. Это число задаёт номер (код) операции машинной команды, а поля с именами A1, A2 и A3 задают адреса операндов (это целые числа от 0 до 511). Таким образом, в каждой команде могут задаваться адреса двух аргументов (это A2 и A3)и адрес результата операции A1.
Таблица 1. Команды учебной машины УМ-3 |
|
КОП |
Смысл операции и её мнемоническое обозначение |
00 |
ПЕР – пересылка: <A1>:=<A3> |
11 |
СЛЦ – сложение целых чисел |
12 |
ВЧЦ – вычитание целых чисел |
13 |
УМЦ – умножение целых чисел |
14 |
ДЕЦ – деление целых чисел (то же, что и div в Паскале) |
24 |
МОД – остаток от деления (то же, что и mod в Паскале) |
|
|
01 |
СЛВ – сложение вещественных чисел |
02 |
ВЧВ – вычитание вещественных чисел |
03 |
УМВ – умножение вещественных чисел |
04 |
ДЕВ – деление вещественных чисел |
|
|
10 |
ЦЕЛ – вещественное в целое: <A1>:=Round(<A3>) |
30 |
ВЕЩ – целое в вещественное: <A1>:=Real(<A3>) |
|
|
09 |
БЕЗ – безусловный переход: goto A2, т.е. RA:=A2 |
19 |
УСЛ – условный переход: Case w of 0: goto A1; 1: goto A2; 2: goto A3 end |
20 |
ПР – переход по S = 0: if w=0 then goto A2 |
21 |
ПНР – переход по S <> 0: if w<>0 then goto A2 |
22 |
ПБ – переход по S > 0: if w=2 then goto A2 |
23 |
ПМ – переход по S < 0: if w=1 then goto A2 |
24 |
ПБР – переход по S >= 0: if w in [0,2] then goto A2 |
25 |
ПМР – переход по S <= 0: if w<2 then goto A2 |
|
|
31 |
СТОП – остановка выполнения программы |
|
|
05 |
ВВВ – ввод массива вещественных чисел: ввод A2 чисел в память, начиная с адреса A1 for i:=1 to А2 do Readln(<А1+i-1>) |
06 |
ВВЦ – ввод A2 целых чисел в память, начиная с адреса A1 for i:=1 to А2 do Readln(<А1+i-1>) |
15 |
ВЫВ – вывод A2 вещественных чисел, начиная с адреса A1 for i:=1 to А2 do Writeln(<А1+i-1>) |
16 |
ВЫЦ – вывод массива целых чисел, аналогично ВВВ |
Важное замечание. В используемом вами эмуляторе система команд может отличаться от заявленной в тексте. Используйте «Help» для получения справки о кодах команд. |
