圣光玉宇 发表于 2012-12-15 15:02:50

《汇编语言》中“物理地址”不清楚

本帖最后由 圣光玉宇 于 2012-12-15 15:14 编辑

王爽老师的《汇编语言》 “2.8   段的概念”中有段话”段地址乘以16必然是16的倍数,所以一个段的起始地址也一定是16的倍数“这句话中的”16的倍数“该怎样理解?它的意思是”16“的倍数还是”16进制数“的倍数?如果是”16进制数“的倍数的话,如何才能知道这个数是不是”16进制数“的倍数?还有后面的”偏移地址为16位,16位的寻址能力是64KB,所以一个段的长度最大为64KB“这里的”长度“如何理解?

℡.xiao敏 发表于 2012-12-15 15:25:32

是16的倍数。你想复杂了。他意思只是每个段的起始地址肯定可以被16整除……例如段
1000H 除以 FH = 111H。你用十进制思想来想,那只不过是说,每个段其实地址肯定可以被10整除,就是说只能是110、120、1150之类的数,不可能出现1005这种起始段地址。

第二个问题,2的16次方=65536 byte
那1kb=1024byte
所以就是64KB

个人理解,错误请指出

烧点饭 发表于 2012-12-15 15:29:11

比如段地址是1000,那么在计算物理地址的时候段地址要X16,也就变成了10000(千万记住这是16进制,而不是十进制)

烧点饭 发表于 2012-12-15 15:36:33

16位的寻址能力是64KB,原因是一个位只能表示两种状态(表示方法),即0和1,那么总共就有2的16次方种状态(表示方法)

山人 发表于 2012-12-15 15:36:43

1、16就是十进制的16,一个数不管用什么进制表示他的大小不会变。就是16的倍数,表示成16进制就是10H的倍数。
2、地址=段地址+偏移地址在地址加法器中段地址是乘以了16,必然是16的倍数撒,段地址乘以16后用16进制表示的话最低位一定是0,用二进制表示的话低四位一定是0
3、如何才能知道这个数是不是16的倍数?显然就是除以16,要能整除的数才是16的倍数
4、还有后面的”偏移地址为16位,16位的寻址能力是64KB,所以一个段的长度最大为64KB“这里的”长度“如何理解?    一个内存单元有一个地址与其对应。2的16次方就是64k撒,不能超过64k,超过了在这个段中就没有地址了撒
不知道偶说清楚没有

雪绒★~花飘 发表于 2012-12-15 15:42:49

是“16”的倍数吧。后面长度因为一个段的段地址是固定的,要想访问这个段的内存单元只能用偏移地址访问,而偏移地址是放在一个16寄存器中,那它的范围就是0h到ffffh也就是十进制的0到65535,总共就有65535+1个字节,再化成K的话就是64k

像風一樣的男子 发表于 2012-12-22 21:06:34

王爽老师讲的是16的倍数,而不是16的进制数。物理地址就等以段地址乘以16+偏移地址,长度是这样理解的,就是这个段地址是由段寄存器存储的,而段寄存器有4个,每一个段寄存器都是十六位的,就是一个段寄存器最多能存储2的16次方的容量,即64k的容量。长度就是容量的意思。

紫色/tp雲天 发表于 2012-12-23 12:43:08

0000 0000 0000 0000B~1111 1111 1111 1111B
这就是偏移地址的寻址长度,换算一下就是0~(64KB-1B),因为是从0开始的,所以长度就是64KB

风吹绿野 发表于 2013-11-17 17:32:35

为什么要加上偏移地址呢
页: [1]
查看完整版本: 《汇编语言》中“物理地址”不清楚