. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  谁能解释下实验10.2的那个公式  [待解决] 回复[ 13次 ]   点击[ 1707次 ]  
abcdwzxy
[帖 主]   [ 发表时间:2009-06-07 22:04 ]   [引用]   [回复]   [ top ] 
荣誉值: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 ]   [引用]   [回复]   [ top ] 
荣誉值: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中。
mutoo
[第2楼]   [ 回复时间:2009-07-15 00:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-01 22:00
你可以换个思路来理解这个 *65536
假如 ax寄存器上面有个1,那么1*65536就是 1 0000h
发现什么没有,其实就是1左移4位,也就是这个1从低16位ax移到了高16位dx
所以根本不需要考虑*65536(/65536),只要考虑ax与dx之间的转移就行了。
huibian2009
[第3楼]   [ 回复时间:2009-08-05 09:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-07-06 17:12
多谢mess老师的细心讲解,现在明白多了。
abob
[第4楼]   [ 回复时间:2009-08-06 15:45 ]   [引用]   [回复]   [ top ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
分析的不错,用已知的十进制除法,对比分析十六进制除法进而弄明白公式意义~
13721455139
[第5楼]   [ 回复时间:2009-08-15 09:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-29 10:10
太精辟了  用十进制算法解释十六进制算法   一个字:服
huguanglai
[第6楼]   [ 回复时间:2009-09-27 18:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-10-29 16:30
2楼的正解.我也是想了很久才想到的
就是向左移了4位
mess
[第7楼]   [ 回复时间:2009-09-28 10:46 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
多谢mess老师的细心讲解,现在明白多了。
------------------
回复:我可不是什么老师,大家一起在这学习,相互帮助交流嘛 ^_^
iammingbo
[第8楼]   [ 回复时间:2009-12-27 12:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-08-21 18:36
感谢mess老师的讲解。
qinjuan1188
[第9楼]   [ 回复时间:2010-05-27 17:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-10 21:04
2楼得到的余数是如何放到CX里的?
vs9841
[第10楼]   [ 回复时间:2011-07-05 11:30 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-01-17 12:29
2楼的牛人呀。太历害了
ivan1991
[第11楼]   [ 回复时间:2011-12-31 18:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-12-11 21:44
自古牛人在二楼
09iopiop
[第12楼]   [ 回复时间:2012-07-08 21:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-07-08 21:18
mutoo真是一语惊醒梦中人!!
一下子解开了我的迷惑
核心代码只用了不到十行,真实太感谢了
online6883
[第13楼]   [ 回复时间:2012-09-21 16:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-04-07 22:11
感谢指点出长久的迷惑
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved