Проверка суммы на парность (четное или не четное число) - Assembler

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

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

Доброе время суток. Подскажите, пожалуйста, что я не так написала. В програме надо сумировать все элементы массива и проверить полученное число на четность.
title lab3_3.asm
model small
.stack 256
.data
len equ 5
mass db 1,4,5,7,8
mess1 db "Parne",0Dh, 0Ah,'$'
mess2 db "Neparne",0Dh, 0Ah,'$'
summa db 0
.code
begin:
mov ax, @data
mov ds, ax
mov cx, len
xor ax, ax
xor si, si
mov al, summa
cycl:
add al, mass[si]
inc si
loop cycl
jp chet
mov dx, offset mess2
jmp prn
chet:mov dx, offset mess1
jmp prn
prn:
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
end begin

Решение задачи: «Проверка суммы на парность (четное или не четное число)»

textual
Листинг программы
title lab3_3.asm
model small
.stack 256
.data
len equ 5
mass db 1,4,5,7,8
mess1 db "Parne",0Dh, 0Ah,'$'
mess2 db "Neparne",0Dh, 0Ah,'$'
summa db 0
.code
begin:
mov ax, @data
mov ds, ax
mov cx, len
xor ax, ax
xor si, si
mov al, summa
cycl:
add al, mass[si]
inc si
loop cycl
mov dx, offset mess2
shr ax,1
jc prn
mov dx, offset mess1
prn:
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
end begin

Объяснение кода листинга программы

  1. Объявление переменных:
    • len - длина массива (5)
    • mass - массив чисел (1, 4, 5, 7, 8)
    • mess1 - строка Parne
    • mess2 - строка Neparne
    • summa - переменная для хранения суммы
  2. Начало выполнения программы (begin):
    • Передача сегмента данных в регистр ds
    • Передача счетчика длины массива в регистр cx
    • Обнуление регистров ax и si
    • Передача значения переменной summa в регистр al
  3. Цикл по обработке каждого элемента массива (cycl):
    • Добавление элемента массива к переменной summa
    • Увеличение индекса элемента массива (si)
  4. Проверка значения переменной summa на четность (prn):
    • Деление ax на 2 (shr ax,1)
    • Если результат меньше или равен 1 (jc prn), то число четное
    • Вывод сообщения Neparne
  5. Если число нечетное, то вывод сообщения Parne
  6. Завершение работы программы (mov ax, 4c00h, int 21h)

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

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