. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第十章乘法问题  [待解决] 回复[ 13次 ]   点击[ 453次 ]  
mengdewan
[帖 主]   [ 发表时间:2009-03-06 08:33 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:5
注册日期:2008-12-18 16:07
计算N的3次方
mov ax,bx   ;把bx的传给ax做乘数
mul bx      ;bx与ax相乘
mul bx      ;这个不懂   乘数不是ax吗?此时的ax已经变了,存储的应该是上次的结果的低位吧,这样bx跟低位乘,结果成什么了?
不耻下问   求教了
ilove
[第1楼]   [ 回复时间:2009-03-06 09:37 ]   [引用]   [回复]   [ top ] 
荣誉值:14
信誉值:2
注册日期:2008-10-19 21:37
词 目 :不耻下问 
  发 音 :bù chǐ xià wèn 
  释 义 :耻:羞耻,耻辱。不以向地位比自己低、学识比自己差的人请教为耻。
---------
lyheqs
[第2楼]   [ 回复时间:2009-03-06 13:27 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-03-22 12:51
我也很懊恼,是自己太笨了还是,我现在都还不明白:
在王爽汇编书上200页:

;说明:计算N的3次方
;参数: (bx) = n
;结果: (dx:ax) = n ^ 3

cube:  mov ax,bx
        mul bx
        mul bx
        ret

就是不明白第一次MUL BX完成过后,第2次的MUL BX怎么计算呢? 第一次的结果在DX:AX中,那第2次怎么算呢?
mengdewan
[第3楼]   [ 回复时间:2009-03-06 21:58 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:5
注册日期:2008-12-18 16:07
回复:[第1楼]
------------------
额   谢啦!学习啦
mengdewan
[第4楼]   [ 回复时间:2009-03-09 07:54 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:5
注册日期:2008-12-18 16:07
杂没人解决呢?等了好久了
ddcw
[第5楼]   [ 回复时间:2009-04-12 19:22 ]   [引用]   [回复]   [ top ] 
荣誉值:11
信誉值:0
注册日期:2009-03-19 18:06
很明显,这是一个错误。书上写错了!!!
tashixuexiaqu
[第6楼]   [ 回复时间:2009-04-15 15:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-12 10:36
第二个mul bx就是在和ax乘一次嘛!
如N=3
cube:  mov ax,bx 
        mul bx ;计算ax*bx由于ax=bx,所以这条指令相当于ax的2次方,
               ;ax的值为它之前的平方,即ax=ax*bx=3*3=9
        mul bx;再一次ax*bx即ax=ax*bx=9*3=27 
        ret
wuhucome
[第7楼]   [ 回复时间:2009-06-05 14:49 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:2
注册日期:2009-05-26 10:52
如果第一次平方的结果出来后不超过16位,即小于65536,则第二次算出来的数从 DX * 16 + AX = N^3
如果第一次平方的结果已经超过16位,后面的计算没啥实际意义。

另外:
Page 187~188   10.8 mul指令
在187页(1)中描述:........如果是8位,一个默认放在AH中,另一个放在8位寄存器或......
在188页举得例子中
(1)计算 100 * 10
mov  al,100
mov  bl,10
mul  bl 
定义用ah,举例用了al,应该弄错了吧??
wsay666
[第8楼]   [ 回复时间:2009-07-20 22:03 ]   [引用]   [回复]   [ top ] 
荣誉值:1
信誉值:8
注册日期:2009-06-27 18:30
我也是这个疑问啊!第一次结果要是超过65535,那这个程序就不能得出N^3.
另外:187页是个印刷错误应该是AL
zhy_zhy
[第9楼]   [ 回复时间:2009-07-28 21:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-06-29 14:39
同意楼上的!
asongsky
[第10楼]   [ 回复时间:2009-07-30 12:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-10 14:13
目前学到的乘法最高也就16位啊,那就可以认为N的2次方后结果也是16位的数,那么DX中的数为零,不用算
asongsky
[第11楼]   [ 回复时间:2009-07-30 12:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-10 14:13
该死的印刷错误,害我做题死不少脑细胞
advancedprogrammer
[第12楼]   [ 回复时间:2009-07-31 09:10 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:3
注册日期:2009-06-08 15:13
上一次的结果放在ax 中,mul bx,即(ax)=(ax)*(bx)的低位,(dx)=(ax)*(bx)的高位
sunhairuiqn
[第13楼]   [ 回复时间:2009-08-07 21:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-06-14 00:35
P199 如果是8位 一个默认放在AL中, 另一个放在8位REG 或内存字节单元中  兄弟 麻烦看书看清楚  是不是你的书有问题啊
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved