寄存器概览
常用寄存器
AX accumulator 累加寄存器
BX base 基址寄存器
CX count 计数寄存器
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 附加段寄存器
Flag 标志寄存器
Flag寄存器中存储的信息通常被称为程序的状态字 Program Status Word
OF overflow flag 溢出标志 一些操作会代之
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 direction flag 方向标志 用于串处理 DF=1时,每次操作后使SI和DI减小.DF=0时则增大
IF interrupt flag 中断标志 IF=1时,允许CPU响应可屏蔽中断,否则关闭中断
TF trap flag 陷阱标志 用于调试单步操作
EA – Effective Address 有效地址 偏移地址
SA – Segment address
寻址方式
一图解决问题
其中,内存寻址只需要提供偏移地址,默认的段地址放在ds寄存器
基址寻址时偏移地址放在bx中
变址寻址时偏移地址放在si和di中
如果想显式地使用es作为段地址,则需要使用段超越前缀
mov ax,[es:si]
如果是对堆栈寻址,则有不同的寄存器用于存放段地址和偏移地址:
段地址使用SS存放
偏移地址使用SP存放,其中BP,也可以用于访问栈顶以下的数据(有些情况下是必要的)