birmaga.ru
добавить свой файл

1
ФЕДЕРАЛЬНОЕ АГЕНТСВО ПО ОБРАЗОВАНИЮ


МОСКОВСКИЙ АВИАЦИОННЫЙ ИНСТИТУТ

(государственный технический университет)

Кафедра 304

ОГРАНИЗАЦИЯ ЭВМ


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

Моделирование функционирования АЛУ при выполнении операции сложения/вычитания



Выполнил: студент гр. 13-401 Медведев А.А.

Преподаватель: Климовец Е.Н.


Москва, 2011


Цель
работы: Изучение работы арифметико-логического устройства при выполнении операции сложения/вычитания, используя модифицированный код. Операция сложения/вычитания выполняется в арифметико-логическом устройстве (АЛУ).
Задание
(Вар. 9):

│ │ 28 │ 16 │ + │

│ 9 │ 14 │ 28 │ - │

│ │ 103 │ -37 │ - │
Структурная схема АЛУ:

Швх
RX RY

R1
+1


RZ


Блок-схема операции сложения/вычитания:

┌──────────┐

│ НАЧАЛО │

└─────┬────┘

┌───────────┴──────────┐

│ ВВОД ПЕРВОГО ОПЕРАНДА│

└───────────┬──────────┘

┌───────────┴──────────┐

│ ВВОД ВТОРОГО ОПЕРАНДА│

└───────────┬──────────┘

СЛОЖЕНИЕ ┌─────────────┴────────────┐ ВЫЧИТАНИЕ

┌───┤ ДЕШИФРАЦИЯ КОДА ОПЕРАЦИИ ├───┐

│ └──────────────────────────┘ │

┌──────┴─────┐ ┌───────────┴─────────────┐

│СУММИРОВАНИЕ│ │ ПЕРЕВОД ВТОРОГО ОПЕРАНДА│

│ ОПЕРАНДОВ │ │ В ОБРАТНЫЙ КОД │

└──────┬─────┘ └───────────┬─────────────┘

│ ┌───────────┴─────────────┐

│ │ СУММИРОВАНИЕ ОПЕРАНДОВ │

│ │ С ДОБАВЛЕНИЕМ ЕДИНИЦЫ │

│ └───────────┬─────────────┘

└─────────────────┬────────────────┘

┌─────────┴────────┐

│ ВЫВОД РЕЗУЛЬТАТА │

└─────────┬────────┘


┌───┴───┐

│ КОНЕЦ │

└───────┘


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

writeln " ************************************************** ";

writeln " * Моделирование алгоритма сложения * ";

writeln " ************************************************** ";
reg RX[9],RY[9],R1[9],RZ[9];

REG INPX[8],INPY[8],I[1];
start:
read "X=",INPX;

read "Y=",INPY;

read "Введите код операции (0-сложение, 1-вычитание): ", I;

RX:=INPX; RX[8..8]:=INPX[7..7];

RY:=INPY; RY[8..8]:=INPY[7..7];
writeln "RX=",$B9 RX,"=",$D3 RX;

writeln "RY=",$B9 RY,"=",$D3 RY;

writeln;
{ Вычисление }

IF I=0 THEN GOSUB SUB_SUM;

IF I=1 THEN GOSUB SUB_RAZ;

WRITELN "RZ=",$B9 RZ,"=",$D3 RZ;

WRITELN;

{ Проверка на переполнение }

IF RZ[7..8]=0b01 THEN GOTO L_PP;

IF RZ[7..8]=0b10 THEN GOTO L_OP;
{ Результат }

WRITE " Результат Z=",$B8 RZ,"=",$D3 RZ;

WRITELN;
L_END:

WRITELN " *************** конец программы *********************** ";

END;

L_PP:

WRITELN " Переполнение разрядной сетки ";

WRITELN " ( результат > 127 )";

GOTO L_END;
L_OP:

WRITELN " Переполнение разрядной сетки ";

WRITELN " ( результат < 128 )";

GOTO L_END;

SUB_SUM:

writeln " Сложение (X+Y): ";

R1:=RY;

WRITELN "R1=",$B9 R1,"=",$D3 R1;

RZ:=RX+R1;

RETURN;
SUB_RAZ:

writeln " Вычитание (X-Y): ";

R1:=COM(RY);

WRITELN "R1=",$B9 R1,"=",$D3 R1;

RZ:=RX+R1;

RETURN;

Результат работы программы:
1. 28 + 16

**************************************************

* Моделирование алгоритма сложения *

**************************************************


X=

28

Y=

16

Введите код операции (0-сложение, 1-вычитание):

0

RX=000011100= 28

RY=000010000= 16
Сложение (X+Y):

R1=000010000= 16

RZ=000101100= 44
Результат Z=00101100= 44

*************** конец программы ***********************
2. 14 - 28

**************************************************

* Моделирование алгоритма сложения *

**************************************************

X=

14

Y=

28

Введите код операции (0-сложение, 1-вычитание):

1

RX=000001110= 14

RY=000011100= 28
Вычитание (X-Y):

R1=111100100=484

RZ=111110010=498
Результат Z=11110010=498

*************** конец программы ***********************
3. 103 - (-37)

**************************************************

* Моделирование алгоритма сложения *

**************************************************

X=

103

Y=

-37

Введите код операции (0-сложение, 1-вычитание):

1

RX=001100111=103

RY=111011011=475
Вычитание (X-Y):

R1=000100101= 37

RZ=010001100=140
Переполнение разрядной сетки

( результат > 127 )

*************** конец программы ***********************