Как рассчитать сумму цифр строки ascii в ассемблере

Я пытаюсь вычислить сумму цифр строки ASCII с NASM. Чтобы сделать это, я попытался перебрать отдельные байты и накапливать значение в eax, пока не достигну нулевого байта. Так много для теории. Но линия add eax, byte[ebx] приносит ошибку "несоответствие размеров операнда". Как можно накапливать операнды с разными размерами?

Вот код

mov eax, 0
mov ebx, userInput; "abc"

readChar:
    cmp byte[ebx],0
    jz finished
    add eax, byte[ebx]
    inc ebx
    jmp readChar

Спасибо за вашу помощь.

1 ответ

Решение

Краткий ответ: вы не можете в одной инструкции.

Вам нужно получить значение байта, расширить его до нуля, а затем добавить. Например:

movzx ecx, byte [ebx]
add   eax, ecx
Другие вопросы по тегам