Протокол работы программы




ИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

 

Заочно-вечерний

наименование института

 

Кафедра вычислительной техники

наименование кафедры

 

 

Отчет по лабораторной работе №2

Вариант 5

Программирование на TOYCODE.

наименование темы

По дисциплине «Машинно-ориентированные языки»

 

 

Разработал студент ЭВМбз-12-1 ____________ А.И.Помазков

шифр группы подпись И.О. Фамилия

Руководитель ___________ Н.Н.Егорова

подпись И.О. Фамилия

 

Иркутск 2016 г.

Содержание

1.Цель работы: 3

2.Порядок выполнения работы: 3

3.Задание 1. 3

3.1. Постановка задачи: 3

3.2 Система команд TOYCODE: 3

3.3 Таблица внешних спецификаций. 4

3.4 Таблица тестов. 4

3.5 Таблица памяти. 4

3.6. Листинг программы.. 4

3.7 Протокол работы программы.. 5

3.8 Заключение о первом задание: 7

4.Задание 2. 7

4.1 Постановка задачи: 7

4.2 Таблица внешних спецификаций. 7

4.3 Таблица тестов. 7

4.4 Таблица памяти: 8

4.5 Алгоритм на языке PASCAL: 8

4.6 Блок схема: 8

4.7 Листинг программы в TOYCODE. 9

4.8 Протокол работы программы.. 10

4.9 Заключение о втором задание: 13

 


1.Цель работы:

Программирование на ToyCode и закрепление знаний по отладке программы. Использование знаний из курса «Программирование на ЯВУ».

2.Порядок выполнения работы:

1. Ознакомиться с теоретическими материалами по теме.

2. Разобрать лекционные примеры.

3. Ознакомиться с заданием согласно варианту.

4. Составить таблицу внешних спецификаций

5. Выполнить проектирование тестов к задачам.

6. Разработать и описать алгоритмы решения в виде блок-схемы или псевдокода.

4. Закодировать алгоритмы на языке ассемблера с необходимыми комментариями.

5. Получить исполняемый файл (.tcp)

7. Отладить и протестировать программу.

Задание 1

3.1. Постановка задачи:

Выполнить вычисления Y по формуле . Значения аргументов вводятся с клавиатуры.

3.2 Система команд TOYCODE:

КОП в числовой форме КОП в форме символического имени Название
  STOP Останов
  LD Загрузка в аккумулятор
  STO Запись в память
  ADD Сложение
  SUB Вычитание
  MPY Умножение
  DIV Деление нацело
  IN Ввод
  OUT Вывод
  B Переход безусловный
  BGTR Переход, если больше нуля
  BZ Переход, если равно нулю

Таблица внешних спецификаций

Имя Назначение Тип ОДЗ
  a Переменная целый -999..999
  b Переменная целый -999..999
  c Переменная целый -9999..9999
  x Константа целый  
  y Искомая переменная целый -9999..9999

Таблица тестов

№ теста a b c y Комментарии
           
  -2     - Ошибка
        -1  

Таблица памяти

Переменные
Имя переменной Номер ячейки памяти
a  
с  
b  
y  
R (рабочая ячейка)  
Постоянные
   

Листинг программы

REM Исходные данные

REM Переменные

a: DC 1

c: DC 1

b: DC 3

y: DC 0

REM Задаем рабочую ячейку

r: DC 0

REM Записываем константу 5 в память

x: DC 5

REM Загружаем значение переменной "а" в аккумулятор

LD a

REM Вычисляем числитель (а+с)

ADD c

REM сохраняем результат в рабочую ячейку «r"

STO r

REM Записываем 5 в аккумулятор

LD x

REM Вычисляем произведение 5a

MPY a

REM Вычисляем разность 5а-b

SUB b

REM Делим числитель на содержимое рабочей ячейки

DIV r

REM Записываем в y результат

STO y

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

OUT y

REM Стоп

STOP

Протокол работы программы

Заносим наш код в поле исходного кода в трансляторе языка TOYCODE, и нажимаем кнопку «Трансляция».

Рисунок 1 –Трансляция TOYCODE

Далле сохраняем обьектный код, и получаем фаил с расширением.tcp.

Рисунок 2 – Сохранение объектного кода

Файл с кодом запускаем на TOYCOMP и проверяем результат выполнения программы. Исходя из таблицы тестов при заданных a=1, b=3, c=1 Y должен получиться равным 1.

Рисунок 3 – Результат выполнения транслированного TOYCODE

Из рисунка 3 видно, что на устройство вывода пришла 1, что говорить о правильности транслированного TOYCODа. Проведем еще два прогона программы следуя таблице тестов:

№ теста a b c y Комментарии
  -2     - Ошибка

 

Рисунок 4 – Прогон 2 с выдачей ошибки

Из рисунка 4 видно сообщение об ошибке, как и предполагалось в таблице тестов. Проведем последний 3 прогон:

№ теста a b c y Комментарии
        -1  

 

Рисунок 5 – Прогон 3, получение отрицательного числа

Из рисунка 5 видно, что в результате выполнения программы получилось отрицательное число, а именно -1, как и предполагалось нами.

3.8 Заключение о первом задание:

Программа отлажена, тестирование показало, что программа правильно решает поставленную задачу.

Задание 2

4.1 Постановка задачи:

Найти количество цифр в числе N>0;

Таблица внешних спецификаций

Имя Назначение Тип ОДЗ
  n Переменная целый -999..999
  k Искомая переменная целый -999..999
  p1 Константа целый  
  p2 Константа целый  

Таблица тестов

№ теста n k Комментарии
       
  -4   Завершение программы так, как n<0
       
      Завершение программы так, как n=0

4.4 Таблица памяти:

Переменные
Имя переменной Номер ячейки памяти
n  
k  
R (рабочая ячейка)  
Постоянные
   
   

4.5 Алгоритм на языке PASCAL:

Var

N,k: integer;

begin

Readln(n);

K:=0;

While n>0 do

begin

N:= N div 10;

K:=k+1;

End;

Writeln(k);

End.

4.6 Блок схема:

Листинг программы в TOYCODE

REM Вводим исходные данные

n: DC 25

k: DC 0

REM Вводим необходимые постоянные

p1: DC 10

p2: DC 1

REM Резервируем рабочую ячейку

r: DC 0

REM Загружаем в аккумулятор величину n

LD n

REM Заносим в память величину n

STO r

REM Записываем в аккумулятор значение рабочей ячейки

LD r

REM Делаем переход для проверки введеного числа, оно должно быть строго больше 0

BGTR M1

REM Выводим на устройство вывода ответ

OUT k

REM Остановка программы

STOP

REM Делаем метку М1, для организации цикла

REM И делим содержимое аккумулятора на 10

M1: DIV p1

REM Записываем содержимое аккумулятора в рабочую ячейку

STO r

REM Записываем значение "к" в аккумулятор

LD k

REM Прибавляем 1

ADD p2

REM Записываем в память новое значение "k"

STO k

REM Снова записываем содержимое рабочей ячейки в аккумулятор

LD r

REM Делаем переход на метку М1 если содержимое аккумулятора >0

BGTR M1

REM Выводим на устройство вывода ответ

OUT k

REM Остановка программы

STOP



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-04-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: