寄存器及其对标志寄存器的影响 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 8086CPU中共有14个寄存器,并且所有的寄存器都是16位的。分为低8位和高8位。 这16个寄存器分别为:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。 一、通用寄存器 ^^^^^^^^^^^^^^ == ================================ ====== ====== ============ ==== 中文名 高八位 低八位 对寄存器影响 操作 == ================================ ====== ====== ============ ==== AX 累加器/Accumulator AH AH BX 基址寄存器/Base Address Register BH BL CX 计数器/Counter CH CL DX 数据寄存器/Date DH DL == ================================ ====== ====== ============ ==== 二、段寄存器 ^^^^^^^^^^^^ == =========================== CS 代码段寄存器(Code Segment) DS 数据段寄存器(Data Segment) ES 附加段寄存器(Extra Segment) FS 附加段寄存器(Extra Segment) GS 附加段寄存器(Extra Segment) SS 堆栈寄存器(Stack Segment) == =========================== 变址寄存器 ^^^^^^^^^^ == ================================ \ 中文名 == ================================ SI 源索引寄存器/Source Index DI 目标索引寄存器/Destination Index == ================================ 指针寄存器 ^^^^^^^^^^ == SP BP == 指令寄存器 ^^^^^^^^^^ == IP == 标志寄存器 ^^^^^^^^^^ +------+------+-------------+-------------------------+-------------------------+ | 位置 | 名字 | | =0 | =1 | +======+======+=============+=========================+=========================+ | 0 | C | 进位 | 处理 | 处理器 | | | F | 标志/Carry | 器进行算术操作时,最高 | 进行算术操作时,最高位 | | | | Flag | 位有向前进位或借位,则 | 没有向前进位或借位,则 | | | | | CF=1; | CF=0 | +------+------+-------------+-------------------------+-------------------------+ | 1 | | | | | +------+------+-------------+-------------------------+-------------------------+ | 2 | P | 奇偶 | 计算结果出来后, | 计算结果出来后, | | | F | 标志/Parity | 低八位有奇数个为1的比特 | 低八位有偶数个为1的比特 | | | | Flag | | | +------+------+-------------+-------------------------+-------------------------+ | 3 | | | | | +------+------+-------------+-------------------------+-------------------------+ | 4 | A | 辅 | | | | | F | 助进位标志 | | | | | | /Auxiliary | | | | | | Carry Flag | | | +------+------+-------------+-------------------------+-------------------------+ | 5 | | | | | +------+------+-------------+-------------------------+-------------------------+ | 6 | Z | (Zero | 若计算结 | 若计算 | | | F | Fl | 果不为0,该位被置为0; | 结果为0,该位被置为1; | | | | ag),零标志 | | | +------+------+-------------+-------------------------+-------------------------+ | 7 | S | 符 | | | | | F | 号标志/Sign | | | | | | Flag | | | +------+------+-------------+-------------------------+-------------------------+ | 8 | T | 跟踪 | | | | | F | 标志/Trace | | | | | | Flag | | | +------+------+-------------+-------------------------+-------------------------+ | 9 | I | 中断标志 | | | | | F | /Interrupt | | | | | | Flag | | | +------+------+-------------+-------------------------+-------------------------+ | 1 | D | 方向标志 | **cld**\ 正向传送 | **std**\ 反向传送 | | 0 | F | /Direction | | | | | | Flag | | | +------+------+-------------+-------------------------+-------------------------+ | 1 | O | 溢出标 | 假定你进行 | 假定你 | | 1 | F | 志/Overflow | 的是有符号数运算,如果 | 进行的是有符号数运算, | | | | Flag | 结果没有超出了目标操作 | 如果结果超出了目标操作 | | | | | 数所能容纳的范围,OF=0 | 数所能容纳的范围,OF=1 | +------+------+-------------+-------------------------+-------------------------+ | 1 | 留 | | | | | 2 | 空 | | | | | 1 | | | | | | 5 | | | | | +------+------+-------------+-------------------------+-------------------------+ 寄存器的作用 ~~~~~~~~~~~~ **CS:IP**\ :CPU将CS:IP指向的内容作为指令 **BX、SI、DI、BP**\ :仅且仅能使用这四位寄存器用来提供偏移地址 **BP** 作为偏移地址时默认的段寄存器是SS **BX、SI、DI**\ 作为偏移地址时的默认段寄存器是DS