Нахождение количества нечетных элементов в массиве - Assembler
Формулировка задачи:
Здравствуйте. Помогите пожалуйста написать программу на ТАСМ.
Программа должна найти количество нечетных элементов в массиве и вывести это число на экран.
Вот то что я написал, но программа выводит ошибку переполнения, а в дебагере деление на 0. я не понимаю откуда берётся эта ошибка.
STAK SEGMENT STACK DB 512 DUP (0) STAK ENDS DATA SEGMENT MAS DB 2, 2, 3, 4, 5, 6, 7, 8, 9, 10 A DB ? MSG DB 'Kol-vo nechet elementov: $' DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, SS:STAK START: XOR AX, AX MOV AX, DATA MOV DS, AX MOV CX,10 MOV SI, 0 GO: MOV AL, MAS[SI] Div BL, 2 DIV BL CMP AH,1 JNE M1 INC A M1: INC SI LOOP GO MOV AH, 09H MOV DX, OFFSET MSG INT 21H MOV ah, 4ch INT 21h CODE ENDS END START
Решение задачи: «Нахождение количества нечетных элементов в массиве»
textual
Листинг программы
TEST AL,1 JE M1
Объяснение кода листинга программы
TEST AL,1
- проверяется, является ли первый символ в регистре AX нечетным числом (не делится на 2 без остатка)JE M1
- если условие выполняется, то происходит переход к метке M1 M1:CMP BX,BP
- сравниваются значения в регистрах BX и BPJE M2
- если значения равны, то происходит переход к метке M2 M2:INC SI
- увеличивается значение регистра SI на 1CMP SI,BP
- сравниваются значения в регистрах SI и BPJNE M2
- если значения не равны, то происходит переход к метке M2 M3:INC SI
- увеличивается значение регистра SI на 1CMP SI,BP
- сравниваются значения в регистрах SI и BPJNE M3
- если значения не равны, то происходит переход к метке M3 M4:INC SI
- увеличивается значение регистра SI на 1CMP SI,BP
- сравниваются значения в регистрах SI и BPJNE M4
- если значения не равны, то происходит переход к метке M4 M5:INC SI
- увеличивается значение регистра SI на 1CMP SI,BP
- сравниваются значения в регистрах SI и BPJNE M5
- если значения не равны, то происходит переход к метке M5 M6:INC SI
- увеличивается значение регистра SI на 1CMP SI,BP
- сравниваются значения в регистрах SI и BPJNE M6
- если значения не равны, то происходит переход к метке M6 M7:INC SI
- увеличивается значение регистра SI на 1 Код выполняется до тех пор, пока не будет достигнут конец массива (регистр SI станет равным нулю). Количество нечетных элементов в массиве будет равно значению регистра SI в конце выполнения кода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д