空小子 发表于 2005-8-17 13:15:00

这可表现在WQX的ND的逻辑地址,扇区号加一跟偏移量加$4000是同一个逻辑地址,到GGV好象限定了偏移量的范围~

degetkey 发表于 2005-8-16 12:30:00

没人回答么

qyfcool 发表于 2005-8-16 13:48:00

什么的?没见过。

degetkey 发表于 2005-8-17 08:22:00

是"简明x86汇编语言教程",就这段没太看懂
事实上,在实模式中,内存比保护模式中的结构更令人困惑。内存被分割成段,并且,操作内存时,需要指定段和偏移量。不过,理解这些概念是非常容易的事情。请看下面的图:
http://www.ddvip.net/program/masm/index1/img_masm/realmem.gif
段-寄存器这种格局是早期硬件电路限制留下的一个伤疤。地址总线在当时有20-bit。
然而20-bit的地址不能放到16-bit的寄存器里,这意味着有4-bit必须放到别的地方。因此,为了访问所有的内存,必须使用两个16-bit寄存器。
这一设计上的折衷方案导致了今天的段-偏移量格局。最初的设计中,其中一个寄存器只有4-bit有效,然而为了简化程序,两个寄存器都是16-bit有效,并在执行时求出加权和来标识20-bit地址。
偏移量是16-bit的,因此,一个段是64KB。下面的图可以帮助你理解20-bit地址是如何形成的:
http://www.ddvip.net/program/masm/index1/img_masm/segoffcal.gif
段-偏移量标识的地址通常记做 段:偏移量 的形式。
由于这样的结构,一个内存有多个对应的地址。例如,0000:0010和0001:0000指的是同一内存地址。又如,
0000:1234 = 0123:0004 = 0120:0034 = 0100:0234
0001:1234 = 0124:0004 = 0120:0044 = 0100:0244
作为负面影响之一,在段上加1相当于在偏移量上加16,而不是一个“全新”的段。反之,在偏移量上加16也和在段上加1等价。某些时候,据此认为段的“粒度”是16字节。

116205035 发表于 2005-8-17 15:45:00

PC上的内存很大,不同WQX只有64K寻址/
前面的表示“分页”,后面是这一页的地址。

Mrzeng 发表于 2005-8-18 15:17:00

由于这样的结构,一个内存有多个对应的地址。
不是讲的很清楚了吗?
前面的表示“分页”,后面是这一页的地址。...

degetkey 发表于 2005-8-19 08:41:00

我想知道以下内容是什么意思,我是汇编菜鸟
0000:1234 = 0123:0004 = 0120:0034 = 0100:0234
0001:1234 = 0124:0004 = 0120:0044 = 0100:0244

Mrzeng 发表于 2005-8-19 11:45:00

作为负面影响之一,在段上加1相当于在偏移量上加16,而不是一个“全新”的段。反之,在偏移量上加16也和在段上加1等价。某些时候,据此认为段的“粒度”是16字节。
只能这么解释了,已经非常清楚了...

degetkey 发表于 2005-8-16 11:16:29

关于汇编,有个问题

这几天,看汇编的书,有个问题,请高手帮助一下
0000:1234 = 0123:0004 = 0120:0034 = 0100:0234
0001:1234 = 0124:0004 = 0120:0044 = 0100:0244
以上内容是什么意思
练习题
尝试一下将下面的地址转化为20bit的地址:
2EA8:D678 26CF:8D5F 453A:CFAD 2933:31A6 5924:DCCF
694E:175A 2B3C:D218 728F:6578 68E1:A7DC 57EC:AEEA


这题又怎么做
看到这里,已经搞不懂了
页: [1]
查看完整版本: 关于汇编,有个问题