通用寄存器 段寄存器

来源:互联网 发布:淘宝资产交易 编辑:程序博客网 时间:2024/06/11 14:28
通用寄存器8 个通用寄存器是 8086 寄存器的超集,它们的名称和用途分别为:EAX 一般用作累加器EBX 一般用作基址寄存器( Base )ECX 一般用来计数( Count )EDX 一般用来存放数据( Data )EBP 一般用作堆栈指针( Stack Pointer )EBP 一般用作基址指针( Base Pointer )ESI 一般用作源变址( Source Index )EDI 一般用作目标变址( DestinatinIndex )8 个通用寄存器中通常保存 32 位数据,但为了进行 16 位的操作并与 16 为机保持兼容,它们的低位部分被当成 8 个 16 位的寄存器,即 AX 、 BX…DI 。为了支持 8 位的操作,还进一步把 EAX 、 EBX 、 ECX 、 EDX 这四个寄存器低位部分的 16 位,再分为 8 位一组的高位字节和低位字节两部分,作为 8 个 8 位寄存器。这 8 个寄存器分别被命名为 AH 、 BH 、 CH 、 DH 和 AL 、 BL 、 CL 、 DL 。对 8 位或 16 位寄存器的操作只影响相应的寄存器。例如,在做 8 位加法运算时,位 7 的进位并不传给目的寄存器的位 9 ,而是把标志寄存器中的进位标志( CF )置位。因此,这 8 个通用寄存器既可以支持 1 位、 8 位、 16 位和 32 位数据运算,也支持 16 位和 32 位存储器寻址。 段寄存器8086 中有 4 个 16 位的段寄存器: CS 、 DS 、 SS 、 ES ,分别用于存放可执行代码的代码段、数据段、堆栈段和其他段的基地址。在 80386 中,有 6 个 16 位的段寄存器,但是,这些段寄存器中存放的不再是某个段的基地址,而是某个段的选择符( Selector )。因为 16 位的寄存器无法存放 32 位的段基地址,段基地址只好存放在一个叫做描述符表( Descriptor )的表中。因此,在 80386 中, 我们把段寄存器 叫做选择符。下面给出 6 个段寄存器的名称和用途:CS 代码段寄存器DS 数据段寄存器SS 堆栈段寄存器ES 、 FS 及 GS 附加数据段寄存器
原创粉丝点击