汇编语言div和dd指令问题

如图,ds:0中的数据是什么? ds:2的数据是什么?ds:6的数据又是什么,数据的偏移地址理解不了,求教!

这程序,实现了:100001 除以 100。

在 data segment 之下,DD 伪指令,就在第0字节~第3字节,存放了32位数 100001,低字节在前。

当把 data 送到 DS 之后,DS:[0] ~ DS:[3],即为 100001。

DS:[0] ~ DS:[1],即为 100001 的低 16 位数;
DS:[2] ~ DS:[3],即为 100001 的高 16 位数。

同理,还有两个 DW 伪指令,作用如下:

DS:[4] ~ DS:[5],即为16 位数的 100。

DS:[6] ~ DS:[7],即为16 位数的 0。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-16
你想一下,一个32位的数据.如果除以0.那么没意义,也异常了,除以1,结果还是32位,如果除以2,结果就只有16位了,只需要一个16位寄存器就可以放下结果.这是前提.

以上除法是32位除法,除法div后有word前缀指明除数是32位.由于寄存器是16位,所以只好将32位中的高16位放到dx里面去,低16位放在ax里面,然后商在ax里面.余数在dx里面.
第2个回答  推荐于2018-04-19
ds数据段
ds: [0]=100001%65536
ds:[2]=100001/65536
ds:[4]=100
ds:[6]=0
相似回答