菜鸟上路求解答
如图他的地址在10000H
我在写入完毕
为什么我可以在cs指向的地址可以输入代码,而且效果还不变,不应该是在1000 这里开始输入代码吗?
aa66foxmail 发表于 2013-5-11 11:37 static/image/common/back.gif
我的问题如图 其实我想问的就是这个问题 为什么可以在037f:100 可以输入汇编代码
其实很简单:你在037F:0100输入的指令,他们的地址为CS:IP,你看,你在-r时的CS、IP就是你输入指令时的地址……而你在1000:0输入数据时并没有改变CS、IP的值啊~· 难道mov ax,1000就是从1000开始 么 他把1000赋予给了段地址,因为不能把1000直接放到ds中,要通过寄存器ax做中介。其实我不懂你要问什么,反正就是这么个道理- - 每台明白楼主想问的是什么?ds是数据段,代码一般都是放在cs段,这段代码的意思是指定1000h为ds段地址,然而代码本身所占的空间就不是地址了。 我的问题如图 其实我想问的就是这个问题 为什么可以在037f:100 可以输入汇编代码 aa66foxmail 发表于 2013-5-11 11:37 static/image/common/back.gif
我的问题如图 其实我想问的就是这个问题 为什么可以在037f:100 可以输入汇编代码
为什么不可以,在不报错的情况下,你想写在哪里就在哪里。 aa66foxmail 发表于 2013-5-11 11:37 static/image/common/back.gif
我的问题如图 其实我想问的就是这个问题 为什么可以在037f:100 可以输入汇编代码
你能明白你写的代码所占用的地址,跟你代码里面那个地址是两回事就好了。代码里面是说要把存放在ds:之中的数据保存在寄存器之中,当然执行完之后你ds:里面的内容肯定不会变。我估计你是还弄不明白代码段和数据段的概念,才会这么问。 ax,bx,cx.....这是通用寄存器,而ds是段寄存器,地址不能直接到段寄存器,而是用通用寄存器地址储存起来,再交给DS, 为什么不可以,你的起始位置是037f:1000,那么你写的命令也只能从037f:1000开始执行,可以改一下起始地址:
r ds
Ds:XXXX
:037f
r ip
IP : XXXX
:0100
然后用D命令排列
D 037F:0100
......用同理的方法改为1000
file:///C:/Users/jh/AppData/Roaming/Tencent/Users/981577696/QQ/WinTemp/RichOle/D999TR7R
就是这个
我想楼主是把debug和编译器弄混了吧~~! 楼主加油,鱼C加油!我们都看好你哦! 谢谢大家,我也弄明白了 好好复习了下基础知识 谢谢大家 加油吧,楼主啊 我只是路过打酱油的。 ds是数据段,存放的是数据;而cs是代码段,存放的是指令啊。而你写指令是在代码段写的------和数据存储搭不上边啊。也就是说:只要你不让代码与数据地址相重合,他们就在两个空间互不干扰!
页:
[1]