. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(CPU工作原理)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  在一段没有任何跳转指令的程序中,超出64K的部分将不会被执行???  [已解决] 回复[ 5次 ]   点击[ 589次 ]  
zwjq
[帖 主]   [ 发表时间:2010-08-05 21:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-07-31 15:39
我的感觉是段是人为分出来的,最长是因为偏移地址的限制,所以不能一个段是不能超过2的16次,即64KB,而一个段不应该是8Byte,而只能是64KB,但是64KB之后的指令要是不断执行的话,也会被执行,因为段是人为分出来的(偏移地址不能我们说了算,但段地址可以我们说了算,只要它是16的倍数)
大家觉得呢?
masmaster
[第1楼]   [ 回复时间:2010-08-05 22:13 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
“段”空间本来就是认为划分的,偏移地址的范围大小取决于cpu的寻址能力。
zwjq
[第2楼]   [ 回复时间:2010-08-06 08:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-07-31 15:39
回复:[第1楼]
------------------
那一楼能解释一下为什么64KB之后的指令如果没有跳转指令的时候就不予执行了呢?是因为IP的关系吗?
masmaster
[第3楼]   [ 回复时间:2010-08-06 09:02 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
不太明白您的意思。
程序的按顺序执行,遇到某些条件会发生转移或者像jmp这样的无条件转移。转移的范围是受控制的,即受cpu寻址能力限制,ip就是64KB,eip就是4GB。
如果程序里没有转移指令,那么程序会一直执行下去,直到遇到返回指令(ret)为止。也就是说,程序所占空间有可能超过64KB的话, 也会一直顺序执行。
我是这么认为的。
zwjq
[第4楼]   [ 回复时间:2010-08-06 09:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-07-31 15:39
回复:[第3楼]
------------------
下列说法中正确的是:____
 8086CPU采用“段地址*16+偏移地址=物理地址”的寻址模式,所以内存是由一个一个的段组成,每一个段有一个段地址。
 物理地址为ffff0H的内存单元的偏移地址可能为ffffH。
 一个段的大小可以是8Byte。
 在一段没有任何跳转指令的程序中,超出64K的部分将不会被执行。
那为什么会选最后一项呢?我也认为程序也会一直执行下去,但和这道检测题就矛盾啦!还望赐教
zwjq
[第5楼]   [ 回复时间:2010-08-11 08:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-07-31 15:39
此贴由 贴主 于 [ 2010-08-11 08:12 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(masmaster):4分   3楼(masmaster):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved