【发布时间】:2017-02-25 13:24:26
【问题描述】:
我必须编写程序(对于 SIC 和 SIC/XE 机器)
我尝试使用 shl 操作来编写它,该操作执行与将指定操作数乘以 2 相同的操作。向左移动两位位置会将操作数乘以四。向左移动三位位置会使操作数乘以八。通常,将操作数左移 n 位会将其乘以 2n。任何值都可以通过一系列移位和加法或移位和减法乘以某个常数。例如,要将 ax 寄存器乘以 10,您只需将其乘以 8,然后加上原始值的两倍。也就是说,10*ax = 8*ax + 2*ax。实现这一点的代码是
shl ax, 1 ;Multiply AX by two
mov bx, ax ;Save 2*AX for later
shl ax, 1 ;Multiply AX by four
shl ax, 1 ;Multiply AX by eight
add ax, bx ;Add in 2*AX to get 10*AX
现在我该如何编写程序(SIC 和 SIC/EX 机器)? 你能请人帮我吗?
【问题讨论】:
-
那是x86代码,但逻辑是有效的。那么,你在哪里卡住了?
-
有人可能会回答你,但这不是 SO 的真正意义所在。要获得实际帮助,您应该尝试自己编写,然后在遇到麻烦时发布。这不是语言教学网站,也不是“为我编写此代码”网站。
标签: assembly cpu multiplication