Цель работы : получение навыков разработки структурной организации ассемблерных программ и ее реализации на основе аппарата процедур, изучение способов организации связи по данным между процедурами.
Лабораторное задание : разработать программу вычисления функции y=f(a,b,c,d,e). Значения аргументов a, b, c, d, e должны вводиться с клавиатуры ПЭВМ. Значение функции y следует вывести на экран дисплея.
Методические указания : для ввода-вывода числовых данных использовать следующий формат: ЗнЦЦЦ…Ц, где Ц – цифра (0…9), Зн – знак (+,-). Предусмотреть в программе вывод текста, содержащего вычисляемую функцию и формат аргументов, а также выдачу запроса на ввод каждого аргумента. Вычисление функции и преобразование вводимых и выводимых данных оформить в виде процедур: func – вычисление заданной функции, ascbin – преобразование числа из строки ASCII-кодов в двоичное число, binasc – преобразование числа, представленного в виде двоичного кода, в строку ASCII кодов.
Передача аргументов между вызывающей и вызываемой процедурами может осуществляться несколькими способами (или их комбинацией):
9 класс, 15 урок, Определение числовой функции. Область определения, область значения функции
Источник: nervotrep.blogspot.com
Составить программу вычисления и вывода на экран в виде таблицы значений функции — PascalABC.NET
Разработать алгоритм с применением вложенных базовых структур «цикл с предусловием» или «цикл с постусловием», составить и отладить соответствующую программу вычисления и вывода на экран в виде таблицы значений функции, заданной с помощью ряда Тейлора, на интервале от xнач до xкон с шагом dx с точностью ε. Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции, количество просуммированных членов ряда и точное значение, вычисленное по формуле
Код к задаче: «Составить программу вычисления и вывода на экран в виде таблицы значений функции»
Листинг программы
const xn=1.5; xk=2.0; dx=0.1; e=0.0001; function f(x:real):real; begin f:=exp(-x); end; var x,t,s:real; n:integer; begin //выводим шапку writeln(‘Таблица значений функции y=e^-x’); writeln(‘представленной разложением в ряд Тейлора’); writeln(‘на интервале [‘,xn:0:2,’;’,xk:0:2,’] с шагом ‘,dx:0:2,’ с точностью ‘,e:0:4); writeln(‘——————————-‘); writeln(‘| x | s(x) | n | f(x) |’); writeln(‘——————————-‘); //начнем с начала интервала x:=xn; while x+dx/2 do //пока не конец begin n:=0;//нулевой член ряда t:=1; //его значение s:=t; //первая сумма while abs(t)>e do//пока очередной член ряда больше точности begin n:=n+1;//увеличиваем n на 1 t:=-t*x/n; //умножаем предыдущий член на x, делим на n //это рекуррентное отношение указанное в формуле s:=s+t; //прибавляем к сумме end; writeln(‘|’,x:5:2,’|’,s:8:6,’|’,n+1:3,’ |’,f(x):8:6,’|’); //выводим аргумент значение суммы //число слагаемых и аналитическое значение x:=x+dx;//увеличиваем х на 1 шаг end; writeln(‘——————————-‘); end.
Простейшие формы ввода данных в Excel за пару секунд – без применения VBA!
Источник: studassistent.ru
Практическая работа № 3. Команды управления и ветвления
1. Изучение команд управления ходом вычислений для модельной ЭВМ.
2. Разработка программы реализующей ветвящийся вычислительный процесс на модели учебной ЭВМ.
Команды управления модельной ЭВМ
К этому классу команд относятся, которые изменяют естественный порядок выполнения команд программы. Эти команды меняют содержимое программного счетчика, обеспечивая переходы по программе. Существуют следующие виды команд управления:
— команды вызова подпрограмм (процедур);
— системные команды управления процессом обработки информации и внутренними ресурсами процессора.
1. Команды передачи управления;
Различают два вида переходов в программах:
В последнем случае передача управления происходит, если выполняется заданное в коде команды условие, иначе выполняется следующая по порядку команда.
В качестве условий обычно используются признаки результата предыдущей операции, которые хранятся в специальном регистре признаков (флажков). Чаще всего формируются и проверяются признаки:
— наличия переноса из старшего разряда;
— четности числа единиц в результате и др.
Различают три разновидности команд передачи управления:
— возвраты из подпрограмм.
Команды переходов помещают в программный счетчик содержимое своего адресного поля — адрес перехода. При этом старое значение программного счетчика теряется. В микро-ЭВМ часто для экономии длины адресного поля команд условных переходов адрес перехода формируется как сумма текущего значения программного счетчика и относительно короткого знакового смещения, размещаемого в команде. В крайнем случае, в командах условных переходов можно и вовсе обойтись без адресной части — при выполнении условия команда «перепрыгивает» через следующую команду, которой обычно является безусловный переход.
2. Команда вызова подпрограмм работает подобно команде безусловного перехода, но старое значение программного счетчика предварительно сохраняется в специальном регистре или в стеке. Команда возврата передает содержимое верхушки стека или специального регистра в программный счетчик. Команды вызова и возврата работают «в паре». Подпрограмма, вызываемая командой вызова, должна заканчиваться командой возврата, что обеспечивает по окончании работы подпрограммы передачу управления в точку вызова. Хранение адресов возврата в стеке обеспечивает возможность реализации вложенных подпрограмм.
3. Системные— команды, выполняющие управление процессом обработки информации и внутренними ресурсами процессора. К таким командам относятся:
— команды управления подсистемой прерывания;
— команда загрузки PSW – Program Status Word (слово состояния программы);
— команды установки флагов в регистре состояния процессора;
— команды установки и изменения параметров защиты памяти;
— команда останова программы;
— и некоторые другие команды, например команда диагностики работы.
В простых процессорах класс системных команд немногочисленный, а в сложных мультипрограммных системах предусматривается большое число системных команд.
Задания для выполнения:
1. Ознакомиться с теоретическими сведениями о командах управления модельной ЭВМ.
2. Запустите программу CompModel.exe.
3. Выполнить пример. В качестве примера рассмотрим программу вычисления функции:
Причем х вводится с устройства ввода IR, результат у выводится на OR. Граф-схема алгоритма решения задачи показана на рис.1.
В данном примере используются двухсловные команды с непосредственной адресацией, позволяющие оперировать отрицательными числами и числами по модулю, превышающие 999, в качестве непосредственного операнда.
Оценив размер программы примерно в 20—25 команд, отведем для области данных ячейки ОЗУ, начиная с адреса 030. Составленная программа с комментариями представлена в виде табл. 1.
Таблица 1.Пример программы
Адрес | Команда | Примечание |
Мнемокод | Код | |
IN | 010 000 | Ввод х |
WR 30 | 22 0 030 | Размещение x в ОЗУ(ОЗО) |
SUB #16 | 24 1016 | Сравнение с границей — (х -16) |
JS 010 | Переход по отрицательной разности | |
RD 30 | 210 030 | Вычисления по первой формуле |
SUB #11 | 24 1 011 | |
WR 31 | 22 0 031 | |
MUL 31 | 25 0 031 | |
SUB #125 | 24 1 125 | |
JMP 020 | 10 0 020 | Переход на вывод результата |
RD 30 | 21 0 030 | Вычисления по второй формуле |
MUL 30 | 25 0 030 | |
WR 31 | 22 0 031 | |
RD 30 | 210 030 | |
MUL #72 | 25 1 072 | |
ADD 31 | 23 0 031 | |
ADI 106400 | 43 0 000 | |
DIVI 100168 | 46 0 000 | |
OUT | 02 0 000 | Вывод результата |
HLT | 09 0 000 | Стоп |
4. Разработать программу вычисления и вывода значения функции:
4.1 Для вводимого из IR значения аргумента х. Функции и допустимые пределы изменения аргумента приведены в табл. 2, варианты заданий — в табл. 3.
4.2. Исходя из допустимых пределов изменения аргумента функций (табл. 2) и значения параметра а для своего варианта задания (табл. 3) выделить на числовой оси Ох области, в которых функция у вычисляется по представленной в п. 1 формуле, и недопустимые значения аргумента. На недопустимых значениях аргумента программа должна выдавать на OR максимальное отрицательное число: 199 999.
4.3. Ввести текст программы в окно Текст программы,при этом возможен набор и редактирование текста непосредственно в окне Текст программыили загрузка текста из файла, подготовленного в другом редакторе.
4.4. Ассемблировать текст программы, при необходимости исправить синтаксические ошибки.
4.5. Отладить программу. Для этого:
а) записать в IR значение аргумента х > а (в области допустимых значений);
б) записать в PC стартовый адрес программы;
в) проверить правильность выполнения программы (т. е. правильность результата и адреса останова) в автоматическом режиме. В случае наличия ошибки выполнить пп. 4.5г и 4.5д; иначе перейти к п. 4.5е;
г) записать в PC стартовый адрес программы;
д) наблюдая выполнение программы в режиме Шаг, найти команду, являющуюся причиной ошибки; исправить ее; выполнить пп. 4.5, a— 4.5, в;
ж) записать в IR недопустимое значение аргумента х и выполнить пп. 4.5би 4.5в.
6. Для выбранного допустимого значения аргумента х наблюдать выполнение отлаженной программы в режиме Шаг и записать в форме табл. 4 содержимое регистров ЭВМ перед выполнением каждой команды.
Таблица 2. Функции
Таблица 3. Варианты задания
Номер варианта | i | j | а |
-20 |
Таблица 4. Результаты выполнения программы
PC | Асс | М(хх) | М(нн) | PC | Асс | М(мм) | М(оо) |
Содержание отчета
Отчет о практическая работе должен содержать следующие разделы:
1. Формулировка варианта задания.
2. Граф-схема алгоритма решения задачи.
3. Размещение данных в ОЗУ.
4. Программа в форме табл. 1.
5. Последовательность состояний регистров ЭВМ при выполнении программы в режиме Шаг для одного значения аргумента.
6. Результаты выполнения программы для нескольких значений аргумента, выбранных самостоятельно.
Источник: megaobuchalka.ru