|
主题 : : 这道题我的理解,请问大家对不对哈 [待解决] |
回复[ 9次 ]
点击[ 414次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-08-25 20:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-21 11:27 |
下列说法中正确的是:____
1、 8086CPU采用“段地址*16+偏移地址=物理地址”的寻址模式,所以内存是由一个一个的段组成,每一个段有一个段地址。
2、 物理地址为ffff0H的内存单元的偏移地址可能为ffffH。
3、 一个段的大小可以是8Byte。
4、 在一段没有任何跳转指令的程序中,超出64K的部分将不会被执行。
-----------------------------------------------------------------------------
1-错误
理由:内存没有分段,段的划分来源于cpu
2-错误
理由;最大偏移地址为 fffe
3-正确
段的长度最大为64k(1bity是一个存储单元,也是一个内存单元)
4-错误
不知道理由,5555,好像感觉有对, | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-08-25 21:16 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
3、 一个段的大小可以是8Byte。
错。 段最小为16字节。如果你定义的段不足16字节, 编译器会自动把此段扩展成16字节。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-08-26 14:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48 |
4-错误
--------
cpu读取指令只更改ip,不会更改cs(和栈做出栈入栈操作只更改sp不会影响ss一样),所以程序没有跳转指令,寻址的能力取决于ip的变化范围。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-08-26 17:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-25 18:20 |
2-正确
偏移地址范围:0000~ffff [貌似书上就有],共64K纯金 | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-08-28 23:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-26 09:36 |
2-错误
我也解释不来、就是知道2是错的
正确答案是4、做过了 | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-08-29 21:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-28 17:25 |
2应该是错误的
我的理解如下
如果物理地址为ffff0H的内存单元的偏移地址为ffffH
那么段地址的起始地址为多少呢
为:ffff0-ffff=efff1
显然efff1不是16的倍数
所以不能是段地址的起始地址 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-09-27 12:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-09-26 21:57 |
1、 8086CPU采用“段地址*16+偏移地址=物理地址”的寻址模式,所以内存是由一个一个的段组成,每一个段有一个段地址。
2、 物理地址为ffff0H的内存单元的偏移地址可能为ffffH。
3、 一个段的大小可以是8Byte。
4、 在一段没有任何跳转指令的程序中,超出64K的部分将不会被执行。
我的理解:
1、参考本书24页 内存并没有分段,段的划分来自于CPU,由于CPU采用[段地址*16+偏移=物理地址]的方式给出内存单元的物理地址
2、逆一下就知道了 [段地址*16+偏移=物理地址] 那么 [物理地址-偏移/10H=段地址] [ffff0H/10H-FFFF=0] 如果段地址为0的话就算他乘以春哥也话也等于0 所以[0*10H+FFFF=FFFF] 介个就是错误的,所以不能是段地址的--[起始地址] 正确的物理地址为[FFFF0H]的内存单元偏移地址是[FFFF*10H+0=FFFF0] *此处10H等于10进制16
3、段最小为16Byte 一段[内存单元]由16个[存储单元]组成,一个内存单元等于8bit=1Byte。为什么是16个存储单元参考本书24页。
4、还没学到这里-_-! 我想的话应该是不执行的 因为CS和IP最高也只能上到FFFFH
说不好还请指教 | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-10-18 10:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-10-15 14:50 |
段最小为16字节???
这句话哪里来的?
书上只说过段的起始地址一定是16的倍数啊...
是因为下一个段也要从16的倍数处开始的原因吗? | | |
|
|
|
|
[第8楼]
[ 回复时间:2010-10-18 21:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-10-15 14:54 |
2、逆一下就知道了 [段地址*16+偏移=物理地址] 那么 [物理地址-偏移/10H=段地址] [ffff0H/10H-FFFF=0] 如果段地址为0的话就算他乘以春哥也话也等于0 所以[0*10H+FFFF=FFFF] 介个就是错误的,所以不能是段地址的--[起始地址] 正确的物理地址为[FFFF0H]的内存单元偏移地址是[FFFF*10H+0=FFFF0] *此处10H等于10进制16
------------------
回复:意思是CS=0000H不行? | | |
|
|
|
|
[第9楼]
[ 回复时间:2010-10-18 22:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-06-01 22:23 |
回复:[第7楼]
------------------
正确,你给段一个地址后(如cs=0001) CPU寻址时用 cs*10h+ip=0010h+ip,
当cs=0002 cs*10h+ip=0020h+ip, 之间相差10h(就是16byte)。 | | |