用于乘法的Shift和add方法给出了垃圾输出

时间:2018-03-30 18:00:25

标签: assembly nasm x86-64

我创建了一个使用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

1 个答案:

答案 0 :(得分:1)

尝试shr ebx,1而不是shr bl,1。