Дан массив из 10 слов. Инвертировать все отрицательные числа и найти сумму элементов полученного массива - Assembler
Формулировка задачи:
Решение задачи: «Дан массив из 10 слов. Инвертировать все отрицательные числа и найти сумму элементов полученного массива»
data segment mas dw dup 10 12, 2, 7, 3, 2, 0, 21, 9, 0, 16 ;исходный массив len dw $-mas ;размер массива в байтах data ends code segment start: assume cs:code, ds: data mov ax, data mov ds, ax lea bx, mas ;берём в bx адрес первого элемента mov cx, len ;счетчик цикла xor ax, ax cikl: add al, [bx] ;прибавляем к al байт, адрес которого хранится в bx inc bx ;переходим к следующему элементу loop cikl aam ;преобразуем сумму в BCD-код add ax, 3030h ;затем в ASCII-код mov bx, ax ;и выводим mov ah, 02 mov dl, bh int 21h mov dl, bl int 21h mov ax, 4c00h int 21h code ends end start
Объяснение кода листинга программы
Вывод на экран: Сначала в регистре BX содержится адрес первого элемента массива. Затем в цикле, пока счётчик CX не станет равным нулю, к регистру AL прибавляется значение элемента массива, адрес которого находится в регистре BX. После этого к BX прибавляется единица, чтобы перейти к следующему элементу. Когда все элементы массива будут обработаны, значение регистра AL будет содержать сумму всех элементов. Затем с помощью функции AAM значение регистра AL преобразуется в BCD-код, к которому добавляется 3030h, чтобы преобразовать его в ASCII-код. Затем полученное значение выводится на экран с помощью функции INT 21h. В конце программы регистр AX содержит код завершения работы программы, который выводится на экран с помощью функции INT 21h.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д