- •Введение
 - •Лабораторная работа № 1 Трансляция, компоновка и отладка программ
 - •1.1. Цельработы
 - •1.2.1. Архитектура компьютера
 - •1.2.2. Процедуры формирования программы
 - •1.2.3. Структура программы
 - •1.2.4. Пример программы на Ассемблере
 - •1.3. Порядок выполнения работы
 - •1.4. Содержание отчета
 - •Лабораторная работа № 2
 - •[Метка:] мнемокод [операнд] [; комментарий]
 - •2.2.2. Режимы адресации
 - •2.3. Порядок выполнения работы
 - •2.4. Содержание отчета.
 - •2.5. Варианты заданий
 - •Лабораторная работа № 3
 - •3.2.2. Команда безусловного перехода
 - •3.2.3. Организация циклов
 - •Inc операнд ,
 - •3.3. Порядок выполнения работы
 - •3.4. Содержание отчета
 - •3.5. Варианты заданий
 - •Лабораторная работа № 4
 - •4.2.2. Сложение и вычитание целых чисел
 - •4.2.3. Умножение и деление целых чисел
 - •4.3. Порядок выполнения работы
 - •4.4. Содержание отчета
 - •4.5. Варианты заданий.
 - •Лабораторная работа № 5 Программирование операций ввода-вывода
 - •5.1. Цель работы
 - •5.2. Основные теоретические сведения
 - •Int 21h ; прочитать строку.
 - •5.3. Порядок выполнения работы
 - •5.4. Содержание отчета
 - •5.5. Варианты заданий
 
4.3. Порядок выполнения работы
1. Изучить приведенный теоретический материал к лабораторной работе.
2. В соответствии с вариантом задания написать программу на ассемблере.
3. Оттранслировать программу в объектный код.
4. Провести отладку программы и проверить получаемые результаты.
4.4. Содержание отчета
Отчет должен включать:
титульный лист;
описание цели работы;
описание задания на лабораторную работу;
словесные пояснения к алгоритму решения
задачи и схему программы (обращаю Ваше
внимание на то, что понятие массива и
индексации массива весьма условны, ибо
в памяти ЭВМ элементы 
листинги программ;
результаты выполнения программ;
выводы.
4.5. Варианты заданий.
Написать и отладить программы.
Подсчитать количество четных (нечетных) элементов двухмерного массива
а) элементы массива однобайтовые;
б) элементы массива двухбайтовые.
Подсчитать сумму элементов строк (столбцов) двухмерного массива
а) элементы массива однобайтовые;
б) элементы массива двухбайтовые.
Подсчитать сумму всех элементов двухмерного массива и найти медиану (среднее арифметическое)
а) элементы массива однобайтовые;
б) элементы массива двухбайтовые.
4. Подсчитать суммы положительных и отрицательных элементов двухмерного массива и определить, какая из них по абсолютной величине больше
а) элементы массива однобайтовые;
б) элементы массива двухбайтовые.
Примечание к заданиям 1-2: в контексте определения четности-нечетности могут быть использованы различные команды ассемблера:
- команда логического умножения (конъюнкции). При этом учитывается то обстоятельство, что четные положительные числа имеют значение младшего двоичного разряда равное 0, а нечетные – 1. То есть, если результат выполнения команд
mov al, mas[si]
and al,1b
равен 0, то число четное, иначе – нечетное;
- команда арифметического сдвига вправо – shr на одну позицию. При этом число уменьшается в 2 раза, а младший разряд числа выталкивается во флаг переноса CF. Далее значение флага анализируется командой JC (переход, если есть перенос) или JNC (переход, если нет переноса);
- команда деления DIV или IDIV, например:
mov al, mas[si] ;если исходные элементы однобайтовые
cbw ;преобразуем байт в полное слово
;если исходные элементы – двухбайтовые слова, то вместо предыдущих команд записываем команду mov aх, mas[si]
div byte ptr c ;константа с объявлена в сегменте данных как c equ 2.
Следует отметить, что такая реализация обнаружения четности-нечетности самая неудачная, потому что операция деления относится к “длинным” операциям и занимает значительно больше процессорного времени, чем предыдущие команды. Кроме того, необходимо учитывать наличие или отсутствие знака у элементов массива. Приведенный пример предполагает, что элементы массива – беззнаковые.
Для отрицательных целых чисел признаки четности-нечетности будут иными!
Контрольные вопросы
1. Как представляются десятичные числа в ассемблере?
2. Когда может возникнуть ситуация переполнения при сложении или вычитании двоичных чисел?
3. Какие команды умножения и деления невозможны в ассемблере?
4. Какие команды используются при сложении (вычитании) десятичных чисел, при умножении (делении) десятичных чисел?
