组件8086乘以41而不使用MUL

0 x86 assembly x86-16

我想知道是否有一种无需使用MUL或DIV指令即可执行任何乘法或除法的方法,因为它们需要大量的CPU周期。我可以针对该目标利用SHL或SHR指令吗?如何实现汇编代码?

我需要特定数字的帮助-我如何bx仅用5个命令就能乘以41?

每当我尝试解决问题时,我至少会得到6条命令...

我的代码:

    mov ax,bx
    mov cx,bx
    shl bx,5    ;  *32
    shl ax,3    ;  *8
    add bx,ax   ; *40 
    add bx,cx   ; *41
Run Code Online (Sandbox Code Playgroud)

zch*_*zch 5

; ax = x
mov bx, ax     ; bx = x
shl bx, 3      ; bx = 8 * x
add ax, bx     ; ax = 9 * x
shl bx, 2      ; bx = 32 * x
add ax, bx     ; ax = 41 * x
Run Code Online (Sandbox Code Playgroud)