Подскажите, где ошибка - Assembler
Формулировка задачи:
Задача в том, чтобы вывести на экран четные элементы массива.
в BX - смещение, в CX число элементов массива
Вот мой код:
В общем вопрос в следующем:
Не трудно видеть, что первый элемент массива -10 - четное число, этот элемент выводится в виде "H6", не могу найти в интернете, возможно для отрицательных чисел иначе происходит процедура преобразования (16) -> (10) Кстати, -64 выводится как C4.
p.s. да и вместо нечетных элементов выводятся нули... а для них процедура вывода не отрабатывает... чудеса.
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
inc BX должен быть 1 раз... не успела отредактировать.
С нулями тоже поняла... это же вроде как четное число, а я регистр обнулила.
Решение задачи: «Подскажите, где ошибка»
textual
Листинг программы
C:\ASM>KR.EXE 10 74 26 08 58
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д