用于乘法的 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。