Skip to content

05-寄存器 #5

@HHuiHao

Description

@HHuiHao

05-寄存器

CPU的典型构成

  • 对程序员来说,CPU中最主要部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制

  • 不同的CPU,寄存器的个数、结构是不相同的(8086是16位结构的CPU)

  • 8086有14个寄存器

都是16位的寄存器
可以存放2个字节

通用寄存器

  • AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途)
  • 通常,CPU会先将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行运算
  • 假设内存中有块红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间

1.CPU首先会将红色内存空间的值放到AX寄存器中:mov ax,红色内存空间
2.然后让AX寄存器与1相加:add ax,1
3.最后将值赋值给内存空间:mov 蓝色内存空间,ax

  • AX、BX、CX、DX这4个通用寄存器都是16位的,如下图所示

  • 上一代8086的寄存器都是8位的,为了保证兼容, AX、BX、CX、DX都可分为2个独立的8位寄存器来使用

H代表高位寄存器
L代表低位寄存器

字节与字

  • 在汇编的数据存储中,有2个比较常用的单位

1.字节:byte,1个字节由8bit组成,可以存储在8位寄存器中
2.字:word,1个字由2个字节组成,这2个字节分别称为字的高字节和低字节

  • 比如数据20000(4E20H,0100111000100000B),高字节的值是78,低字节的值是32

  • 1个字可以存在1个16位寄存器中,这个字的高字节、低字节分别存储在这个寄存器的高8位寄存器、低8位寄存器中

段寄存器

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

  • 是什么部件提供段地址?段地址在8086的段寄存器中存放

  • 8086有4个段寄存器:CS、DS、SS、ES,当CPU需要访问内存时由这4个段寄存器提供内存单元的段地址

CS (Code Segment):代码段寄存器
DS (Data Segment):数据段寄存器
SS (Stack Segment):堆栈段寄存器
ES (Extra Segment):附加段寄存器

  • 每个段寄存器的具体作用是?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions