Дан массив из 10 слов. Инвертировать все отрицательные числа и найти сумму элементов полученного массива - Assembler

Узнай цену своей работы

Формулировка задачи:

всем добрый вечер ,помогите пжл решить задачку в ассемблер вот условие : Дан массив из 10 слов. Инвертировать все отрицательные числа и найти сумму элементов полученного массива. заранее благодарен всем тем кто отпишется по этому поводу

Решение задачи: «Дан массив из 10 слов. Инвертировать все отрицательные числа и найти сумму элементов полученного массива»

textual
Листинг программы
        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.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.571 из 5
Похожие ответы