编程论坛
注册
登录
编程论坛
→
汇编论坛
关于 乘法运算的问题
脑壳疼
发布于 2018-04-27 23:18, 2071 次点击
只有本站会员才能查看附件,请
登录
如何 不用 MULWF 和 MULLW 做乘法运算
是用 and 和 or 嘛?
谢谢各位大佬
2 回复
#2
Valenciax
2018-04-28 06:56
加法吧,用意是将X加Y次,若X = 9 , Y = 4
X * Y = 9 * 4 = 9 + 9 + 9 + 9
假设A,B,C是暂存器,虚拟码大概是:
读 x 入 A
读 x to B
读 y to C
RE:
C 减 1
若结果 = 0 则跳 OK
加 A,B
跳 RE
OK:
#3
wmf2014
2018-04-28 15:59
@Valenciax解答的是一种最容易理解和实现的方法,但通常使用左移相加效率高些,以8位乘法运算为例,被乘数叠加乘数次数最多会循环255次,如果使用左移相加则最多循环8次即可,实例代码如下:
xor ax,ax //计算结果
mov bx,9 //被乘数
mov cx,4 //乘数
lp2:shr cx,1 //乘数右移一位,最低位进入cf标志位
jnc lp1 //最低位为0则跳转
add ax,bx //最低位不为0则加上被乘数
lp1:shl bx,1 //被乘数左移一位
cmp cx,0 //乘数是否为0
jnz lp2 //不为0继续累加
int 3 //退出循环后ax即为计算结果,这种情况下循环2次即得到结果
1