8086的寄存器结构
8086的寄存器结构 , {9 }5 k( r& \
从图2.1中可以看到,8086内含14个16位寄存器。下面分五方面加以介绍。
6 s1 y. b. C; E7 Y& c8 b 1.通用寄存器 : f/ M2 y3 C6 m
图2.1中的Ax、BX、CX和DX是4个16位的通用寄存器。为了能处理字节数据,这4个寄存器都可看成由2个8位寄存器组成,它们可单独使用。例如,AX可看成由高8位寄存器AH和低8位寄存器AL组成。在编程时,通用寄存器既可作为源操作数(其内容作为参与运算的数),又可作为目的操作数(用来存放运算结果)。
& e# N. h! x9 i* E' W- r' { 2.指针和变址寄存器
( R6 ]7 q/ C* `8 j% |) a 图2.1中的SP和BP同属指针寄存器。sP就是第一章讲到的栈指针寄存器,用来指示栈顶的位置。由于堆栈是作为一个段出现的,所以SP的内容是栈顶单元在现行堆栈段中的段内偏移量。BP为变址指针。图2.1中的SI和DI同属变址寄存器。SI称为源操作数变址寄存器,DI称为目的操作数变址寄存器。BP、SI和DI都是为提供多种寻址方式而设置的。 ) `. S1 ]/ {& B* ?2 ?5 m
所谓“寻址方式”,是指在指令中往往不直接给出操作数的地址,而是给出形成操作数地址的有关信息,执行指令时需要利用这些信息来形成操作数地址。例如,对于指令“MOV AX,[SI 2]”,源操作数地址的段地址是段寄存器DS的当前内容,而源操作数地址的段内偏移量 1 T: i5 K, ^5 O$ V2 i- |
是SI的当前内容加2所得的结果。这一条指令的功能是读取从上述逻辑地址开始的两个相邻存储单元的内容赋给AX(低位地址存储单元的内容赋给AL,高位地址存储单元的内容赋给AH)。 Y( b4 b; u& \$ F. k7 v+ l
3.段寄存器
1 Z9 W/ ^; @2 Y: x+ N: ?. q# x 段寄存器在上面已做介绍,它们是Cs、Ds、sS和Es。前面提到一个程序中可以设置几个数据段,对其他类型的段也是如此,可以设置多个段,但一段时间内只能使用其中的一个。
点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹