Подскажите, где ошибка - Assembler

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

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

Задача в том, чтобы вывести на экран четные элементы массива. в BX - смещение, в CX число элементов массива Вот мой код:
TITLE KR
 
.MODEL small
 
.STACK 100h
 
.DATA
ARR1 DW -10,74,13,26,11,-7,59,-62
LEN_ARR1 DW $-ARR1

.CODE
main PROC
mov AX, @data
mov DS, AX
mov BX,  offset ARR1
mov CX, LEN_ARR1
cld
CYCLE:
xor AX, AX
mov AX, [BX]
test AX, 1
jnz L1
call OUT_
L1:
inc BX
inc BX
loop CYCLE
mov AX, 4C00h
int 21h
main ENDP
 
; ----- процедура вывода -----
out_ PROC
aam 
add AX, 3030h 
mov DL, AH 
mov DH, AL 
mov AH, 02 
int 21h 
mov DL, DH 
int 21h
mov AX, ' '
int 29h
ret
out_ ENDP
 
END main
В общем вопрос в следующем: Не трудно видеть, что первый элемент массива -10 - четное число, этот элемент выводится в виде "H6", не могу найти в интернете, возможно для отрицательных чисел иначе происходит процедура преобразования (16) -> (10) Кстати, -64 выводится как C4. p.s. да и вместо нечетных элементов выводятся нули... а для них процедура вывода не отрабатывает... чудеса.
inc BX должен быть 1 раз... не успела отредактировать.
С нулями тоже поняла... это же вроде как четное число, а я регистр обнулила.

Решение задачи: «Подскажите, где ошибка»

textual
Листинг программы
C:\ASM>KR.EXE
10 74 26 08 58

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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