Имеются два массива по 10 элементов. Сложить по модулю 2 биты 0 и 7. Результат во второй массив. - Assembler
Формулировка задачи:
Доброго времени суток. В универе получил задание написать прогу, но я совершенно не знаю ассемблера, а сдавать уже завтра
Имеются два массива. В каждом 10 элементов. Между 0 и 7 битом каждого элемента первого массива происходит сложение по модулю 2, результат записывается во второй массив. Буду крайне признателен
Решение задачи: «Имеются два массива по 10 элементов. Сложить по модулю 2 биты 0 и 7. Результат во второй массив.»
textual
Листинг программы
.model small .386 .data arr1 db 12,37,29,56,84,90,58,63,47,76 arr2 db 10 dup(?) .stack db 255 dup(?) .code start: mov ax,@data mov ds,ax mov es,ax xor si,si lea di,arr2 mov cx,10 action: mov al,byte ptr arr1[si] mov ah, 0 shl ax, 1 shr al, 1 xor al,ah and al, 1 stosb inc si loop action mov ah,4Ch mov al,00h int 21h end start
Объяснение кода листинга программы
.model small .386 .data arr1 db 12,37,29,56,84,90,58,63,47,76 arr2 db 10 dup(?) .stack db 255 dup(?) .code start: mov ax,@data mov ds,ax mov es,ax xor si,si lea di,arr2 mov cx,10 action: mov al,byte ptr arr1[si] mov ah, 0 shl ax, 1 shr al, 1 xor al,ah and al, 1 stosb inc si loop action mov ah,4Ch mov al,00h int 21h end start В этом коде:
- Сначала мы объявляем два массива: arr1 и arr2.
- Затем мы задаем начальные значения регистрам.
- Мы используем цикл для прохождения по обоим массивам.
- Внутри цикла мы получаем байт из arr1, используя его как индекс.
- Мы сдвигаем этот байт вправо на 1 бит и сохраняем результат в AX.
- Затем мы сдвигаем результат вправо на 1 бит и сохраняем его в AL.
- Мы инвертируем AL и AND его с 1, чтобы получить только старший бит.
- Мы записываем этот старший бит в arr2.
- Мы повторяем шаги 4-8 для каждого элемента в массиве.
- В конце мы выводим сообщение об успешном выполнении программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д