|
主题 : : 第十章乘法问题 [待解决] |
回复[ 13次 ]
点击[ 453次 ] | |
|
|
|
|
[帖 主]
[ 发表时间: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跟低位乘,结果成什么了?
不耻下问 求教了 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-03-06 09:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:14
信誉值:2
注册日期:2008-10-19 21:37 |
词 目 :不耻下问
发 音 :bù chǐ xià wèn
释 义 :耻:羞耻,耻辱。不以向地位比自己低、学识比自己差的人请教为耻。
--------- | | |
|
|
|
|
[第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次怎么算呢? | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-03-06 21:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:5
注册日期:2008-12-18 16:07 |
回复:[第1楼]
------------------
额 谢啦!学习啦 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-03-09 07:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:5
注册日期:2008-12-18 16:07 |
|
|
|
|
|
[第5楼]
[ 回复时间:2009-04-12 19:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:11
信誉值:0
注册日期:2009-03-19 18:06 |
|
|
|
|
|
[第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 | | |
|
|
|
|
[第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,应该弄错了吧?? | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-07-20 22:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:1
信誉值:8
注册日期:2009-06-27 18:30 |
我也是这个疑问啊!第一次结果要是超过65535,那这个程序就不能得出N^3.
另外:187页是个印刷错误应该是AL | | |
|
|
|
|
[第9楼]
[ 回复时间:2009-07-28 21:14 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2009-06-29 14:39 |
|
|
|
|
|
[第10楼]
[ 回复时间:2009-07-30 12:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-07-10 14:13 |
目前学到的乘法最高也就16位啊,那就可以认为N的2次方后结果也是16位的数,那么DX中的数为零,不用算 | | |
|
|
|
|
[第11楼]
[ 回复时间:2009-07-30 12:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-07-10 14:13 |
|
|
|
|
|
[第12楼]
[ 回复时间:2009-07-31 09:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:3
注册日期:2009-06-08 15:13 |
上一次的结果放在ax 中,mul bx,即(ax)=(ax)*(bx)的低位,(dx)=(ax)*(bx)的高位 | | |
|
|
|
|
[第13楼]
[ 回复时间:2009-08-07 21:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-06-14 00:35 |
P199 如果是8位 一个默认放在AL中, 另一个放在8位REG 或内存字节单元中 兄弟 麻烦看书看清楚 是不是你的书有问题啊 | | |