提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本文梳理汇编语言的知识点中,CPU是如何区分指令和数据相关知识点
一、debug命令中的u指令和d指令
在了解CPU如何区分指令和数据相关知识点之前,我们先看相关的debug命令
-
debug -u指令
-
debug -d指令
二、CPU如何区分指令和数据
1.指令的寄存器组成
欲搞懂CPU是如何区分指令和数据的,我们借助dosbox进行实验即可发现
我们都知道指令内容是存储在一个真实地址,也就是物理地址上的,而物理地址由段机构寄存器和偏移地址寄存器的数值内容确定,我们借助doxbox -r命令修改相关寄存器的数据进行查看,从而确定究竟是由哪两个寄存器的数值最终确定指令的物理地址
在debug命令中,输入-r查看寄存器相关数值
再输入-t执行一条指令,发现其他的寄存器数值均未发生改变(除了主动要变化的AX),但是IP寄存器的数值发生了相关改变,那么也就是说,与命令有关的偏移地址寄存器为IP地址寄存器
那么我们再确定相关影响指令指向的段地址寄存器
观察可得,DS、ES、SS和CS的数值均为073F,和指令指向的段地址相同,那么我们便一个一个进行修改查看到底是哪个段地址寄存器在影响指令指向的地址
经过尝试可得,当修改CS寄存器时,对应的指令指向会发生变化,那么也就是说,决定指令指向地址的寄存器为CS和IP寄存器
总结
关于数据和指令区分整理如下:
- 8086CPU中,在任意时刻,CPU将CS:IP所指向的内容,全部当作指令来执行
- 在内存中,指令和数据是没有任何区别的,都是二进制信息,CPU只有在工作的时候,才将有的信息当作指令