如何在汇编程序中计算一个ascii字符串的数字和
How to calculate the digit sum of an ascii string in assembler
我正在尝试用 nasm 计算 ascii 字符串的数字总和。为此,我尝试遍历单个字节并在 eax 中累加值,直到到达空字节。理论到此为止。但是行 add eax, byte[ebx]
带来了错误 "mismatch in operand sizes"。如何累加不同大小的操作数?
这是代码
mov eax, 0
mov ebx, userInput; "abc"
readChar:
cmp byte[ebx],0
jz finished
add eax, byte[ebx]
inc ebx
jmp readChar
感谢您的帮助。
简答:一条指令做不到。
您需要获取字节值,对其进行零扩展,然后添加。
例如:
movzx ecx, byte [ebx]
add eax, ecx
我正在尝试用 nasm 计算 ascii 字符串的数字总和。为此,我尝试遍历单个字节并在 eax 中累加值,直到到达空字节。理论到此为止。但是行 add eax, byte[ebx]
带来了错误 "mismatch in operand sizes"。如何累加不同大小的操作数?
这是代码
mov eax, 0
mov ebx, userInput; "abc"
readChar:
cmp byte[ebx],0
jz finished
add eax, byte[ebx]
inc ebx
jmp readChar
感谢您的帮助。
简答:一条指令做不到。
您需要获取字节值,对其进行零扩展,然后添加。 例如:
movzx ecx, byte [ebx]
add eax, ecx