汇编基础 关于逻辑段
书中说1mb是由16个64kb存储器总和,但不意味一定只能包括16个逻辑段,因为这些段可以首尾相连,可以有间隔,可以重叠,但需注意段的实体不能重叠,我想问这里的段是指什么...
书中说1mb是由16个64kb存储器总和,但不意味一定只能包括16个逻辑段,因为这些段可以首尾相连,可以有间隔,可以重叠,但需注意段的实体不能重叠,我想问这里的段是指什么?是寄存器,还是内存的空间?还有为什么可以有间隔或者重叠?什么又是段的实体?详细点,谢谢
展开
1个回答
展开全部
在16位CPU中,寄存器是16位,也就是其取值只能是0000至FFFF,只用一个寄存器寻址的话就只能寻址到0000至FFFF,也就是64KB范围,所以一个段最大只能是64KB。为了寻址64KB以上,需要再用一个寄存器,而在16位CPU中有专门的段寄存器可用,而段寄存器也是16位的,如果照线性寻址的话,两个16位寄存器合起来就是32位,可以寻址2^32这么大范围的地址,也就是4G。可是以前那个年代内存上640K都得花好多银子,所以当时就设计最多访问1M地址,也就是16个64KB。照线性算法那其中一个寄存器就只能取值0至F,不好。于是就规定段寄存器也可以从0至FFFF,将段寄存器作为段基址,左移四位再加上一个16位寄存器得到一个20位的地址,也就是1M以内的地址。
所以当两个段寄存器取不同值时就有可能使两个逻辑段重叠或者相连或者间隔开来。
至于段的实体可能是指物理内存中的段,那当然不能重叠。否则访问就会出错。比方说几个内存条各是64K大小的,那自然要把它们在更高级地址上分开来。
总之你理解了那个20位地址怎么来的就应该明白了。再重复一下
段寄存器作为段基址,左移四位再加上一个16位寄存器得到一个20位的地址
所以当两个段寄存器取不同值时就有可能使两个逻辑段重叠或者相连或者间隔开来。
至于段的实体可能是指物理内存中的段,那当然不能重叠。否则访问就会出错。比方说几个内存条各是64K大小的,那自然要把它们在更高级地址上分开来。
总之你理解了那个20位地址怎么来的就应该明白了。再重复一下
段寄存器作为段基址,左移四位再加上一个16位寄存器得到一个20位的地址
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
--
2022-12-05 广告
2022-12-05 广告
图形化编程简单理解为用积木块形式编程,scratch和python也是其中的一种,属于入门级编程,以其简单生动的画面获得无数学生的喜爱,深圳市创客火科技有限公司是一家做教育无人机的公司,旗下有编程无人机,积木无人机及室内外编队,每款飞机含有...
点击进入详情页
本回答由--提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询