Дана последовательность слов (положительные числа). Просуммировать их в цикле. Сум-ма может превышать допустимые для слова значения. Вывести на экран - Assembler
Формулировка задачи:
Дана последовательность слов (положительные числа). Просуммировать их в цикле. Сум-ма может превышать допустимые для слова значения. Вывести на экран 10-ичное и 16-ричное представления суммы. Для организации вывода в 16-ричное представлении при-менить операции сдвига битов и/или логические команды.
Решение задачи: «Дана последовательность слов (положительные числа). Просуммировать их в цикле. Сум-ма может превышать допустимые для слова значения. Вывести на экран»
textual
Листинг программы
mov edx,00h ;тут будет сумма mov eax,edx mov si,адрес_начала_массива mov cx,число_элементов_массива loopAddition: ;старт цикла суммирования lodsw ;загрузка в ax текущего элемента add edx,eax ;прибавление его к уже имеющейся сумме loop loopAddition ;а тут надо сделать вывод содержимого EDX на экран
Объяснение кода листинга программы
- mov edx,00h - инициализация переменной EDX со значением 0. Эта переменная будет использоваться как сумма.
- mov eax,edx - копирование значения переменной EDX в EAX. Это необходимо для обработки случая, когда сумма превысит допустимые для слова значения.
- mov si,адрес_начала_массива - инициализация указателя SI со значением, указывающим на начало массива.
- mov cx,число_элементов_массива - инициализация счетчика CX со значением, равным количеству элементов в массиве.
- loopAddition: - начало цикла суммирования.
- lodsw - загрузка в пару регистров AX текущего элемента массива.
- add edx,eax - прибавление текущего элемента к сумме в EDX.
- loop loopAddition - переход к следующей итерации цикла.
- ;а тут надо сделать вывод содержимого EDX на экран - в коде не реализована функция вывода суммы на экран.