Sch_0 db 0 ;счетчик нулевых элементов вектора
Sch_pol db 0; счетчик положительных элементов вектора Sch_otr db 0; счетчик отрицательных элементов вектора. Фрагмент сегмента кода для подсчета элементов может быть следующим: Mov cx, len_mas; инициализация счетчика цикла Xor si, si; инициализация индексного регистра Cycl: cmp mas[si], 0; сравниваем элемент вектора с 0 Jz zero; нуль-элементы считаем в блоке zero Jg pol; элементы> 0 считаем в блоке pol Inc Sch_otr; увеличиваем счетчик элементов < 0 Jmp kon_cycl Zero: Inc Sch_0; увеличиваем счетчик нулевых элементов Jmp kon_cycl pol: Inc Sch_pol; увеличиваем счетчик элементов > 0 kon_cycl: inc si; переходим к следующему элементу вектора Loop cycl; завершаем цикл.
Результат работы программы из примера:
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Изучить приведенный теоретический материал к лабораторной работе. 2. Написать программы в соответствии с заданным преподавателем вариантом. 3. Оттранслировать программы в объектный код. 4. Провести отладку программ и проверить получаемые результаты.
СОДЕРЖАНИЕ ОТЧЕТА Отчет должен включать: § титульный лист; § описание цели работы; § описание задания на лабораторную работу; § словесные пояснения к алгоритму решения задачи и схему программы; § листинги программ; § результаты выполнения программ; § выводы.
5. ВАРИАНТЫ ЗАДАНИЙ
1. Преобразовать символьную строку заданной длины, изменив все строчные буквы латинского алфавита на прописные. 2. Определить, сколько цифровых и нецифровых символов присутствует в заданной символьной строке. 3. Определить, сколько символов кириллицы и латиницы присутствует в заданной символьной строке. 4. Определить, сколько знаков отношения (<, >, =) присутствует в заданной символьной строке. 5. Преобразовать заданную символьную строку, изменив прописные буквы латиницы на их порядковые номера в алфавите. Примечание к кодированию заданий 1-5: при написании алгоритмов преобразований необходимо использовать таблицу кодов ASCII, которая приводится в приложении 3. 6. Подсчитать количество положительных и отрицательных элементов в заданном векторе и определить, каких элементов в векторе больше а) элементы вектора однобайтовые; б) элементы вектора двухбайтовые. 7. Подсчитать количество нулевых и ненулевых элементов в заданном векторе и определить, каких элементов в векторе больше а) элементы вектора однобайтовые; б) элементы вектора двухбайтовые. 8. Подсчитать количество неотрицательных элементов в заданном двумерном массиве а) элементы массива однобайтовые; б) элементы массива двухбайтовые. 9. Подсчитать количество неположительных элементов в заданном двумерном массиве а) элементы массива однобайтовые; б) элементы массива двухбайтовые. 10. Подсчитать количество положительных и отрицательных элементов в заданном двумерном массиве и определить, каких элементов в нем больше а) элементы массива однобайтовые; б) элементы массива двухбайтовые. Примечание: к кодированию пунктов 8-10: в программе необходимо реализовать такую конструкцию, как “вложенные циклы”. Кроме того, понятие массива и индексации массива весьма условны, ибо в памяти ЭВМ элементы массива располагаются последовательно, строка за строкой, в результате чего физическая структура двумерного массива и вектора (одномерного массива) оказываются одинаковыми. Отличие двумерного массива и вектора заключается в интерпретации области памяти, отведенной этим структурам. Наращивание индекса элемента структуры определяется алгоритмом обработки.
Контрольные вопросы
1. Каков синтаксис команд условного перехода? 2. Какие флаги анализируют команды безусловного перехода? 3. Как формируется машинный код команды безусловного перехода ассемблера? 4. Что такое близкий и дальний переходы в ассемблере? 5. Как различить в командах прямой и косвенный переходы? 6. Какие действия выполняют команды цикла в ассемблере? 7. Какую команду необходимо предусмотреть перед меткой перехода для цикла?
|