用于乘法的 Shift 和 add 方法给出垃圾输出
Shift and add method for multiplying numbers give garbage output
我制作了一个程序,使用加法和移位法将 2 个数字相乘,并将结果存储在 buff 变量中。
这里,buff1和buff2在代码的数据部分被初始化为word类型。
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
尝试用 shr ebx,1 代替 shr bl,1。
我制作了一个程序,使用加法和移位法将 2 个数字相乘,并将结果存储在 buff 变量中。
这里,buff1和buff2在代码的数据部分被初始化为word类型。
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
尝试用 shr ebx,1 代替 shr bl,1。