Отчет по лабораторной работе №2 «Составление простых программ в кодах команд»



Скачать 74.91 Kb.
Дата12.11.2016
Размер74.91 Kb.
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ

(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Отчет по лабораторной работе №2
«Составление простых программ в кодах команд»

Выполнил:

Студент группы ВВ-7-06

Иванов Р.И.


Вариант 4
Москва, 2009г.

Цель лабораторной работы заключается в освоении команд процессора и приобретении навыков составления простых программ в кодах команд.

Структурная схема микропроцессора:





Задание №1


Составить программу вычисления выражения:

N = ∑ai = a1+a2+a3+…+a40

где аi – число натурального ряда, начиная с “1”.
N = ∑ai = 1+2+3+…+40 = 820(10) =334(16)
40(10) = 28(16)


0000 16 RG_D := 0;

0001 00;

0002 1E RG_E := 28;

0003 3C;

0004 26 RG_H := 0;

0005 00;

0006 2E RG_L := 0;

0007 00;

0008 19 ((H)(L)) := ((H)(L)) + ((D)(E));

0009 1D; RG_E := RG_E-1;

000A C2; //условный переход в ячейку с адресом 000C+000B

//по ненулевому результату

000B 08;


000C 00;

000D 76; //Остановка




Задание №2


Составить программу вычисления выражения:

N = ∑ai = a1+a2+a3+…+a17

где аi – произвольные числа из ячеек памяти.
N = ∑ai =

=1A+5B+BB+CC+AC+ //2A8

+BC+91+56+BF+BA+ //31C

+23+10+18+AA+01+ //4В

+11+BE //CF

=6DE(16)




RG_C := 11;

RG_H := 00;

RG_L := 0C;

RG_A := 00;
0000 86 RG_A := RG_A + ((H)(L));

0001 D2; //условный переход в ячейку с адресом 0003+0002 по

//отсутствию переполнения

0002 05;

0003 00;

0004 14 RG_D := RG_D + 1;

0005 23 ((H)(L)) := ((H)(L)) + 1;

0006 0D RG_C := RG_C – 1;

0007 C2; //условный переход в ячейку с адресом 0009+0008

//по ненулевому результату

0008 00;

0009 00;


000A 5F RG_E := RG_A;

000B 76; //Остановка


17 чисел для сложения:

000C 1A;

000D 5B;

000E BB;


000F CC;

0010 AC;


0011 BC;

0012 91;


0013 56;

0014 BF;


0015 BA;

0016 23;


0017 10;

0018 18;


0019 AA;

001A 01;


001B 11;

001C BE;


Задание №3


Составить программу для пересылки массива данных размерностью 17 из одной области ОЗУ в другую.

RG_B := 00;

RG_C := 20;

RG_D := 00;

RG_E := 32;

RG_H := 11;


0000 0A RG_A := ((B)(C));

0001 12 ((D)(E)) := RG_A;

0002 0B ((B)(C)) := ((B)(C)) - 1;

0003 1B ((D)(E)) := ((D)(E)) - 1;

0004 25 RG_H := RG_H-1;

0005 C2; //условный переход в ячейку с адресом 0007+0006

//по ненулевому результату

0006 00;


0007 00;

0008 76; //Остановка


17 чисел для переноса:

0010 1A;

0011 5B;

0012 BB;


0013 CC;

0014 AC;


0015 BC;

0016 91;


0017 56;

0018 BF;


0019 BA;

001A 23;


001B 10;

001C 18;


001D AA;

001E 01;


001F 11;

0020 BE;
17 перенесенных чисел:

0021 1A;

0022 5B;


0023 BB;

0024 CC;


0025 AC;

0026 BC;


0027 91;

0028 56;


0029 BF;

002A BA;

002B 23;

002C 10;


002D 18;

002E AA;


002F 01;

0031 11;


0032 BE;

Задание №4


Составить программу для пересылки массива данных размерностью 13 из одной области ОЗУ в другую. После пересылки массив должен расположиться в обратном порядке.


RG_B := 00;

RG_C := 20;

RG_D := 00;

RG_E := 21;

RG_H := 11;


0000 0A RG_A := ((B)(C));

0001 12 ((D)(E)) := RG_A;

0002 0B ((B)(C)) := ((B)(C)) - 1;

0003 13 ((D)(E)) := ((D)(E)) + 1;

0004 25 RG_H := RG_H-1;

0005 C2; //условный переход в ячейку с адресом 0007+0006

//по ненулевому результату

0006 00;


0007 00;

0008 76; //Остановка

17 чисел для переноса:
0010 1A;

0011 5B;


0012 BB;

0013 CC;


0014 AC;

0015 BC;


0016 91;

0017 56;


0018 BF;

0019 BA;

001A 23;

001B 10;


001C 18;

001D AA;


001E 01;

001F 11;


0020 BE;
17 перенесенных чисел:
0021 1A;

0022 5B;


0023 BB;

0024 CC;


0025 AC;

0026 BC;


0027 91;

0028 56;


0029 BF;

002A BA;

002B 23;

002C 10;


002D 18;

002E AA;


002F 01;

0031 11;


0032 BE;


Задание №5


Составить программу умножения однобайтных двоичных чисел.
2110*2110 = 44110

1516*1516= 1B916, ответ в ((H)(L))


RG_B := 08;

RG_E := 15;

RG_L := 15;


0000 7D RG_A := RG_L;

0001 1F Сдвиг  A;

0002 6F RG_L := RG_A;

0003 D2; //условный переход в ячейку с адресом 0005+0004

//по отсутствию переполнения

0004 09;

0005 00;


0006 7B RG_A := RG_E;

0007 84 RG_A := RG_A + RG_H;

0008 67 RG_H := RG_A;

0009 7C RG_A := RG_H;

000A 1F Сдвиг  A;

000B 67 RG_H := RG_A;

000C 7D RG_A := RG_L;

000D 1F Сдвиг  A;

000E 6F RG_L := RG_A;

000F 05 RG_B := RG_B-1;

0010 C2; //условный переход в ячейку с адресом 0012+0011

//по ненулевому результату

0011 03;

0012 00;


0013 76; //Остановка
Результат: ((H)(L)) = 01B9

Задание №6


Составить программу деления однобайтных двоичных чисел.

RG_H / RG_L = RG_H


2410/310=810 1816/316=816
RG_B := 09; RG_H := 18; RG_L := 03;



0000 7C RG_A := RG_H;

0001 17 Сдвиг  A;

0002 67 RG_H := RG_A;

0003 05 RG_B := RG_B-1;

0004 CA ; //условный переход в ячейку с адресом 0006+0005

// по нулевому результату

0005 1B;


0006 00;

0007 7B RG_A := RG_E;

0008 17 Сдвиг  A;

0009 95 RG_A := RG_A - RG_L;

000A F2; //условный переход в ячейку с адресом 000C+000B

// по положительному результату

000B 16;

000C 00;


000D 85 RG_A := RG_A + RG_L;

000E 5F RG_E := RG_A;

000F D2; //условный переход в ячейку с адресом 0011+0010

// по отсутствию переноса

0010 00;

0011 00;


0012 3F; //invert «C»

0013 C3; //безусловный переход в ячейку с адресом 0015+0014

0014 00;

0015 00;


0016 5F RG_E := RG_A;

0017 37; //установка «C»

0018 C3; //безусловный переход в ячейку с адресом 001A+0019

0019 00;


001A 00;

001B 76; //Остановка

Результат: RG_H = 08

Задание №7


Составить программу вычисления следующего выражения: N = (a+b) – (c*d). Числа однобайтные. При составлении программы использовать команду обращения к подпрограммам, а в качестве подпрограммы – программу из задания 5.
HL = (C + D) – (L * E)
RG_E := 15;

RG_L := 10;

RG_C: = FA;

RG_D:= 10;

RG_H:= 00;


0000 7D RG_A := RG_L;

0001 1F Сдвиг  A;

0002 6F RG_L := RG_A;

0003 D2; //условный переход в ячейку с адресом 0005+0004

//по отсутствию переполнения

0004 09;

0005 00;


0006 7B RG_A := RG_E;

0007 84 RG_A := RG_A + RG_H;

0008 67 RG_H := RG_A;

0009 7C RG_A := RG_H;

000A 1F Сдвиг A;

000B 67 RG_H := RG_A;

000C 7D RG_A := RG_L;

000D 1F Сдвиг  A;

000E 6F RG_L := RG_A;

000F 05 RG_B := RG_B-1;

0010 C2; //условный переход в ячейку с адресом 0012+0011

//по ненулевому результату

0011 03;

0012 00;


0013 C9; // return

0100 06 RG_B := 8;

0101 08;

0102 CD; //вызов подпрограммы умножения

0103 00;

0104 00;


0105 7A RG_A := RG_D;

0106 81 RG_A := RG_A + RG_C;

0107 06 RG_B := 0;

0108 00;


0109 D2; //условный переход в ячейку с адресом 090B+090A

// по отсутствию переноса

010A 0D;

010B 01;


010C 04 RG_B := RG_B + 1;

010D 4F RG_C := RG_A;

010E 7D RG_A := RG_L;

010F 2F; //invert RG_A

0110 6F RG_L := RG_A;

0111 7C RG_A := RG_H;

0112 2F; //invert RG_A

0113 67 RG_H := RG_A;

0114 23 ((H)(L)) := ((H)(L)) + 1;

0115 09 ((H)(L)) := ((H)(L)) + ((B)(C));



0116 76; //Остановка


База данных защищена авторским правом ©bezogr.ru 2016
обратиться к администрации

    Главная страница