. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->《IBM-PC汇编语言程序设计》支持区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  双字相乘怎么写啊???  [待解决] 回复[ 5次 ]   点击[ 628次 ]  
lijangwei
[帖 主]   [ 发表时间:2008-02-25 15:35 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:9
注册日期:2007-11-01 20:06
如果不用EAX,EDX,怎么写出双字相乘?比如:
datax dw 7501h
      dw  7502h
datay dw  1234h
      dw   1234h

怎么写呢?
wdm
[第1楼]   [ 回复时间:2008-02-25 21:20 ]   [引用]   [回复]   [ top ] 
荣誉值:342
信誉值:0
注册日期:2007-12-06 10:21
如果在16位环境下自己完成这个功能,确实比较费劲。就考虑进位的控制和确定就够受的了。
干脆转化成一个多重循环,进行加法运算吧。
5*3
相当于5+5+5.当然你还得控制高字和低子之间倍率以及数据对应,还有就是自己要进行字与字间标记进位等过程吧。
我没有做过,也是看了楼主的问题,突发奇想。楼主指点。
lijangwei
[第2楼]   [ 回复时间:2008-02-28 15:51 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:9
注册日期:2007-11-01 20:06
还是不明白啊,想了想,不明白,高人指点!
lwbfq
[第3楼]   [ 回复时间:2008-02-28 19:55 ]   [引用]   [回复]   [ top ] 
荣誉值:56
信誉值:0
注册日期:2008-01-19 13:58
CPU的指令规定了,只要是乘法指令,就必须要用到EAX,EDX,除非你不使用MUL指令。
就按楼上说的,把乘法转化为加法来进行计算。
younggay
[第4楼]   [ 回复时间:2008-02-28 20:55 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
a*b就是b个a相加。
lijangwei
[第5楼]   [ 回复时间:2008-03-05 17:20 ]   [引用]   [回复]   [ top ] 
荣誉值:7
信誉值:9
注册日期:2007-11-01 20:06
可能是我自己理解错了,打扰了,各位!!!
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved