寄存器是cpu 内部的重要的数据存储资源, 是汇编程序员能直接使用的硬件资源之一。
寄存器的特点:
1. 寄存器是汇编程序员能直接使用的硬件资源之一。
2. 寄存器的存取速度比内存快, 编程时尽可能充分利用寄存器地存储功能
3。寄存器一般用来保存程序的中间结果
4。寄存器地个数有限
5。 寄存器有“能分能合”的特性
在16位cpu系统中
1. 通用寄存器包括:AX BX CX DX
AX、AL(累加器)的作用: 用累加器运算课加快处理速度, 用于乘、除、输入输出等操作
BX (基地址寄存器): 作为存储器指针
CX、CL(计数寄存器): 在循环和字符串操作中, CX来控制循环次数, CL用来指明移动的位数
寄存器DX(数据寄存器):在进行乘、除运算时,它可作为默认的操作数参与运算, 也可用于存放 I/O 的端口地址
段寄存器:
CS (code segment register) --- 代码段寄存器 : 存放程序指令序列的段
DS (data segment register)--- 数据段寄存器 : 存放程序指令执行时所需要的数据的段
SS (stack segment register)--- 堆栈断寄存器 : 实施堆栈操作的段
ES( extra segment register) --- 附加段寄存器 : 存放程序执行时所需要的数据
此外,还有变址和指针寄存器, 变址和指针寄存器的主要作用是用于 存放存储单元的段内的偏移量, 用它们可表达多种访问内存的寻址方式。 变址和指针寄存器不可分割成8位寄存器, 作为通用寄存器他们可以存放算术逻辑运算的操作数和运算结果。
1. 变址寄存器(Index Register ):SI DI
2. 指针寄存器(Pinter Register): BP SP
1. BP为基址针(Base Pointer)寄存器: 用它可以直接存取堆栈中的数据
2. SP为堆栈指针(Stack Pointer)寄存器 :用它可访问栈顶的数据
16位标志寄存器——共用了9个标志位,它们主要用来反映CPU的状态和运算结果的特征。标志位的分布如下表所示。
|
|
1、进位标志CF(Carry Flag)主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。
2、奇偶标志PF(Parity Flag)用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。
3、零标志ZF(Zero Flag)用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。
4、符号标志SF(Sign Flag)用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。
5、溢出标志OF(Overflow Flag)用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
6、追踪标志TF(Trap Flag)被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。
7、方向标志DF(Direction Flag)用来决定在串操作指令执行时有关指针寄存器发生调整的方向。Cld指令:将标志寄存器的DF位置0,Std指令:将标志寄存器的DF位置1
8、中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。
(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;
(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
Sti用于设置IF=1;Cli用于设置IF=0。