. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
主题 : :  谁能解释下实验10.2的那个公式  [待解决] 回复[ 13次 ]   点击[ 1709次 ]  
abcdwzxy
[帖 主] [ 发表时间:2009-06-07 22:04 ] 
荣誉值:0
信誉值:3
注册日期:2009-03-13 16:19
X/N=INT(H/N)*65536+[REM(H/N)*65536+L]/N 
     H=INT(X/65536);L=REM(X/65536) 

这个公式该怎样理解?那个65536好象有点问题,在16位寄存器中放不下这个数,那么怎么进行*65536的运算呢?
mess
[第1楼] [ 回复时间:2009-06-09 10:36 ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
dx ax 存放dword型数据的高低16位

INT(H/N)*65536
--------------
dx/cx的高位16位除法,取商。存放到结果的高16位中。
(十进制数21=2*10+1)

[REM(H/N)*65536+L]/N  
-------------
同理。

数值82/3,我们一般先计算:
8/3商2余2
然后再用22/3商7余1.(22得得来:高位除法的余数2*10+2(低位即个位数字)=22)
结果是27余1.

同理套入上面的公式。
数值82/3,我们一般先计算:
8/3商2余2            -----INT(H/N)*65536-保存商2,放入结果高位中
然后再用22/3商7余1.   -----[REM(H/N)*65536+L]/N 用高位除法结果的余数+低位然后做除法运算,得到商和余数 
结果是27余1.          ----得到结果,2存放结果高位dx中(这个在INT(H/N)*65536完成),7放在ax中,1放在cx中。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved