Выполнить лабораторку

Тема в разделе "WASM.COMMERCE", создана пользователем JhonyBoy, 15 апр 2020.

  1. JhonyBoy

    JhonyBoy New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2020
    Сообщения:
    6
    Привет!

    Необходимо сделать лабораторную работу на асм (fasm) в эмуляторе emu8086.

    О цене в личку

    Задание под спойлером
    4. Используя прямую (первый вариант) и косвенную (второй вариант) адресацию, написать программы на ассемблере, выполняющие алгоритмы преобразований.
    Примечания к кодированию программ:
    1) программа с использованием прямой адресации будет похожа на приведенную в предыдущей лабораторной работе программу, только непосредственные значения смещений в командах должны измениться в соответствии с заданным алгоритмом;
    2) для варианта косвенной адресации зашлите адреса начала массивов в базовый и индексный регистры, например командами:


    MOV BX, SOURCE
    MOV DI, DEST,


    и далее используйте регистры BX и DI для адресации элементов массивов.
    Провести отладку программы и проверить получаемые результаты.

    4.1. Задать одномерный массив, состоящий из 10 элементов. Заполнить массив константами. Переместить заданный массив в другую область памяти (другой массив), поменяв местами элементы с четными и нечетными номерами (поставив каждый элемент с четным номером на место нечетного элемента и каждый элемент с нечетным номером – на место четного)
    а) элементы массива – однобайтовые;
    б) элементы массива – двухбайтовые;
    4.2. Задать одномерный массив, состоящий из 10 элементов. Заполнить массив константами. Переместить в другую область памяти элементы с нечетными номерами
    а) элементы массива – однобайтовые;
    б) элементы массива – двухбайтовые;
    4.3. Задать одномерный массив, состоящий из 10 элементов. Заполнить массив константами. Переместить в другую область памяти элементы с четными номерами
    а) элементы массива – однобайтовые;
    б) элементы массива – двухбайтовые;
    4.4. Задать одномерный массив, состоящий из 10 элементов. Заполнить массив константами. Создать новый одномерный массив, поместив в него на место элементов с четными номерами элементы заданного массива с нечетными номерами и обнулив элементы нового массива с нечетными номерами
    а) элементы массива – однобайтовые;
    б) элементы массива – двухбайтовые;
    4.5. Задать одномерный массив, состоящий из 10 элементов. Заполнить массив константами. Создать новый одномерный массив, поместив в него на место элементов с нечетными номерами элементы заданного массива с нечетными номерами и заполнив элементы нового массива с четными номерами максимальными значениями констант
    а) элементы массива – однобайтовые;
    б) элементы массива – двухбайтовые.

    5. Разработать программу на языке ассемблера с использованием команд перехода и организации циклов
    5.1. Преобразовать символьную строку заданной длины, изменив все строчные буквы латинского алфавита на прописные.
    5.2. Определить, сколько цифровых и нецифровых символов присутствует в заданной символьной строке.
    5.3. Определить, сколько символов кириллицы и латиницы присутствует в заданной символьной строке.
    5.4. Определить, сколько знаков отношения (<,>,=) присутствует в заданной символьной строке.
    5.5. Преобразовать заданную символьную строку, изменив прописные буквы латиницы на их порядковые номера в алфавите.
    Примечание к кодированию заданий 5.1-5.5: при написании алгоритмов преобразований необходимо использовать таблицу кодов ASCII.
    5.6. Подсчитать количество положительных и отрицательных элементов в заданном векторе и определить, каких элементов в векторе больше
    а) элементы вектора однобайтовые;
    б) элементы вектора двухбайтовые.
    5.7. Подсчитать количество нулевых и ненулевых элементов в заданном векторе и определить, каких элементов в векторе больше
    а) элементы вектора однобайтовые;
    б) элементы вектора двухбайтовые.
    5.8. Подсчитать количество неотрицательных элементов в заданном двумерном массиве
    а) элементы массива однобайтовые;
    б) элементы массива двухбайтовые.
    5.9. Подсчитать количество неположительных элементов в заданном двумерном массиве
    а) элементы массива однобайтовые;
    б) элементы массива двухбайтовые.
    5.10. Подсчитать количество положительных и отрицательных элементов в заданном двумерном массиве и определить, каких элементов в нем больше
    а) элементы массива однобайтовые;
    б) элементы массива двухбайтовые.
    Примечание к кодированию пунктов 5.8-5.10: в программе необходимо реализовать такую конструкцию, как “вложенные циклы”. Кроме того, понятие массива и индексации массива весьма условны, ибо в памяти ЭВМ элементы массива располагаются последовательно, строка за строкой, в результате чего физическая структура двумерного массива и вектора (одномерного массива) оказываются одинаковыми. Отличие двумерного массива и вектора заключается в интерпретации области памяти, отведенной этим структурам. Наращивание индекса элемента структуры определяется алгоритмом обработки.

    6. Задан массив чисел из 10 элементов (для двумерного 10х10) (элементы массива от 0
    до 9)
    6.1. Найти первый максимальный элемент вектора и вывести на экран его индекс:
    а) элементы вектора однобайтовые;
    б) элементы вектора двухбайтовые.
    6.2. Найти максимальный элемент вектора и подсчитать и вывести на экран количество таких элементов
    а) элементы вектора однобайтовые;
    б) элементы вектора двухбайтовые.
    6.3. Найти первый максимальный элемент двухмерного массива и вывести на экран его индекс:
    а) элементы массива однобайтовые;
    б) элементы массива двухбайтовые.
    6.4. Найти сумму всех отрицательных элементов двухмерного массива, а среди положительных найти максимальный и вывести на экран его индекс:
    а) элементы массива однобайтовые;
    б) элементы массива двухбайтовые.
    6.5. Найти сумму всех положительных элементов двухмерного массива, а среди отрицательных найти минимальный и указать его местоположение:
    а) элементы массива однобайтовые;
    б) элементы массива двухбайтовые.
    6. Найти минимальный и максимальный элементы двухмерного массива и вывести на экран их индекс:
    а) элементы массива однобайтовые;
    б) элементы массива двухбайтовые.

    Примечания к реализации вывода значений элементов и их индексов на экран дисплея: - десятичная цифра отличается от символа этой цифры на 30h, в чем легко убедиться, изучив таблицу кодов ASCII. Например, если искомый максимальный элемент записан в переменную max, то фрагмент программы для его вывода на экран дисплея может быть следующим:

    mov dl, max
    add dl, 02h
    int 21h

    - предыдущий фрагмент применим в случае, если максимальное значение элемента является однозначным. Если элементы массива двухзначные (лежат в диапазоне от 10 до 99), то сначала необходимо выделить отдельные цифры, а затем их последовательно их распечатать:

    mov al, max
    cbw ;преобразуем байт в полное слово
    div byte c ;константа с объявлена в сегменте данных как c equ 10
    mov dl,al ;старшую цифру помещаем в dl add dl, 02h ; и выводим ее на экран
    int 21h
    mov dl,ah ;младшую цифру помещаем в dl
    add dl, 02h ; и выводим ее на экран
    int 21h
     
    Последнее редактирование: 15 апр 2020