. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  指令和数据的存储  [已解决] 回复[ 5次 ]   点击[ 347次 ]  
wxenck
[帖 主]   [ 发表时间:2009-12-25 15:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2008-06-18 16:30
指令和数据不都是存储在内存中的么,如果是指令和数据是存储在相同的内存段中.ds既然指明了程序执行过程中要用到的数据和指令,那cs不管怎么跳转都应该在ds所可以表示的内存范围内...可以这样理解吧...书上的例子中cs怎么和ds不一致,这个怎么理解,是不是说只要cs:IP所指向的位置是ds:dx范围中的都是可以的.?
acool
[第1楼]   [ 回复时间:2009-12-29 17:47 ]   [引用]   [回复]   [ top ] 
荣誉值:49
信誉值:0
注册日期:2008-10-15 16:15
指令和数据不都是存储在内存中的么,
-------------
正确。

如果是指令和数据是存储在相同的内存段中 
---------------------------------
“段”是个概念,不是在内存中实际存在的,可以把数据段和代码段都当是存储在一个段中。(汇编书上的程序没有大于64k的)

ds既然指明了程序执行过程中要用到的数据和指令,那cs不管怎么跳转都应该在ds所可以表示的内存范围内
---------------------------------
正确。但是同样一个一个物理地址,可以由不同的段地址和偏移地址寻址到。
比如物理地址10h,可以用段地址1和偏移地址0寻址到,也可以由段地址0和偏移地址10h寻址到。

书上的例子中cs怎么和ds不一致,这个怎么理解,是不是说只要cs:IP所指向的位置是ds:dx范围中的都是可以的.?
------------------------
不知道楼主说的"书上的例子中cs怎么和ds不一致"在几章,多少页,实际情况是什么。
这句话的根本还是开始说的,对“段”的理解。
wxenck
[第2楼]   [ 回复时间:2009-12-30 15:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2008-06-18 16:30
不知道楼主说的"书上的例子中cs怎么和ds不一致"在几章,多少页,实际情况是什么。 
比如第105页,图5.5中
ds=ffff 而cs=0b3d ,程序在刚开始加载时ds=0b2d后来修改了ds的值后变成了ffff,而cs的值没有变.既然ds的值变了,那么它所表示的物理的内存地址也就不是以前的了.那cs的值仍然没有变它所指向的仍然是ds没变之前所表示的地址.指令又怎么是正确执行的呢...
abob
[第3楼]   [ 回复时间:2009-12-30 16:42 ]   [引用]   [回复]   [ top ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
指令又怎么是正确执行的呢...
-------
指令的执行,只跟cs:ip有关,根据第三章的知识(检测点3.1最后一问也提到了)。cpu通过cs/Ip找到要执行的指令的位置,把cs:ip指向内存的数据当作指令来执行。
但并不是说只有ds段地址可寻址的内存(ds:0~ds:ffff)中存放的是数据,检测点1.1最后一问也提到了,内存中的数据都是二进制信息。也就是说都是数据。

ds段和学到的es段等和cs段没什么直接关联,不会由于其他的寄存器变化给跟随变化。
比如楼主说的105页的程序,ds段值的变化并没有影响cs的值。
abob
[第4楼]   [ 回复时间:2009-12-30 16:44 ]   [引用]   [回复]   [ top ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
程序在刚开始加载时ds=0b2d,
---------
这个时候ds的值,不过是debug加载赋予ds的值, 并代表一个意义。并不是说这里开始就是数据段了。

等第六章会讲到多个段,这里才会讲到大家常说的数据段。
wxenck
[第5楼]   [ 回复时间:2009-12-31 00:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2008-06-18 16:30
此贴由 贴主 于 [ 2009-12-31 00:51 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(acool):3分   3楼(abob):3分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved