鱼C论坛

 找回密码
 立即注册
查看: 3357|回复: 7

关于段地址大小的问题

[复制链接]
发表于 2012-1-25 10:15:36 | 显示全部楼层 |阅读模式
10鱼币
本人初学者,对段地址的原理还不是很明白。
现在有个疑问:

像cs,ds,ss 这些段地址寄存器都是16位的 ,那么比如像CS是通过地址总线去索引机器内存中的地址的。但是cs总共就只能定位2的16次方=65536个字节的地址。 问题就是如果内存的大小超过64KB的时候怎么办?

最佳答案

查看完整内容

超出就应该报错吧 8086 是经过 地址+偏移 生成20位地址总线 内存大小可支持1MB
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-1-25 10:15:37 | 显示全部楼层

超出就应该报错吧


8086 是经过 地址+偏移 生成20位地址总线  内存大小可支持1MB
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-25 13:50:54 | 显示全部楼层
使用es来附加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-26 19:55:10 | 显示全部楼层
比如你只能用0--9这10个数字表示0--99,那么我可以将0--99分成10段,每段用0--9表示,分别是0段1,2,3,4,5,6,7,8,9段,那么每一段有0,1,2,3,4,5,6,7,8,9,这10个数字,共10个
空间,
那么第10号(从0表示第一个)内存可以写成1:0,也就是第1段,第0个,注意内存的编号是从0开始的,也就是第一号内存写的时候用0表示,
自己用纸划一划就清楚了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-27 19:37:47 | 显示全部楼层
哈哈,不会的兄弟,你说的是如果“内存超过64KB”怎么办?有一样东西你没有注意到,像cs,ds,ss这些段寄存器课程的讲解是在原来内存为64KB的DOS系统的基础上进行讲课的,小甲鱼老师也说过,在以前的DOS系统编程时,有64KB内存的限制,但是一切事情都是在发展当中的,像你说的内存超过64kb,现在这个时代已经给解决了,比如说现在的内存为1G,真正的段存器采用ECS ,EDS,ESS,而原来的cs ,ds, ss 在现在来说已经不是原来意义上的段寄存器了,而是现在作为一个索引而已。这个问题你问的很好,你已经超前发挥了,哈哈,说真的,你挺厉害的。关于这个问题的具体内容,你可以去看看小甲鱼老师的win32编程,你就会明白了。哈哈,加油吧,你先把目前的汇编给学完,然后再看win32会简单很多,像现在这个问题,在将来的学习中,你自然就会明白了。哈哈~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-29 10:34:21 | 显示全部楼层
我个人感觉应该可能是再多定义几个段用什么指令跳过去吧比如JMP什么的,不知道对不对呀{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-1-31 02:00:51 From FishC Mobile | 显示全部楼层
段地址*16+偏移地址可以利用1M左右内存。因为这个限制,8086将无法寻到更多内存
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-2-17 15:16:49 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 02:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表