非常非常需要帮助解答,谢谢大神。
这是 汇编语言 王爽 第二版 第200页下面的一个例子 我想不明白 16位乘法,第一次执行 mul bx 的时候 结果 高位 放在 dx,低位 低位 放在 ax 中,可是第二次执行 mul bx 的时候 还是 执行的 ax*bx 结果 还是高位 放在 dx 中,低位 放在 ax 中,那么第一次放进 dx 进去 的第一次相乘的高位 怎么处理的呢,我想不明白,请大神帮忙解答,下面是我 随意编写的 一个小验证程序,还有 debug 的结果,都显示这么写不正确。请大神帮忙鉴定下,谢谢。这是实际结果
EFFF*EFFF=E0FE2001
EFFF*2001=1E00CFFF
mul bx 应该就是bx*ax 正如你所调试的那样:
第一次执行mul bx:EFFFH * EFFFH = E0FE2001H,AX存放低位2001H,DX存放高位E0EFH
第二次执行mul bx:2001H * EFFFH = 1E00CFFFH,AX存放低位CFFFH,DX存放高位1E00H
第一次的存放的将诶过会被第二次所覆盖。 小甲鱼 发表于 2014-3-20 10:53
正如你所调试的那样:
第一次执行mul bx:EFFFH * EFFFH = E0FE2001H,AX存放低位2001H,DX存放高位E0EF ...
谢谢小甲鱼老师。 luckin 发表于 2014-3-19 16:26
EFFF*EFFF=E0FE2001
EFFF*2001=1E00CFFF
谢谢这位大神。
页:
[1]