我创建了一个使用add和shift方法将2个数相乘的过程,并将结果存储在buff变量中。
这里,buff1和buff2在代码的数据部分初始化为字类型。
buff1 dw 0AH
buff2 dw 03H
buff在.bss部分声明为4字节。
buff resb 4
以下是执行乘法的过程:
shift_add:
movzx eax,word[buff1] ;2byte
movzx ebx,word[buff2]
mov edx,0H
mov rcx,16 ;integer
backs:
shr bl,1
jnc haha
add edx,eax
haha:
shl eax,1
loop backs
mov dword[buff],edx
print buff,4
ret
为什么上面的代码给我垃圾输出?enter image description here
答案 0 :(得分:1)
尝试shr ebx,1而不是shr bl,1。