怎样通过改变寄存器中的内容实现对CPU的控制呢?

寄存器寄存器是cpu中程序员可以用指令读写的部件,通过改变寄存器中的内容实现对cpu的控制。
运算器进行信息处理;寄存器进行信息存储控制器控制各种器件进行工作;内部总线连接各种器件,在它们之间进行数据的传送。2.1 通用寄存器8086cpu的所有寄存器都是16位的,可以存放两个字节。ax、bx、cx、dx这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。8086cpu的上一代cpu中的寄存器都是8位的,为了保证兼容,8086cpu的ax、bx、cx、dx这4个寄存器都可分为两个可独立使用的8位寄存器来用:
ax可分为ah和al;bx可分为bh和bl;cx可分为ch和cl;dx可分为dh和dl。2.2 字在寄存器中的存储8086cpu可以一次性处理以下两种尺寸的数据。
字节 :记为byte,一个字节由8个bit组成,可以存在8位寄存器中。字 :记为word,一个字由两个字节组成,这两个字节分别称为这个字的高位字节和低位字节。一个字可以存在16位寄存器中。2.3 几条汇编指令汇编指令不区分大小写。在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的。2.4 物理地址所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。cpu通过地址总线送入存储器的,必须是一个内存单元的物理地址。
2.5 16位结构的cpu16位结构(16位机、字长为16位等常见说法,与16位结构的含义相同)描述了一个cpu具有下面几方面的结构特性。
运算器一次最多可以处理16位的数据;寄存器的最大宽度为16位;寄存器和运算器之间的通路为16位。2.6 8086cpu给出物理地址的方法8086cpu采用一种在内部用两个16位地址合成的方法来形成一个20位(地址总线)的物理地址。当8086cpu要读写内存时:
cpu中的相关部件提供两个16位的地址,一个称为段地址,另一个称为偏移地址;段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;地址加法器将两个16位地址合成为一个20位的物理地址;地址加法器通过内部总线将20位物理地址送入输入输出控制电路;输入输出控制电路将20位物理地址送上地址总线;20位物理地址被地址总线传送到存储器。地址加法器采用物理地址=段地址×16+偏移地址的方法用段地址和偏移地址合成物理地址。
2.7 “段地址×16+偏移地址”的本质含义“段地址×16+偏移地址=物理地址”的本质含义是:cpu在访问内存时,用一个 基础地址 (段地址×16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。
2.8 段的概念内存并没有分段, 段的划分来自于cpu ,由于8086cpu用“基础地址(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。
有两点需要注意:段地址×16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16位(寄存器位数),16位地址的寻址能力为64kb,所以一个段的长度最大为64kb。
“数据在21f60h内存单元中。”这句话对于8086pc机一般不这样讲;而是如下说法:
数据存在内存20001f60单元中;数据存在内存的2000h段中的1f60h单元中。2.9 段寄存器段地址在8086cpu的段寄存器中存放。8086cpu有4个段寄存器:cs、ds、ss、es。当8086cpu要访问内存时由这4个段寄存器提供内存单元的段地址。
2.10 cs和ipcs和ip是8086cpu中两个最关键的寄存器,它们指示了 cpu当前要读取指令的地址 。
cs为代码段寄存器;ip为指令指针寄存器。任意时刻,cpu将cs:ip指向的内容当作指令执行。具体的工作过程:
从cs:ip指向的内存单元读取指令,读取的指令进入指令缓冲器;ip:=ip+所读取指令的长度,从而指向下一条指令;执行指令。转到步骤1,重复这个过程。在8086cpu加电启动或复位后(即cpu刚开始工作时)cs和ip被设置为cs= ffffh,ip=0000h,即在8086pc机刚启动时,cpu从内存 ffff0h单元中读取指令执行,ffff0h单元中的指令是8086pc机开机后执行的第一条指令。
2.11 修改cs、ip的指令在cpu中,程序员能够用指令读写的部件只有寄存器,程序员可以通过改变寄存器中的内容实现对cpu的控制。
能够改变cs、ip的内容的指令被统称为 转移指令 。若想同时修改cs、pp的内容,可用形如“jmp段地址:偏移地址”的指令完成。
jmp 2ae3:3 #执行后:cs=2ae3h,ip=0003h,cpu将从2ae33h处读取指令。jmp 3:0b16 #执行后:cs=0003h,ip=0b16h,cpu将从00b46h处读取指令。若想仅修改ip的内容,可用形如“jmp某一合法寄存器”的指令完成。
jmp ax, #指令执行前:ax=1000h,cs=2000h,ip=000h #指令执行后:ax=1000h,cs=2000h,ip=1000hjmp bx, #指令执行前:bx=0b16h,cs=2000h,ip=0003h #指令执行后:bx=0b16h,cs=2000h,ip=0b16h

全双工传输,全双工传输原理是什么?
DS1307实时时钟分线板套件的使用
洲明科技:预计从第三季度开始Mini LED的价格优势会逐步显现出来
英伟达:GPU虚拟化“风口”来临 VDI+vGPU会是桌面云应用的主流
无线充电相关原理的深层次解析
怎样通过改变寄存器中的内容实现对CPU的控制呢?
苹果2020年第四季度的Mac和iPad销量创下了历史新纪录
十四五浪潮下我们要怎样构建城市数据中心网络?
小米火力全开,红米K20的降价,正面力拼荣耀9X Pro!
基于外差探测Φ-OTDR的超低采样精度技术及应用
常用音乐集成电路
英特尔、鸿海双强联手拼5G
又一SiC车型上市,首发订单破10000辆
英特尔MID的理想与现实
工控机为提升其散热性能都有哪些方法
4月11日新款MateBook X Pro“冲刺来见”,你准备好了吗?
人脸识别系统常见的三大应用领域
新型微管泵可以长距离输送水滴
为什么说Android One才是谷歌最重要的新平台
电力变压器维护内容