小编urm*_*mur的帖子

使用 Shift-Left (shl) 得到 2^N,给定 N?

尝试使用 Shift-Left 指令进行乘法运算。

SHL (移位左)指令对所述目的地操作数的逻辑左移,填充的最低位为0。

SHL指令

我不明白如何为 N 使用寄存器或内存,因为当我尝试这样做时,我被告知“指令操作数无效”

  1. 用户在 RequestNumber 过程中输入一个数字 N(返回EAX)。
  2. 我正在尝试的计算是:结果 = 1 * 2^N

我的代码:

mov ebx, 1   
call RequestNumber      ; returns eax   
shl ebx, eax   
mov result, ebx
Run Code Online (Sandbox Code Playgroud)

我正在处理的任务要求使用 Shift 来获得结果 = 2^N 据我所知,您只能在此寄存器中使用 imm8 数字CL(尝试使用ECX具有相同结果的较低数字)。

SHL 的操作数类型

问题:如果必须从用户那里获取N,如何正确使用Shift指令?

x86 assembly bit-shift multiplication

1
推荐指数
1
解决办法
53
查看次数

标签 统计

assembly ×1

bit-shift ×1

multiplication ×1

x86 ×1