| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
divdw那个子程序, 
div运算是否有争议? 
把一个小于4.2949673的10的9次方的数x, 
装入(ax+dx)/cx=x/cx=的结果置于两个16位寄存器存商余数没毛病 
 
但小王八的视频代码处理有错误啊, 
ax / cx  +  dx / cx  
 
;注释个人标注不是原视频,代码是 
         
 divdw:          ;无溢出除法子程序 
  push ax        ;压栈保存ax被除数低位 
  mov ax,dx      ;dx被除数高位推入ax被除数寄存器 
  mov dx,0       ;dx置零存商余数  
  div cx         ;高位除以除数cx 
  mov bx,ax      ;默认ax的商存入bx=int(h/n)取商,dx=rem(h/n)取余数, 
  pop ax         ;调出低位被除数 
  div cx         ;L/n 
  mov cx,dx      ;余数存入cx 
  mov dx,bx      ;商存入dx 
  ret 
 
这样做的过程有错误,高位dx的值没错,ax的值也没错 
但是除完cx人数,的商和余数处理有错误啊, 
误差过大,导致商值偏离太多啊 
先计算低位,会比先计算高位的误差要小 
 
可结果还不是真实数,是不要加入一段代码,细节处理 
比如and 和jcxz配合处理 
第一次计算的余数与第二次被除数的关系啊 
 
求前辈处理 
 
还是我的知识太少哪里误区了能帮忙指出吗,谢谢大家 
 
我是0蛋初学者,没任何计算机语言基础,书里后面的知识还没学,,,,卡这里过不去了, 
是不是王爽老师故意把问题留下为以后学习铺垫呢 
 |   
 
 
 
 |