内存,高分求解答

chenyu2202863 2007-05-10 01:00:44
问题有许多,每个问题都有相当的分值,希望大家能帮帮我:
1、假定微机的RAM是32M字节数,则最后一个字节的八位十六进制数的地址是多少?

2、段和偏移量来标志地址,那18A3:5B27食指段的起始地址为18A30,这里为什么在对末尾多了个0?

3、在一个8086程序中,假定数据段寄存器DS的段号为23D1,且一条指令在该数据段的偏移量为7B86处取出一个字,则这个取出的字的五位十六进制数地址是多少?

4、在一个8086程序中,假定代码段寄存器CS包含的段号为014C,且指令指针的IPde内容为15FE,则下一条待取指令的五位十六进制数的地址是多少?


每题15分,谢谢帮我解答!
...全文
392 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
todototry 2007-05-11
  • 打赏
  • 举报
回复 1
2、段和偏移量来标志地址,那18A3:5B27食指段的起始地址为18A30,这里为什么在对末尾多了个0?
============================================
16位寄存器,解决20位地址线,所以才分两个
fengdream 2007-05-11
  • 打赏
  • 举报
回复
八位十六进制数的地址说明lz用的是32位机,则内存可寻址空间为2^32=4G。则第32m处的内存地址为 0x 01ff ffff;


p_zyh 2007-05-11
  • 打赏
  • 举报
回复
32M是2^25吧
并且地址是按字节连续的
不是按位连续的
所以不用减8

第二题jixingzhong(瞌睡虫·星辰)已经说的很清除了
后面两题套前面的公式就行了
chenyu2202863 2007-05-10
  • 打赏
  • 举报
回复
还有3,4的问题?
期待...
believefym 2007-05-10
  • 打赏
  • 举报
回复
还是不太懂,为什么是2的15次方?
--------
位数决定内存的最大容量,也就是最大地址
32位机器最大内存支持2^32
32M的15位刚好
jixingzhong 2007-05-10
  • 打赏
  • 举报
回复
2、段和偏移量来标志地址,那18A3:5B27食指段的起始地址为18A30,这里为什么在对末尾多了个0?

段+偏移量来标志地址 的计算方式就是这样的:
段地址*16 + 偏移量 = 物理地址;

*16 的原因是 段地址总是在 16字节边界上进行分段的,
结果段地址的末位总是0。
在 16 位系统下, 无法表示 20 位的地址值,
于是通过分段,并舍弃末位,只保留高四位得到的结果。
chenyu2202863 2007-05-10
  • 打赏
  • 举报
回复
还是不太懂,为什么是2的15次方?
那后面的问题呢?
believefym 2007-05-10
  • 打赏
  • 举报
回复
32M = 2^15
地址:0x7ffff-8
chenyu2202863 2007-05-10
  • 打赏
  • 举报
回复
2楼的兄台,可以给个说明么?
我这样只要答案也没意思
Ronal_Lee 2007-05-10
  • 打赏
  • 举报
回复
第一题:1F40000
p_zyh 2007-05-10
  • 打赏
  • 举报
回复
1.0x01FFFFFF
2.段的起始地址要求在16字节的边界上对齐,因此最低4位始终为0
为了节省空间在保存时省略了末尾的0
3.0x2B896
4.0x02ABE

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧