Как рассчитать сумму цифр строки 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