- •Содержание
- •Лабораторная работа № 3
- •2.2. Команда безусловного перехода
- •2.3. Организация циклов
- •3. Порядок выполнения работы
- •4. Содержание отчета
- •5. Варианты заданий
- •6. Контрольные вопросы
- •2.2. Сложение и вычитание целых чисел
- •2.3. Умножение и деление целых чисел
- •3. Порядок выполнения работы
- •6. Контрольные вопросы
- •Лабораторная работа № 5 Программирование операций ввода-вывода
- •2. Основные теоретические сведения
- •3. Порядок выполнения работы
- •4. Содержание отчета
- •5. Варианты заданий
- •Int 21h
- •Int 21h
- •Int 21h
- •6. Контрольные вопросы
3. Порядок выполнения работы
1. Изучить приведенный теоретический материал к лабораторной работе.
2. В соответствии с вариантом задания написать программу на ассемблере.
3. Оттранслировать программу в объектный код.
4. Провести отладку программы и проверить получаемые результаты.
СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен включать:
титульный лист;
описание цели работы;
описание задания на лабораторную работу;
словесные пояснения к алгоритму решения задачи и схему программы (обращаю Ваше внимание на то, что понятие массива и индексации массива весьма условны, ибо в памяти ЭВМ элементы массива располагаются последовательно, строка за строкой. Поэтому физическая структура двумерного массива и вектора (одномерного массива) оказываются одинаковыми. Отличие двумерного массива и вектора заключается в интерпретации области памяти, отведенной этим структурам. Наращивание индекса элемента структуры определяется алгоритмом обработки структуры данных);
листинги программ;
результаты выполнения программ;
выводы.
ВАРИАНТЫ ЗАДАНИЙ.
Написать и отладить программы.
Подсчитать количество четных (нечетных) элементов двухмерного массива
а) элементы массива однобайтовые;
б) элементы массива двухбайтовые.
Подсчитать сумму элементов строк (столбцов) двухмерного массива
а) элементы массива однобайтовые;
б) элементы массива двухбайтовые.
Подсчитать сумму всех элементов двухмерного массива и найти медиану (среднее арифметическое)
а) элементы массива однобайтовые;
б) элементы массива двухбайтовые.
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.
Следует отметить, что такая реализация обнаружения четности-нечетности самая неудачная, потому что операция деления относится к “длинным” операциям и занимает значительно больше процессорного времени, чем предыдущие команды. Кроме того, необходимо учитывать наличие или отсутствие знака у элементов массива. Приведенный пример предполагает, что элементы массива – беззнаковые.
Для отрицательных целых чисел признаки четности-нечетности будут иными!