《汇编语言》中“物理地址”不清楚
本帖最后由 圣光玉宇 于 2012-12-15 15:14 编辑王爽老师的《汇编语言》 “2.8 段的概念”中有段话”段地址乘以16必然是16的倍数,所以一个段的起始地址也一定是16的倍数“这句话中的”16的倍数“该怎样理解?它的意思是”16“的倍数还是”16进制数“的倍数?如果是”16进制数“的倍数的话,如何才能知道这个数是不是”16进制数“的倍数?还有后面的”偏移地址为16位,16位的寻址能力是64KB,所以一个段的长度最大为64KB“这里的”长度“如何理解?
是16的倍数。你想复杂了。他意思只是每个段的起始地址肯定可以被16整除……例如段
1000H 除以 FH = 111H。你用十进制思想来想,那只不过是说,每个段其实地址肯定可以被10整除,就是说只能是110、120、1150之类的数,不可能出现1005这种起始段地址。
第二个问题,2的16次方=65536 byte
那1kb=1024byte
所以就是64KB
个人理解,错误请指出 比如段地址是1000,那么在计算物理地址的时候段地址要X16,也就变成了10000(千万记住这是16进制,而不是十进制) 16位的寻址能力是64KB,原因是一个位只能表示两种状态(表示方法),即0和1,那么总共就有2的16次方种状态(表示方法) 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,超过了在这个段中就没有地址了撒
不知道偶说清楚没有 是“16”的倍数吧。后面长度因为一个段的段地址是固定的,要想访问这个段的内存单元只能用偏移地址访问,而偏移地址是放在一个16寄存器中,那它的范围就是0h到ffffh也就是十进制的0到65535,总共就有65535+1个字节,再化成K的话就是64k 王爽老师讲的是16的倍数,而不是16的进制数。物理地址就等以段地址乘以16+偏移地址,长度是这样理解的,就是这个段地址是由段寄存器存储的,而段寄存器有4个,每一个段寄存器都是十六位的,就是一个段寄存器最多能存储2的16次方的容量,即64k的容量。长度就是容量的意思。 0000 0000 0000 0000B~1111 1111 1111 1111B
这就是偏移地址的寻址长度,换算一下就是0~(64KB-1B),因为是从0开始的,所以长度就是64KB 为什么要加上偏移地址呢
页:
[1]