汇编语言bp寄存器和es寄存器有何用?

2024-12-21 13:25:30
推荐回答(3个)
回答1:

实际上,BP可以作SP使用,ES可以作DS使用。除了BP可以作为间接寻址寄存器而SP不能以外,其余的功能基本相同。Intel做这样的设计也是为了避免因程序过大而寄存器不够使用或者程序逻辑混乱的情况。

因为BP默认引用的段寄存器为SS,故当程序中设有多个栈,在不与SP冲突的情况下可以选用BP寄存器。一般在(相对)基址加变址寻址方式中,以SS作为默认段地址,否则需要显式指定段寄存器,这也可以说明,BP作存储器指针的运用也比较多;

ES和DS的功能相同,同样的道理,程序中设有多个数据段时,可以选用ES寄存器。一般在串处理时用得比较多。比如将一段内存空间存储的数据复制到另一段空间,可以分别设置DS:SI指向源存储数据的地址,ES:DI指向目的存储数据的地址。

回答2:

bp是基地址寄存器,一般在访问数组或是有固定偏移量的记录时用于存放基地址;es功能跟DS差不多都是数据段的基地址

回答3:


我不粘贴了
貌似很多人对粘贴很反感
你自己点击去看吧

-------------------------------------
我粘了!楼上粘贴那么多谁管了~~~
AH&AL=AX(accumulator):累加寄存器
BH&BL=BX(base):基址寄存器
CH&CL=CX(count):计数寄存器
DH&DL=DX(data):数据寄存器
SP(Stack Pointer):堆栈指针寄存器
BP(Base Pointer):基址指针寄存器
SI(Source Index):源变址寄存器
DI(Destination Index):目的变址寄存器
IP(Instruction Pointer):指令指针寄存器
CS(Code Segment)代码段寄存器
DS(Data Segment):数据段寄存器
SS(Stack Segment):堆栈段寄存器
ES(Extra Segment):附加段寄存器
OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出,溢出时为1.
SF sign Flag 符号标志 记录运算结果的符号,结果负时为1.
ZF zero flag 零标志 运算结果等于0时为1,否则为0.
CF carry flag 进位标志 最高有效位产生进位时为1,否则为0.
AF auxiliary carry flag 辅助进位标志 运算时,第3位向第4位产生进位时为1,否则为0.
PF parity flag 奇偶标志 运算结果操作数位为1的个数为偶数个时为1,否则为0.
DF direcion flag 方向标志 用于串处理.DF=1时,每次操作后使SI和DI减小.DF=0时则增大.
IF interrupt flag 中断标志 IF=1时,允许CPU响应可屏蔽中断,否则关闭中断.
TF trap flag 陷阱标志 用于调试单步操作.