鱼C论坛

 找回密码
 立即注册
查看: 3005|回复: 9

[汇编作业] 【第2章 实验任务 第2题】A命令为何不是从CS:IP处开始写入内存?

[复制链接]
发表于 2013-8-17 13:48:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 南风烟雨五庄观 于 2013-8-17 13:51 编辑

原题是:
将下面3条指令写入从2000:0开始的内存单元中,利用这3条指令计算2的8次方。
mov ax,1
add ax,ax
jmp 2000:0003
我首先用R命令把CS:IP的内容修改为2000:0000

                               
登录/注册后可看大图
然后用D命令看了一下当前的内存位置却是108B:0100
用A命令写入,显示确实是从108B:0100开始写入的

                               
登录/注册后可看大图
最后用D 2000:0000 看了一下,这部分内存的确没有内容

为什么,在我第一步已经修改了CS和IP的值的情况下,用A命令写入内存不是在指定的CS:IP位置呢?




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-8-17 14:07:47 | 显示全部楼层
cs和ip只是一个指向,指向要运行的指定地点
如果要从2000:0来写入指令的话输入
a 2000:0 然后开始打代码
具体我感觉你还得看一下debug的命令具体使用方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 14:10:02 | 显示全部楼层
后来我仔细看小甲鱼的教学视频,果然也发现了类似情况
当用R命令修改了CS:IP以后,我们准备用A命令写入时却不是在那个CS:IP的位置
因为小甲鱼在讲解的过程中要用D命令显示写入的汇编指令时,发现不是从CS:IP开始显示的,因此用了
D 138C:0100 强行定位显示
QQ截图20130817141117.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-17 14:14:49 | 显示全部楼层
南风烟雨五庄观 发表于 2013-8-17 14:10
后来我仔细看小甲鱼的教学视频,果然也发现了类似情况
当用R命令修改了CS:IP以后,我们准备用A命令写入时却 ...

D指令只是查看内存中的内容
d 段地址:偏移地址(显示出来)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 14:24:19 | 显示全部楼层
可是,书上不是说"8086CPU访问内存都必须先由段地址和偏移地址在地址合成器中组成物理地址"吗?
A命令写入内存就是要访问内存,不应该按照CS和IP两个寄存器的指示位置去写入吗?
为何还要程序员把CS:IP作为参数明确手动给出呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-17 14:41:30 | 显示全部楼层
仔细看看前面几章。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-17 15:29:29 | 显示全部楼层
南风烟雨五庄观 发表于 2013-8-17 14:24
可是,书上不是说"8086CPU访问内存都必须先由段地址和偏移地址在地址合成器中组成物理地址"吗?
A命令写入 ...

看来你没理解A命令的意思
A命令=以汇编形式写入一条机器指令
a命令没有说明写入的就是cs ip指向的地址

cs与ip指向的是当前指令执行的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-17 15:37:04 | 显示全部楼层
小咒 发表于 2013-8-17 15:29
看来你没理解A命令的意思
A命令=以汇编形式写入一条机器指令
a命令没有说明写入的就是cs ip指向的地址
...

对的。我把有些概念混淆了。谢谢耐心解答。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-17 15:46:15 | 显示全部楼层
南风烟雨五庄观 发表于 2013-8-17 15:37
对的。我把有些概念混淆了。谢谢耐心解答。

慢慢学吧,过程中可能会有很多搞不清楚的地方,多看看书多看看视频,自己动手自己思考
我也才学到第十一章,越来越难了,有部分东西真的不太好理解>_<不知道是不是我太笨
一起学习共同进步吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-23 11:37:11 | 显示全部楼层
有两种方法。
(1)先用r命令修改cs和ip为2000和0000,再用a命令在2000:0000处写入指令代码
(2)先用a命令在2000:0000处写入指令代码,再用r命令修改cs和ip为2000和0000
然后用t命令单步调试就可以达到预期效果了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-27 08:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表