- •1.2.2. Команды управления циклом
 - •1.2.3. Работа с массивами
 - •1.3. Задание на лабораторную работу
 - •1.4. Отчет по лабораторной работе
 - •2. Лабораторная работа № 4
 - •2.1. Общие методические указания по выполнению лабораторной работы
 - •2.2. Теоретические сведения
 - •2.2.1. Стек и сегмент стека
 - •2.2.2. Стековые команды
 - •2.2.3 Приемы работы со стеком
 - •2.3. Задание на лабораторную работу
 - •2.4. Отчет по лабораторной работе
 - •3 .Лабораторная работа № 5
 - •3.1. Общие методические указания по выполнению лабораторной работы
 - •3.2. Теоретические сведения
 - •3.2.1. Дальние переходы
 - •3.2.2. Подпрограммы (процедуры)
 - •3.3. Задание на лабораторную работу
 - •3.4. Отчет по лабораторной работе
 - •4. Лабораторная работа № 6
 - •4.1. Общие методические указания по выполнению лабораторной работы
 - •4.2. Теоретические сведения
 - •4.2.1. Общие сведения о процессах и потоках
 - •4.2.2. Описание свойств и методов компонента StringGrid
 - •4.2.3. Получение информации о процессах и потоках
 - •4.3.Задание на лабораторную работу
 - •4.4. Отчет по лабораторной работе
 
3.3. Задание на лабораторную работу
1) Изучить и выполнить программы-примеры из теоретического введения к лабораторной работе. Проследить за использованием стека и регистров для передачи управления и параметров.
2) Написать и выполнить программу, реализующую работу с процедурами сообразно своему варианту из таблицы 5. Программа должна быть реализована в двух вариантах:
– передача параметров в процедуру осуществляется через регистры;
– передача параметров в процедуру осуществляется через стек.
Таблица 5
Варианты заданий на лабораторную работу
№ вар.  | 
		Задание  | 
	
1  | 
		Даны массивы P (10 байт) и Q (7 байт). Найти количество положительных элементов в обоих массивах. Подсчет количества положительных элементов оформить как процедуру.  | 
	
2  | 
		Даны массивы X (5 слов) и Y (6 слов). Найти количество элементов, равных 0, в обоих массивах. Подсчет количества нулей оформить как процедуру.  | 
	
3  | 
		Даны массивы J (7 байт) и В (5 байт). Заменить все отрицательные элементы в массивах на -1, положительные – на 1. Замену элементов оформить как процедуру.  | 
	
4  | 
		Даны массивы M (6 байт) и Т (7 байт), заполненные различными символами. Заменить все символы «*» в массивах на «#». Замену элементов оформить как процедуру.  | 
	
5  | 
		Даны массивы R (6 байт) и Т (7 байт), заполненные различными символами. Подсчитать количество символов «!» в обоих массивах. Подсчет символов оформить как процедуру.  | 
	
6  | 
		Даны массивы A (5 слов) и B (4 слова). Найти сумму всех положительных элементов каждого массива. Подсчет суммы элементов оформить как процедуру.  | 
	
7  | 
		Даны массивы E (7 слов) и F (5 слов). Найти количество четных элементов в каждом массиве. Подсчет количества четных элементов оформить как процедуру.  | 
	
8  | 
		Даны массивы I (7 слов) и J (5 слов). Заменить все нечетные элементы на 0 в каждом массиве. Замену нечетных элементов оформить как процедуру.  | 
	
9  | 
		Даны массивы I (6 слов) и J (7 слов). Найти сумму всех нечетных элементов массивов. Подсчет суммы элементов оформить как процедуру.  | 
	
Продолжение табл. 5
10  | 
		Даны массивы L (10 байт) и M (7 байт), заполненные различными символами. Определить количество слов (слово - группа символов, не содержащая других пробелов внутри себя и отделенная от других символов пробелами) в каждом массиве. Подсчет количества слов оформить как процедуру.  | 
	
11  | 
		Даны массивы T (8 байт) и U (7 байт). Определить минимальный положительный элемент в каждом массиве. Поиск элемента оформить как процедуру.  | 
	
12  | 
		Даны массивы A (6 слов) и B (7 слов). Определить максимальный отрицательный элемент в каждом массиве. Поиск элемента оформить как процедуру.  | 
	
Дополнительное задание (по желанию). Реализовать переход на процедуру и возврат из нее без использования команд CALL и RET (используя PUSH, POP, JMP).
3) Выполнить индивидуальное задание, которое рассматривается в качестве зачетной работы по всему курсу ассемблера (задание выдается преподавателем).
Примеры зачетных заданий
Задание 1. Дано:
X, Y – массивы по 3 восьмибитовых числа со знаком;
SUM – 16-битовая переменная.
В каждом массиве найти среднее по величине число (не среднее значение, а среднее из трех по величине), вычислить сумму двух полученных чисел и поместить ее в переменную SUM.
Определение среднего из трех чисел оформить в виде процедуры. Параметры передать через регистры AL, AH и BL. Результат вернуть через регистр BH.
Задание 2. Дано:
три массива чисел-слов без знака: X – 20 чисел, Y – 30 чисел, Z – 16 чисел;
SUM – переменная – двойное слово.
Найти максимум в каждом из массивов, а затем вычислить сумму этих максимумов. Полученную сумму поместить в переменную SUM.
Вычисление максимума оформить в виде процедуры. Параметры передать через стек. Результат вернуть в регистре DX.
Задание 3. Дано:
X, Y – массивы по 3 восьмибитовых числа со знаком;
SUM – 16-битовая переменная.
В каждом массиве найти среднее по величине число (не среднее значение, а среднее из трех по величине), вычислить сумму двух полученных чисел и поместить ее в переменную SUM.
Определение среднего из трех чисел оформить в виде процедуры. Параметры передать через стек. Результат вернуть через регистр AL.
Задание 4. Дано:
три массива чисел-слов без знака: X – 20 чисел, Y – 30 чисел, Z – 16 чисел;
SUM – переменная – двойное слово.
Найти максимум в каждом из массивов, а затем вычислить сумму этих максимумов. Полученную сумму поместить в переменную SUM.
Вычисление максимума оформить в виде процедуры. Параметры передать через регистры. Результат вернуть в регистре DX.
