Суммирование элементов массива с условием - Assembler
Формулировка задачи:
Помогите найти ошибку.
Дано: 5 элементов x данных целого типа длины 4 байта и один дополнительный элемент c такой же длины. Программа рассматривает заданные элементы и обрабатывает их по заданному правилу суммировать все элементы массива если каждый элемент x<C, если для этих элементов и элемента С выполняется заданное условие. Элементы заданного типа должны быть представлены массивом в сегменте данных.
Программа не видит условный переход.
include io.asm stack segment stack dw 128 dup (?) stack ends data segment dat dd 1,3,5,0,6 c dd 2 txt db "Summa=","$" data ends code segment 'code' assume ss:stack, ds:data, cs:code start: mov ax,data mov ds,ax mov dh, c mov ah, dat xor ax,ax ;Очищаем регистр для суммирования mov cx,5 ;Загружаем в счетчик циклов число повторений xor bx,bx cmp ah, dh jl Lp Lp: ;Цикл суммирования add al,dat[bx] ;Прибавляем к сумме очередное слагаемое inc bx ;Увеличиваем индексный регистр loop Lp ;Уменьшаем счетчик цикла и повторяем если он не 0 lea dx,txt ;Печать результата outstr outint ax newline finish ;Завершение программы code ends end start
Решение задачи: «Суммирование элементов массива с условием»
textual
Листинг программы
xor bx,bx cmp ah, dh jl Lp ;<--- усли меньше, то преход на метку Lp, иначе на следующую строку кода - на метку Lp ;в любом слусае пронрамма переходит на эту метку Lp: ;Цикл суммирования add al,dat[bx] ;Прибавляем к сумме очередное слагаемое inc bx ;Увеличиваем индексный регистр loop Lp ;Уменьшаем счетчик цикла и повторяем если он не 0
Объяснение кода листинга программы
- xor bx,bx — инициализация индексного регистра
- cmp ah, dh — сравнение данных в регистрах ah и dh
- jl Lp — при условии, что данные в ah меньше, чем в dh, переход к метке Lp
- Lp: — начало цикла суммирования
- add al,dat[bx] — прибавление очередного слагаемого к сумме
- inc bx — увеличение индексного регистра
- loop Lp — уменьшение счетчика цикла и повторение, если он не равен нулю
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д