汇编语言-day2上

寄存器

一个典型的cpu由运算器,控制器,寄存器等器件构成,这些器件靠内部总线相连,简单来说,在cpu中,运算器进行信息处理,寄存器进行信息存储,控制器控制各种器件进行工作,内线总线连接各种器件,在他们之间进行数据传递,对于汇编程序员来说,寄存器是cpu中可以用指令读写的部件,不同的cpu,寄存器的个数和结构是不相同的,每一个寄存器都有自几的名称,AX,BX,CX,DX。。。。
通用寄存器
8086CPU 所有的寄存器都是16位的,可以存放两个字节,AX,BX,CX,DX这4个寄存器通常存放一般性的数据,叫通用寄存器,以AX为代表,寄存器逻辑结构为如图
在这里插入图片描述

为了保证兼容,8086CPU的AX,BX,CX,DX这四个寄存器都可以分为两个可独立的8位寄存器来使用
AX-------AH+AL
BX-------BH+BL
CX-------CH+CL
DX-------DH+DL
在这里插入图片描述在这里插入图片描述字在寄存器中的存储
出于兼容性的考虑,8086cpu可以一次性处理一下俩种尺寸的数据

  • 字节 记为byte 一个字节由8个bit组成,可以存在8为寄存器中
  • 字 word 一个字由两个字节组成,这两个字节分别为这个字的高位字和底位字节
    汇编指令举列
    在这里插入图片描述物理地址
    所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间都有唯一的地址,我们将这个地址称位物理地址,cpu通过地址总线送入存储器的,必须是一个内存单元的物理地址,在cpu向地址总线发出物理地址之前,必须在内部先形成这个物理地址,不同的cpu有不同的形成方式(我们这里讨论8086cpu)
    16 位结构的cpu
    16位结构cpu有一下几方面的特征
  • 运算器一次最多可以处理16位的数据
  • 寄存器最大宽度为16位
  • 寄存器和运算器之间的通路位16位


段的划分来自于cpu,由于8086cpu用“基础地址(段地址*16)+偏移量地址=物理地址” 的方式给出内存单元的物理地址,使我们可以用分段的概念来管理内存(一个段的长度最大为64kb)

段寄存器
cs和ip
cs和IP是8086cpu中最关键的寄存器,它指示了cpu当前要读取指令的地址,cs为代码段寄存器,ip为指令指针寄存器,在任意时刻设,设CS的内容为M,IP的内容为N,8086cpu 将从M*16+N单元开始,读取一条指令并执行(在任意时刻,cpu将cs:ip指向的内容当作指令执行)
CPU根据cs:ip指向的内存单元的内容看作指令,因为在任何时候,cpu将cs,ip中的内容当作指令的段地址和偏移地址,用于合成他们的物理地址,到内存中读取 指令码

代码段
前面说,对于8086cpu的pc机,我们可以根据需要,将一组内存单元定义为一个段,我们可以将长度N(N<=64kb)的一组代码,存在一组地址连续,起始地址为16的倍数的内存单元中,我们可以认为,这段内存是用来存放代码的,从而定义了一个代码段
在这里插入图片描述

发布了34 篇原创文章 · 获赞 19 · 访问量 1467

猜你喜欢

转载自blog.csdn.net/qq_42236003/article/details/104089793