Файл: Отчет по лабораторным работам по дисциплине Вычислительные машины сети и системы.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 08.02.2024

Просмотров: 29

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа №6 (Изучение использование стека и подпрограмм. Организация внутрисегментных и межсегментных переходов)


Задание:

Цель работы: приобретение навыков использования команд безусловного перехода для организации внутрисегментных и межсегментных переходов и стека при написании ассемблерных программ и вставок, получение представления об особенностях обработки данных, команд и режимах доступа к данным при организации переходов и использовании стека.
Выполнение работы

  1. Написать простейшую программу либо на языке ассемблера либо используя ассемблерную вставку, используя знания полученные в 1 и 2 лабораторной работе.

  2. Описать сегмент стека, в котором зарезервировать 30 ячеек, занятых нулями.

  3. Описать два сегмента данных: в первом определить массив из семи однобайтовых чисел; во втором – определить массив из семи однобайтовых элементов, первоначально занятых нулями, а также две однобайтовые ячейки для хранения минимального и максимального элементов массива соответственно.

  4. Программы нахождения минимального, максимального элементов массива, а также реверсирования массива оформить в виде процедур ближнего вызова.

  5. Реверсирование массива реализовать с использованием стека.

  6. Результаты работы каждой процедуры поместить в другой сегмент данных в соответствующие ячейки. При этом переход в другой сегмент необходимо выполнить один раз в конце основной программы, после чего переписать в него данные из соответствующих регистров.

  7. Написать отчет о проделанной работе.



Список литературы



1.Максимов Н.В., Партыка Т.Л., Попов И.И Архитектура ЭВМ и вычислительных систем. —М.: Форум, 2008. — 512с.

2.Гук.М.Ю. Аппаратные средства РС. Энциклопедия. –ЗАО «Питер», 2008.

3.Жмакин А.П. Архитектура ЭВМ. — BHV-Санкт-Петербург, 2008 г. . — 320 с.

4.Крейгон Р. Архитектура компьютеров и ее реализация. — М.: Мир, 2004.

— 412с

5.Демидович Е.М. Программирование на Си. Минск: Из-во Университет-


ское, 2005 г.

6.Демидович Е.М.. Программирование на ассемблере. Минск: Из-во Университетское, 2003г.

7.Кулаков В.И. Программирование внешних устройства. Издательский дом

―Питер‖, 2004

8.Гук М.И, Юров В.С.Процессоры Pentium 4 Athlon и Duron.Издательский дом ―Питер‖, 2001.

9.Касаткин А.И. Управление ресурсами. Мн.: Высшая школа,1992.

10.Касаткин А.И. Системное программирование Мн.: Высшая школа,1993 г. 11.Гордеев А.В. Операционные системы. Учебник для ВУЗов. 2-е изд. Спб.,

Питер, 2005.

12.Юров В.И. Assembler. Учебник для ВУЗов. СПб., Питер, 2005.

13.Грегори К. Использование VisualC++ 6. Специальное издание. М., СПб., К., изд. дом ―Вильямс‖, 2000.

14.Таненбаум Э. Современные операционные системы. Спб, Питер, 2004. 15.Григорьев В.Л. Видеосистемы ПК фирмы IBM. -М.: Радио и связь, 1993.

16.Гук М. Процессоры Intel: от 8086 до Pentium II. - СПБ.: Питер, 1998.

17.Гук М.Г. Аппаратные интерфейсы ПК. Энциклопедия. - СПб.: Питер,

2006. – 1072 с.

18.Гук М.Г. Шины PCI, USB и FireWire. Энциклопедия. - СПб.: Питер, 2005.

– 540 с.

19.Петров С.В. Шины PCI, PCI Express. Архитектура, дизайн, принципы функционирования. – СПб.: БХВ, 2006. – 416 с.

20.Гук М.Г. Дисковая подсистема ПК. СПб: Питер, 2001. - 336 с.

21.Гук М.Г. Интерфейсы устройств хранения: ATA, SCSI и другие. Энциклопедия. СПб.: Питер, 2006. – 448 с.

22.Агуров П.А. Практика программирования USB. СПб.: БХВ, 2005. – 624 с. 23.Колесниченко О.Г., Шишигин И. В. Аппаратные средства РС, 5-е изд.

СПб.: БХВ, 2005. – 1152 с..

24.Морисита И. Аппаратные средства МикроЭВМ: Пер. с япон. М.: Мир,

1988.

25.Щелкунов Н.Н., Дианов А.П. Микропроцессорные средства и системы. М.: Радио и связь, 1990.

26.Фрир Дж. Построение вычислительных систем на базе перспективных микропроцессоров : Пер. с англ. М.: Мир, 1990.

27.Фридмен М., Ивенс Л. Проектирование систем с Микрокомпьютерами: Пер с англ. М.: Мир, 1986..

28.«Микропроцессоры» кн.1, кн.2, кн.3. Под ред. Преснухин. Минск, Высшая школа, 1987.

29.Клингман Э. Проектирование микропроцессорных систем: Пер. с англ.

М.: Мир, 1980.

30.Шпаковский Г.И. Организация параллельных ЭВМ и супер скалярных процессоров: Учебное пособие. Мн.: Белгосуниверсит, 1996.

31.Скорик В.Н. и др. Мультимикропроцессорные системы // К.: «Техника»,

1989.

32.Корнеев В.В., Киселев А.В. Современные микропроцессоры. 3-е изд. -

М.:НОЛИДЖ, 2003. -448 с. (А4).

33.David Patterson, John Hennecy. Computer Architecture A Quantitative Approach. 3-ed edition. Morgan Kaufmann Publishers.

34.David Patterson, John Hennecy. Computer Architecture A Quantitative Approach. 4-th edition. Morgan Kaufmann Publishers.

35.Patterson, Hennessy. Computer Organization and Design. The Hardware/Software Interface. Morgan Kaufmann Publishers.

36.Воеводин В.В., Воеводин Вл. В. Параллельные вычисления. – СПб.: БХВ-Петербург, 2004. – 608с.


37.Хамахер К., Вранешич З., Заки С. Организация ЭВМ. 5-е изд. –

СПб.:Питер, 2003. – 848 с.

38.SPEC CPU2006 Benchmark Descriptions

39.Mark Smotherman, Understanding EPIC Architectures and Implementations.

40.Alpha Architecture Handbook Version 4

41.MIPS IV Instruction Set Version 3.2

42.Power ISA Version 2.04

43.The SPARC Architecture Manual Version 9

44.Intel Itanium Architecture Software Developer’s Manual

45.Intel® 64 and IA-32 Architectures Optimization Reference Manual

46.AMD64 Architecture Programmer`s Manual

47.Intel Compiler 10 Reference Manual

48.Sun Microsystems OpenSPARC T1 Microarchitecture Specification

49.Manish Shah, Jama Barreh, and others. UltraSPARC T2: A Highly-Threaded, Power-Efficient, SPARC SOC, Sun Microsystems

50.Скляров В.А. Методическая разработка по применению персональных ЭВМ в учебном процессе и в научных исследованиях для студентов всех специальностей. «Управление ресурсами ПЭВМ", Мн.: ротопринт МРТИ, 1989 г.

51.Прерывания операционной системы. Мн.: ротопринт МРТИ, 1989 г. 52.Алгоритмические языки Си и Паскаль. Мн.: ротопринт МРТИ, 1989 г.

53.Cмит В.Э., Джонсон М.Т. Архитектура и программирование микропроцессора INTEL 80386. -М.: СП "Конкорд", 1992.

54.Бродин В.Б., Шагурин И.И. Микропроцессор i486. Архитектура, программирование, интерфейс. - М.: "Диалог-МИФИ", 1993.

55.Ларионов А.М., Горнец Н.Н. Периферийные устройства в вычислительных системах: Учеб. пособие для вузов.– М.: Высш.шк., 1991.– 336 с.

56.Григорьев В.Л. Архитектура и программирование арифметического сопроцессора.– М.: Энергоатомиздат, 1991.– 208 с.

57.Нортон П. Программно-аппаратная организация IBM PC: Пер. с англ.– М.: Радио и связь, 1992.– 336 с.

58.Венгер В.А. и др. Аппаратура персональных компьютеров и ее програм-

мирование. IBM PC/XT/AT и PS/2. -М.: Радио и связь, 1995.

59.Руководство по архитектуре IBM PC AT/ Ж.К.Голенкова, А.В. Заблоцкий, М.Л.Мархасин и др.; Под общ.ред. М.Л.Мархасина. -Мн.:ООО

«Консул», 1992.

60.Таненбаум Э. С. Архитектура компьютера. 5-е изд. (+CD). СПб.: Питер,

2007 – 848 с.

61.Несвижский В.И. Программирование устройств SCSI и IDE. СПб.: БХВ,

2003. – 586 с.

62.Комиссарова В.А. Программирование драйверов для Windows. СПб.:

БХВ, 2007. – 256 с.

63.Магда Ю.А. Аппаратное обеспечение и эффективное программирование.

СПб.: Питер, 2007. – 352 с.

64.Солдатов В.С. Программирование драйверов Windows. Третье издание.

М.: Бином, 2006. – 480 с.

65.Самарин А.В. Жидкокристаллические дисплеи. Схемотехника, конструкция и применение. М.: Солон, 2002. – 304 с.

66.Морс С.П., Алберт Д.Д. Архитектура микропроцессора i80286: Пер. с. англ. М.: Радио и связь, 1990

67.Гук М. Процессоры Intel: от 8086 до Pentium II, С. Пб.: Питер, 1997.

68.Гук М. Процессоры Pentium II, Pentium Pro, и просто Pentium. С. Пб.:

ПитерКом, 1999.

69.Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088. Архитектура, программирование и проектирование микрокомпьютерных систем: Пер. с англ. М.: Радио и связь, 1987.


70.Цифровой процессор обработки сигналов TMS320c10 и его применение / Под ред. А.А. Ланнэ. Л.: ВАС, 1990

71.Шпаковский Г.И. Параллельные микропроцессоры для ЦОС и МД. -Мн.:

БГУ,2000. -196 с.(А5).

72.Шагурин И.И., Бердышев Е.М. Процессоры семейства INTEL P6, Pentium 2,3, Celeron и др. Архитектура программирование, интерфейс. СПРАВОЧНИК. -М.: Горячая линия/Теле ком, 2000. -248 с.(А5).

73.Кулаков В. Программирование на аппаратном уровне. Спец. справочник.

-СПб:Питер, 2001. -490 с. (А4).

74.Алгоритмы и процессоры цифровой обработки сигналов. – СПб.: БХВ-

Петербург, 2003. – 464с.

75.Kongetira, P. Aingaran, K. Olukotun, K. Niagara: a 32-way multithreaded Sparc processor. Micro IEEE. March-April 2005, Volume: 25, page 2129.

76.NVIDIA CUDA™ Programming Guide - NVIDIA Corp.

77.Таненбаум Э. Архитектура компьютера: 4-е изд. СПб.: Питер, 2005.

Голенкова Ж.К., Заболоцкий А.B., Мархасин М.Л. и др. Руководство по архитектуре IBM PC AT/ Под общ. ред. М.Л.Мархасина. - Мн.: ООО «Консул», 1992.-949с.: ил.

78.Кулаков В. Программирование на аппаратном уровне: Специальный справочник. – СПб.: Питер, 2001.- 496 с.: ил.

Левкин Г.Н., Левкина В.Е. Введение в схемотехнику ПЭВМ IBM PC/AT. -М.: Изд-во МПИ, 1991..

79.Дженнингс. Ф. Практическая передача данных. Модемы, сети и протоколы. -М.: Мир, 1989.

80.Григорьев В.Л. Видеосистемы ПК фирмы IBM. - М.: Радио и связь, 1993.- 192 с.: ил.

81.Новиков Ю.В., Калашников О.А., Гуляев С.Э. Разработка устройств сопряжения для персонального компьютера типа IBM PC: Практическое пособие. -М.: ЭКОМ, 2000. – 224 с.

82.Юров В. Assembler. – СПб.: Питер, 2001.- 624 с.: ил.

83.Курейчик К.П., Дорощук Е.А. Электронное комплекс «Архитектура персональных ЭВМ». Мн.: БГУИР, кафедра ЭВМ, 2006.

84.Кобяк И.П. Архитектура компьютерных систем. Учебное пособие по курсу ТиП и СИФО ЭВМ для студентов специальностей Т10.03.00.Минск, 2001.

85.Лосич В.А., Радишевский В.А. Основы теории операционных систем. Учебное пособие по курсу ―Системное программное обеспечение‖ для студентов специальности Т 10.03.00 ―Вычислительные машины, системы и сети‖. Мн., БГУИР, 2001.

86.Технология проектирования программного обеспечения ЭВМ: учеб. пособие для студентов специальности I-40 02 01 «Вычисл. машины, системы и сети» всех форм обучения / А.В.Отвагин. – Мн.: БГУИР, 2005. – 56 с.: ил.

87.Курмаз М.А. Лабораторный практикум по дисциплине "Периферийные устройства ЭВМ" с разделом "Интерфейсы ЭВМ" для студентов специальности 1 - 40 02 01 "Вычислительные машины, системы и сети" всех форм обучения.

88.Петровский А.А., Микропроцессорные средства и системы: Лаб. практикум по для студ. спец. I-40 02 01 «Вычислительные машины, системы и сети» всех форм обуч. – Мн.: БГУИР, 2006. – 51 с.


89.Электронный учебно-методический комплекс по курсу «Микропроцессорные средства и системы» для всех форм обучения по специальности I- 40 02 01.

90.Добулевич А.А. Методы и устройства повышения производительности процессоров: лабораторный практикум по курсу АВПП. – Мн.: БГУИР,
2001. – 54с.

90.Добулевич А.А. Исследование эффективности конвейеризации в микро процессорных системах. Лабораторный практикум. – Мн. БГУИР, 2003

Приложение


// Программа, в которой создается два числовых массива одинакового размера. Вычисляет сумму попарных произведений элементов этих массивов. Данная программа содержит ассемблерную вставку.
#include

#include
using namespace std;
// Константа для указания максимальной длинны массивов

constexpr unsigned int ARR_SIZE = 10;

constexpr unsigned int MAX = 15;

constexpr unsigned int MIN = -5;
void task()

{

// Объявление переменных

int result = 0;

unsigned int counter = 0;

int arr_a[ARR_SIZE], arr_b[ARR_SIZE];
cout << "a b\n";
// Инициализация массивов случайными значениями

for (int i = 0; i < ARR_SIZE; i++)

{

arr_a[i] = MIN + rand() % MAX;

arr_b[i] = MIN + rand() % MAX;
cout << arr_a[i] << " " << arr_b[i] << endl;

}
// Ассемблерная вставка

_asm {

BEGIN:

mov eax, 4 // перемещение указателя с шагом 4 байта

mul counter

mov ebx, eax
mov eax, dword ptr arr_a[ebx]

imul dword ptr arr_b[ebx]

add result, eax

inc counter

mov eax, counter

cmp eax, ARR_SIZE

jne BEGIN

}
// Вывод результатов вычислений на ассемблере

cout << "result: " << result << endl;
// Проверка вычислений на корректность с помощью С++

int cpp_result = 0;
for (int i = 0; i < ARR_SIZE; i++)

{

cpp_result += arr_a[i] * arr_b[i];

}
// Вывод результатов вычислений на С++

cout << "cpp_result: " << cpp_result << endl;

}

int main()

{

// Случайное зерно для генератора

srand((unsigned int)time(NULL));
// Основной код

task();

}


// Lab2.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.

//
#include

#define _CRT_SECURE_NO_WARNINGS

#include

#define N 3 // Кол-во строк

#define M 4 // Кол-во столбцов
// Инициализация переменных

int menu;

FILE* F1;

FILE* F2;

int mas[N][M]; // Массив матрицы

int indi[M]; // Массив индексов i

int indj[M]; // Массив индексов j

int min[M]; // Массив локальных минимумов

int k = 0; // Счетчик локальных минимумов

int count = 0; // Счетчик матриц
int main()

{

// Проверка на доступ к файлам

if ((F1 = fopen("F1.txt", "w")) == NULL) {

printf("Error! File doesn'r exist.");

return 1;

}

if ((F2 = fopen("F2.txt", "w")) == NULL) {

printf("Error! File doesn'r exist.");

return 1;

}
// Замкнутый цикл с постусловием

do

{

// Пользовательское меню

printf("Choose action:\n");

printf("[1] Enter matrix.\n");

printf("[2] Exit.\n");

scanf("%d", &menu);

switch (menu) {

case 1:
// Ввод элементов матрицы

printf("Enter matrix elements:\n");

for (int i = 0; i < N; i++) {

for (int j = 0; j < M; j++) {

printf("a%d%d = ", i, j);

scanf("%d", &mas[i][j]);

}

}

count++;
// Запись матриц(-ы) в файл F1

fprintf(F1, "Номер матрицы: %d\nМатрица:\n", count);

for (int i = 0; i < N; i++) {

for (int j = 0; j < M; j++) {

fprintf(F1, "%d", mas[i][j]);

}

}

fprintf(F1, "\n\n");
// Поиск локального минимума

for (int i = 0; i < N; i++) {

for (int j = 0; j < M; j++) {

if ((mas[i][j] < mas[i + 1][j]) && (mas[i][j] < mas[i][j + 1]) && (mas[i][j] < mas[i - 1][j]) && (mas[i][j] < mas[i][j - 1])) {

int ry1 = mas[i][j];
// Ассемблерная вставка:

// Определение и запись локального минимума

_asm {

mov esi, k

mov eax, ry1

mov ebx, i

mov ecx, j

inc esi

mov indi[esi], ebx

mov indj[esi], ecx

xor ebx, ebx

xor ecx, ecx

mov k, esi

mov min[esi], eax

xor eax, eax

xor esi, esi

}

}

}

}
// Запись сведений матриц(-ы) в файл F2

fprintf(F2, "№ матрицы: %d\n", count);

fprintf(F2, "Кол-во минимумов: %d\nЗначения: ", k);

for (int i = 0; i < k; i++) {

fprintf(F2, "[%d] ", min[i]);

}

fprintf(F2, "\nИндексы: ");

for (int i = 0; i < k; i++) {

fprintf(F2, "[%d][%d] ", indi[i], indj[i]);

}

fprintf(F2, "\n\n");

break;

case 2:
// Условие для выхода из цикла

menu = 2;

break;

}

system("pause");

system("cls");

} while (menu != 2);

return 0;

}