鱼C论坛

 找回密码
 立即注册
查看: 3552|回复: 7

[已解决]新人求教。。检测点3.1

[复制链接]
发表于 2015-7-31 05:42:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 axix005 于 2015-7-31 09:11 编辑

QQ图片20150731054240.png


---------------------------------

cs= 2000h ,ip=0, ds=1000h,ax=0 ,bx=0;
写出cpu执行的指令序列 汇编指令

写出CPU执行每条指令后,CS。IP和相关寄存器中的数值。

3体会,数据和程序有区别吗?如何确定内存中的信息哪些是数据,哪些是程序

mov ax,6622      CS=2000h  ip=0003  ds=1000  ax=6622 bx=0

jmp 0ff0:0100   CS=1000 ip=0   ds=1000   ax=6622  bx=0

mov ax,2000h    cs=1000  ip=3 ds=1000   ax=2000   bx=0

mov ds,ax      cs=1000  ip=5  ds=2000  ax=2000  bx=0

mov ax,[0008]  cs=1000  ip=8  ds=2000   ax=0089   bx=0

mov ax,[0002]  cs=1000  ip=B   ds=2000 ax=0066  bx=0

为什么mov ax,[0008]  mov ax,[0002]   和网上答案不一样?

图片要的不是0008和0002吗,为什么是整个c389和6622了
最佳答案
2020-4-7 08:54:29
你没发现ds=2000,而mov ax,[0008],在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:[0008].所以取得是C389
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-31 08:31:25 | 显示全部楼层
数据和代码存在内存中是一样的,他们的性质是一样的,都是10101011的二进制代码。你给cpu说它是数据,那么cpu就把它当数据,反之就是代码命令。代码也可以当数据,但是没意义。我只能帮到这里了,我也不是很懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-31 12:47:17 | 显示全部楼层
你没发现ds=2000,而mov ax,[0008],在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:[0008].所以取得是C389
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-31 16:29:03 | 显示全部楼层
{:1_1:}{:1_1:}{:1_1:}{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-31 16:31:13 | 显示全部楼层
数据和程序要看你自己怎么定义了,你要他是程序就是程序,要他是数据他就是数据,都是二进制的代码,以线性存储
ds=2000,而mov ax,[0008],在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:[0008].所以取得是C389
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-31 20:38:38 | 显示全部楼层
本帖最后由 axix005 于 2015-7-31 20:43 编辑
jmuxiaolu 发表于 2015-7-31 12:47
你没发现ds=2000,而mov ax,[0008],在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是 ...


也就是内存段不能不要C3只单独提取20008  这个单个单元字节89吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-2 03:46:13 | 显示全部楼层
本帖最后由 axix005 于 2015-8-2 19:15 编辑

结贴,明白了,学到第5章讲解()才明白ax一定等于字,,,细到高低位才是求字节

哈哈,今天看视频才知道3.0就讲到了,,,,我都是先看书后看视频- -!~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 08:54:29 | 显示全部楼层    本楼为最佳答案   
你没发现ds=2000,而mov ax,[0008],在没有段前缀的情况下,CPU在取数据的时候都是使用默认的段前缀。也就是说,数据段使用的是数据段寄存器ds,上面指令等价于mov ax,ds:[0008].所以取得是C389
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 10:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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