汇编语言之寄存器(CPU工作原理)(2)

简介: 汇编语言之寄存器(CPU工作原理)(2)

6  CS和IP

8086CPU在访问内存时,要由相关部件提供内存单元的段地址和偏移地址,然后送入地址加法器合成物理地址,那么,是什


么部件提供段地址呢?是段寄存器提供段地址。8086CPU有4个段寄存器:CS、DS、SS、ES,本章先讲解CS。


CS和IP是8086CPU中2个最为关键的寄存器,它们指示了CPU当前要读取指令的地址,我们看一下CE,可以看出在游


戏中,什么是CPU要读取的指令地址,见下图:

18.png19.png

20.png21.png22.png23.png24.png25.png26.png

上图指令执行后,AX中的数值为0123H。那么,接下来就是读取、执行下一条指令 BB 03 00(mov bx,0003h)了。


CS和IP的重要性在于它们的数值提供了CPU要执行指令的地址。


在1.5节中,我们说过,在内存中指令和数据没有任何区别,都是二进制信息,CPU在工作的时候,把有的信息看作指令,


把有的信息看作数据,那么,CPU在什么时候把它看作指令?在什么时候把它看作数据呢?现在我们可以回答第一个问题了。


   答:只要内存单元(二进制信息)被CS:IP指向,那么,这些内存单元就会被CPU看作指令执行。


7  修改CS和IP的指令

Mov被称为传送指令,可以修改大部分寄存器的值。如:mov ax,123H,将ax中的值设为123H,同样地,我们可以mov

bx,2a4H  mov cx,5f0H  mov dx,b29H 等等。但是,mov不能修改CS和IP这两个寄存器的值,因为8086CPU没有提


供这样的功能。


要修改CS和IP的值,可以用jmp指令,事实上,还有一些指令是可以修改CS和IP的,这些指令被统称为转移指令,这


个在后面的课程会讲到,现在先学习这个最简单的转移指令:jmp。


若想同时修改CS和IP的值,可用形如“jmp 段地址:偏移地址”的指令完成。如:jmp 2ae3:9,执行后:CS=2ae3H,


IP=9H,CPU将从2ae39H处读取指令。


“jmp 段地址:偏移地址”指令的功能为:用指令中给出的段地址修改CS,偏移地址修改IP。


若想仅修改IP的值,可用形如“jmp 某一合法寄存器”的指令完成。如:jmp ax,执行前ax=437aH,CS=17f0H,IP=


423cH,执行后,CS不变,IP=437aH。


“jmp 某一合法寄存器”指令的功能为:用寄存器中的值修改IP。为什么叫“某一合法寄存器”?因为不是所有寄存器都可


以修改IP。



8 代码段

在编程时,可以根据需要,将一组内存单元定义为一个段。段分3种类型:代码段、数据段、栈段。


对于8086PC机,我们可以将长度为N(N≤64KB)的一组代码(机器指令和汇编指令),存在一组地址连续、起始地址为


16的倍数的内存单元中,我们将这一组内存单元定义为代码段。


比如,将:  机器指令        汇编指令


           B8 00 00       mov ax,0000H


           05 23 01       add ax,0123H


           8B D8          mov bx,ax


           FF E3          jmp bx


这段长度为10字节的指令,存放在123B0H~123B9H的一组内存单元中,我们就可以认为这是一个代码段。若要让CPU


执行这些指令,必须要将CS:IP指向代码段中第一条指令的首地址(123B0H)


相关文章
|
6月前
|
安全 Linux KVM
倚天产品介绍|倚天虚拟化:CPU虚拟化原理介绍
虚拟化技术中最关键的技术之一就是CPU虚拟化。在没有硬件辅助虚拟化技术出来之前,通常都是通过TCG(软件进行指令翻译)的方式实现CPU虚拟化。但是由于TCG方式的虚拟化层开销太大,性能太差,因此引入了硬件辅助虚拟化技术。
|
SQL Java 数据库连接
联表查询 && 索引 && 事务 && JDBC使用 &&CPU工作原理 && 线程概念 && Thread类的用法
联表查询 && 索引 && 事务 && JDBC使用 &&CPU工作原理 && 线程概念 && Thread类的用法
156 0
|
1月前
|
存储 缓存
CPU运算器的工作原理基于其内部结构,通过执行算术和逻辑操作来完成各种任务
CPU运算器的工作原理基于其内部结构,通过执行算术和逻辑操作来完成各种任务
46 3
|
1月前
CPU的工作原理基于其内部结构,通过执行指令来完成各种任务
CPU的工作原理基于其内部结构,通过执行指令来完成各种任务
49 2
|
1月前
CPU的原理
CPU的原理
39 1
|
5月前
|
存储 程序员 存储控制器
【读书笔记】汇编语言(第四版)第二章 寄存器
【读书笔记】汇编语言(第四版)第二章 寄存器
|
5月前
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
汇编语言(第四版) 实验一 查看CPU和内存,用机器指令和汇编指令编程
8086 汇编笔记(十):标志寄存器
8086 汇编笔记(十):标志寄存器
|
6月前
|
存储
8086 汇编笔记(二):寄存器(内存访问)
8086 汇编笔记(二):寄存器(内存访问)
|
6月前
|
存储
8086 汇编笔记(一):寄存器
8086 汇编笔记(一):寄存器