鱼C论坛

 找回密码
 立即注册
查看: 2037|回复: 3

章节内容 call跟ret的搭配使用(调用子程序)

[复制链接]
发表于 2012-7-6 20:07:58 | 显示全部楼层 |阅读模式
5鱼币

;说明:计算N的三次方
;参数(bx)=n
;结果 : (dx:ax) =N^3
cube:mov ax,bx
  mul bx
  mul bx  
  ret

这一段里面 在三次的时候 乘法是不是有问题呢?  

在执行第一条 mul bx 的时候 ax,bx 都是16位的 做乘法后的值高位16位放在dx里 低16放ax里面

在第二次执行 mul bx 的时候 这里我理解是(ax)*(bx) 根本没有取到第二次的值啊   
那么他们得出的值又到哪里去了?

求大虾指教下,谢谢

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-8 08:49:02 | 显示全部楼层
根据8086cpu的mul乘法计算,这个算法计算N^3有问题,除非N^2小于16位上限,否则必出错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-7-9 10:35:24 | 显示全部楼层
我感觉是:cpu将高位dx不参与计算,只保存结果。也就是说第二个mul bx也是直接用(ax)*(bx),而且很可能第二次计算mul bx的结果dx,将覆盖第一次mul bx 中的dx....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-8-21 09:49:49 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 02:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表