Сумма нечетных чисел массива двойных слов - Assembler
Формулировка задачи:
Здравствуйте! Если все элементы двойные слова, то сумма должна иметь другой тип что бы не выйти из диапазона типа?
Решение задачи: «Сумма нечетных чисел массива двойных слов»
textual
Листинг программы
.model small data segment x1 dw 166Ah dw 8A8h dw 0FD2Eh dw 0B669h dw 0A029h dw 0F205h dw 0E6A1h dw 0B538h dw 0A4B4h dw 0F25h dw 0F0AFh dw 0F335h dw 0001h dw 8000h y1 dw 3 dup(0) x2 dw 445Ch dw 0B5BFh dw 705Ch dw 0E6A5h dw 02D2h dw 4996h dw 6E0Fh dw 0FE98h dw 0D665h dw 779h dw 6EC3h dw 0EC96h y2 dw 3 dup(0) data ends stk segment stack db 255 dup(?) stk ends code segment assume cs:code,ds:data,ss:stk start: mov ax,data mov ds,ax lea ax,x1 push ax lea ax,y1 push ax mov ax,7 push ax call abc lea ax,x2 push ax lea ax,y2 push ax mov ax,6 push ax call abc mov ah,4Ch mov al,00h int 21h abc proc push bp mov bp,sp mov cx,[bp+4] mov di,[bp+6] mov si,[bp+8] M1: mov ax,[si] mov dx,[si+2] test dx,8000h jz m2 add [di],ax mov ax,[si+2] cwd adc [di+2],ax adc [di+4],dx M2: add si,4 dec cx jnz m1 pop bp ret 6 abc endp code ends end start
Объяснение кода листинга программы
Список элементов кода:
- Объявление сегментов данных и кода
- Объявление переменных
- Начало выполнения программы
- Вызов процедуры abc
- Передача в процедуру abc счетчика количества нечетных чисел и указатель на массив нечетных чисел
- Вложенные циклы для обработки каждого нечетного числа в массиве
- Тест на четность числа
- Если число четное, то переход к следующей итерации цикла
- Если число нечетное, то добавление его в сумму
- Передача в процедуру abc нового значения счетчика и указателя на массив нечетных чисел
- Продолжение выполнения программы
- Завершение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д