. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  这道题我的理解,请问大家对不对哈  [待解决] 回复[ 9次 ]   点击[ 414次 ]  
198233
[帖 主]   [ 发表时间: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,好像感觉有对,
masmaster
[第1楼]   [ 回复时间:2010-08-25 21:16 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
3、  一个段的大小可以是8Byte。 
错。 段最小为16字节。如果你定义的段不足16字节, 编译器会自动把此段扩展成16字节。
mess
[第2楼]   [ 回复时间:2010-08-26 14:05 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
4-错误 
--------
cpu读取指令只更改ip,不会更改cs(和栈做出栈入栈操作只更改sp不会影响ss一样),所以程序没有跳转指令,寻址的能力取决于ip的变化范围。
iyt
[第3楼]   [ 回复时间:2010-08-26 17:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-25 18:20
2-正确
偏移地址范围:0000~ffff [貌似书上就有],共64K纯金
hk-xy
[第4楼]   [ 回复时间:2010-08-28 23:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-26 09:36
2-错误
我也解释不来、就是知道2是错的
正确答案是4、做过了
zsfenghu
[第5楼]   [ 回复时间:2010-08-29 21:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-28 17:25
2应该是错误的
我的理解如下
如果物理地址为ffff0H的内存单元的偏移地址为ffffH
那么段地址的起始地址为多少呢
为:ffff0-ffff=efff1
显然efff1不是16的倍数
所以不能是段地址的起始地址
liohao
[第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

说不好还请指教
mtmt1122
[第7楼]   [ 回复时间:2010-10-18 10:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-10-15 14:50
段最小为16字节???
这句话哪里来的?
书上只说过段的起始地址一定是16的倍数啊...
是因为下一个段也要从16的倍数处开始的原因吗?
ismylord
[第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不行?
515332695
[第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)。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved