Во-первых, все ваши числа имеют в конце букву «h», что означает, что они шестнадцатеричные числа. Таким образом, вы сохраняете не 10, 20, 30, et c, а 16, 32, 48, et c. Это означает, например, что mov cx, 10h
фактически устанавливает cx равным 16, а не 10. Десятичным константам не нужен суффикс.
Во-вторых, при сложении чисел результат будет больше 255, что означает, что он не может поместиться в один байт. Вам нужно будет использовать ax
вместо al
, чтобы отслеживать сумму. Обратите внимание, это также означает, что вам нужно изменить сложение l oop, чтобы преобразовать каждый байт в слово.
Вот как выглядит обновленный l oop:
mov ax, 0
mov cx, 10
mov dh, 0
lab: mov dl, [bx]
add ax, dx
dec bx
loop lab
mov bl, 10
div bl
Здесь я использовал dx
для преобразования байта в слово, установив dh
на 0, а затем добавил dx
к ax
.