章节内容 call跟ret的搭配使用(调用子程序)
;说明:计算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) 根本没有取到第二次的值啊
那么他们得出的值又到哪里去了?
求大虾指教下,谢谢 根据8086cpu的mul乘法计算,这个算法计算N^3有问题,除非N^2小于16位上限,否则必出错。 我感觉是:cpu将高位dx不参与计算,只保存结果。也就是说第二个mul bx也是直接用(ax)*(bx),而且很可能第二次计算mul bx的结果dx,将覆盖第一次mul bx 中的dx.... {:1_1:}
页:
[1]