汇编语言之寄存器(2)

时间:2023-01-29 01:24:53

通用寄存器

  1. 数据寄存器:在8086/8088/80286中包括AX、BX、CX、DX四个16位的数据寄存器,用来暂时存放程序运行中的操作数、结果或其他信息,并且它们可以16位或者8位的形式访问,例如AX可以分别访问高字节AH或低字节AL。但在80386/80486及后面的机型中是32位的数据寄存器EAX、EBX、ECX、EDX。这些32位的数据寄存器可以保存不同宽度的数据,并且它们可以以32位或者16位的形式被访问,不访问的部分不受影响,比如当我心血来潮想要访问DX时,EDX的高16位不受影响(下面的其他通用寄存器类似,毕竟大家都是一家人嘛)。 接下来肯定就是要说下AX、BX、CX、DX的具体作用了,它们四个除了可以作为通用寄存器来使用外,还有各自特俗的用处,AX:作为累加器,在算术运算中用来存储操作数,并且所有的I/O指令都使用AX与外设进行信息的传递;BX:计算存储器地址时,用作基址寄存器;CX:用来保存计数值,比如在移位指令、循环和串处理指令中用作隐含的计数器;DX:在进行双字长(32位)运算时,把DX和AX一起用,DX为高16位,AX为低16位,此外在对一些I/O操作时,DX还可以存放I/O的端口地址。
  2. 指针寄存器:叫它指针也可以,有SP、BP、DI、SI,和数据寄存器类似啊,用来存放数据的不过它们只能以字的形式访问,此外更常用的是存储器寻址(总要有人来完成这一部分吧,和名称有关),它们提供偏移地址。

           SP(stack pointer):堆栈指针寄存器,用来表示段顶的偏移地址;

           BP(base pointer):基址指针寄存器,它的任务就是作为堆栈区中的一个基地址以便访问堆栈中的信息,但是它可以与             堆栈段寄存器SS联合使用嘛,来确定堆栈中的某一存储单元的地址;

          SI(source index):源变址寄存器;

          DI(destination index):目的变址寄存器;

           这两个寄存器SI、DI嘛,通常与数据段寄存器DS联用,用来确定数据段中某一存储单元的地址。