- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.2.1 80x86 CPU的寄存器 1.80x86 CPU的寄存器分类 80x86 CPU的内部寄存器可分为以下3大类: 基本结构寄存器组 :通用寄存器、指令指针寄存器、标志寄存器、段寄存器。 系统级寄存器组 :系统地址寄存器、控制寄存器、测试寄存器、调试寄存器。 浮点寄存器组 :数据寄存器、标记字寄存器、指令和数据指针寄存器、控制字寄存器。 2.基本结构寄存器组 基本结构寄存器组如右图所示: 通用寄存器; 指令指针寄存器; 标志寄存器; 段寄存器 。 (1)通用寄存器 图中除阴影区以外的寄存器是8086/8088和80286所具有的寄存器,它们都是16位寄存器。其中4个16位的寄存器AX、BX、CX、DX可称为数据寄存器。这4个寄存器都是通用寄存器,但它们又可以用于各自的专用目的。 AX(Accumulator)作为累加器用。在乘除等指令中指定用来存放操作数。另外,所有的I/O 指令都使用这一寄存器与外部设备传送信息。 BX(Base)可以作为通用寄存器使用。此外,在计算存储器地址时,它经常用作基址寄存器。 CX(Count)可以作为通用寄存器使用。此外,它还常用来保存计数值,如在移位指令、循环(LOOP)和串处理指令中用作隐含的计数器。 DX可以作为通用寄存器使用。一般在做双字长运算时把DX和AX组合在一起存放一个双字长数,DX用来存放高位字。此外,对某些I/O 操作,DX可用来存放I/O 的端口地址。 SP、BP、DI、SI 这4个16位寄存器可以像数据寄存器一样在运算过程中存放操作数,但它们只能以字(16位)为单位使用。此外,它们更经常的用途是在存储器寻址时,提供偏移地址。因此,可称它们为指针或变址寄存器。 (2)指令指针寄存器和标志寄存器 IP(Instruction Pointer)为指令指针寄存器,它用来存放代码段中的偏移地址。IP作为指令的地址指针,其作用类似于其他计算机中的程序计数器PC,当现行指令执行完毕时,由IP提供下一条指令地址。 FLAGS为标志寄存器,又称PSW(Program Status Word),即程序状态寄存器。这是一个存放条件码标志、控制标志和系统标志的寄存器。 80386及其后继机型的指令指针寄存器EIP和标志寄存器EFLAGS是32位的,其作用和相应的16位寄存器相同。 下图说明了80x86 CPU中标志寄存器的内容: ① 条件码标志包括以下6位: OF(Over Flow Flag) 溢出标志。将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则OF置1;否则OF置0。对于字节运算有?128≤N≤+127;对于字运算有?32768≤N≤+32767。 SF(Sign Flag) 符号标志。把指令执行结果看作带符号数,如结果为负,则SF置1;结果为正,则SF置0。 ZF(Zero Flag) 零标志。如指令执行结果各位全为0时,则ZF置1;否则ZF置0。 CF(Carry Flag) 进位标志。在进行算术运算时,如最高位(对字操作是第15位,对字节操作是第7位)产生进位或借位时,则CF置1;否则置0。在移位类指令中,CF用来存放移出的代码(0或1)。 AF(Auxiliary Carry Flag) 辅助进位标志。在进行算术运算时,如低字节中低4位(第3位)产生进位或借位时,则AF置1;否则AF置0。AF可用于十进制运算的校正。 PF(Parity Flag) 奇偶标志。用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当运算结果中1的个数为偶数时置1,否则置0。 ② 控制标志位1位 DF(Direction Flag)方向标志,用来在串处理指令中控制处理信息的方向。当DF位为1时,每次操作后使变址寄存器SI和DI减小,这样就使串处理从高地址向低地址方向处理。当DF位为0时,则使SI和DI增大,使串处理从低地址向高地址方向处理。 ③ 系统标志位有10位: TF(Trap Flag) 陷阱标志,用于调试时的单步方式操作。 IF(Interrupt Flag) 中断标志 。
文档评论(0)