|
主题 : : 【检测点】2.2 看我理解的是否正确 [已解决] |
回复[ 7次 ]
点击[ 404次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-12-21 14:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
(1)给定段地址为1000H,仅通过变化偏移地址寻址, CPU的寻址范围[00010H--1000FH.
#因为偏移地址变化范围0~FFFFH,所以最大便宜为FFFFH,根据物理地址=段地址X16+偏移地址公式计算即可
(2) 有一数据存放在内存20000H单元中, 给定段地址为SA, 若想用偏移地址寻址此单元。 则SA应满足的条件是:最小为:0001H,最大为:1FFFH
#因为CPU怎么变化偏移地址都无法超过给出的物理地址20000H,因为段地址与偏移地址都是16的倍数, 所以SA最大的情形如下
a:20000H-10H=1FFF0H
b:1FFF0H/10H=1FFFH
c:验证:
1FFFHX16+10=20000H
请大家指教 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-12-21 20:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46 |
(1)的答案应该是10000H~1FFFFH才对。
(2)最大的段址应该是 2000h:当偏移量为 0 时,20000h 单元位于该段起点;
而最小段地址应该满足:
x*16+0ffffh = 20000h
则:
x = (20000h - 0ffffh)/16
= (20000h - 10000h + 1)/16
= (10000h + 1)/16
= 1000h + 1/16
显然,能够将物理地址为 20000H 的单元包含在内的最小段地址是 1001H, 这时访问该单元的偏移量是 0ffe0h;而段地址为 1000h 的段最远只能访问物理地址为1ffffH的单元。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-12-21 23:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
(1), 给定的段地址是0001H, 不好意思, 我输入错误。
(2),我在思考一下
谢谢 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-12-22 01:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
感谢scuzg兄解释
1,最大段地址是2000H, 这我明白啦, 因为偏移地址可以是0
而2中您所说的0fffh, 是怎么来的呢, 我有点糊涂, 如方便望解惑 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-12-22 08:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46 |
楼主说的0fffh是不是少了一个 f ? 是0ffffh吗?
0ffffh 是一个段的最大偏移量。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-12-22 10:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:49
信誉值:0
注册日期:2008-10-15 16:15 |
段地址和偏移地址都是16位寄存器存放的,所以它的最小值是0,最大是ffffH。(这个数值也是指无符号说的) | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-12-22 11:15 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
感谢楼上两位。
明白啦!!!
就是说一个段最大长度是64KB(FFFFH),用20000H减去这个最大长度就是这个地址的最小其实地址。 | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-01-01 15:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
此贴由 贴主 于 [ 2010-01-01 15:31 ] 结贴。 结贴原因:问题已解决 | | |