汇编程序设计-17-CPU如何区分指令和数据

在内存中指令和数据是没有区别的,只有它们被读入到CPU中才会区分数据和地址。
在8086CPU中,在任意时刻,CPU将段地址寄存器CS和偏移地址寄存器IP中的地址进行组合,然后CPU从这个组合出来的物理地址开始读取字节。

指令从哪里来?

从CS和IP所组合的地址中来
在这里插入图片描述
在这里插入图片描述
1.先使用d命令,查看地址,d 2000:0,如下
在这里插入图片描述
2.使用e命令修改2000:0开始的内存
(修改完之后,按空格会跳转到下一个字节,然后继续修改)
在这里插入图片描述
3.可以使用(U+ 地址)命令,将指定地址的内容翻译成汇编指令
在这里插入图片描述

4.那如何让CPU执行地址2000:0的字节(我们输入的)
我们已经知道CPU执行的地址来自CS寄存器和IP寄存器的组合。所以可以修改这两个寄存器来达到让CPU执行我们自己输入的命令。
使用r命令,可以查看寄存器中的内容,也可以修改寄存器中的内容。
查看:
在这里插入图片描述
修改:
在这里插入图片描述
从结果可以看出,CS寄存器和IP寄存器已经被我们修改了,且下一条执行命令为:MOV AX,4E20
下面是使用t命令执行的结果:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发如雪-ty

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值