本文共 1171 字,大约阅读时间需要 3 分钟。
**标志寄存器**状态标志: 用于记录程序运行结果的状态信息 CF ZF SF PF OF AF控制标志: 用于控制处理器执行指令 DF IF TF状态标志
CF进位标志:当运算结果的最高有效位有进位(加法)或借位(减法)的时候,进位标志置1,
ZF 零标志:看最低字节即后8位的数值是否全部为0. SF 符号标志: 一般是看有符号的运算,看最低字节即后8位的最高位D7 有符号:-128~127 PF奇偶标志:看运算结果最低字节中‘1’的个数为0或偶数时,则PF=1,否则PF=0 AF辅助进位标志:若运算时D3(低半字节)有进位或借位时,AF=1,否则AF=0 OF溢出标志:若运算结果有溢出,则OF=1,否则OF=0溢出:如果运算结果超出了范围,就产生了溢出,有溢出,说明有符号的运算结果不正确说明:我们通常认为溢出(上溢)就是因为进位时当前存储格式(1B、2B、4B等)的位数(8bit、16bit、32bit)不够而引起的。比如8为寄存器:11111111B+1B=100000000B超过了八位的1则被认为是溢出寄存器(放不下),当然也是进位进上去的1溢出与进位 区别
溢出标志(OF):表示有符号数运算结果是否超出范围,运算结果已经不正确。进位标志(CF):表示无符号数运算结果是否超出范围,运算结果仍然正确。
OF范围:-128~127
CF范围:0~255 控制标志DF方向标志:用于串操作指令中,控制地址的变化方向:
设置DF为0,存储器地址自动增加 设置DF为1,存储器地址自动减少示例: CLD指令用于复位方向标志即复位操作,执行后DF=0; STD指令用于置位方向标志即置位操作,执行后DF=1.
IF中断允许标志:用于控制外部可屏蔽中断是否可以被处理器响应:
设置IF为0,则禁止中断; 设置IF为1,则允许中断。示例: CLD指令用于复位中断标志,执行后IF=0; STD指令用于置位中断标志,执行后IF=1.
TF陷阱标志:用于控制处理器进入单步操作方式:
设置TF为0,处理器正常工作设置TF为1,处理器单步执行指令
单步执行命令:处理器在每条指令执行结束时,便产生一个编号为1的内部中断。
这种内部中断称为单步中断,所以TF也成为的单步标志:利用单步中断可对程序进行逐条指令的调试。 (这一个操作主要是用于程序的调试) 学到这里我有点疑惑为啥这个和程序状态字PSW不太一样,有啥区别,有大佬知道的话能说一说吗明白为啥了,这里的我所学的时汇编 CPU 8086的标志寄存器,而我所想的psw程序状态字是C51单片机的CPU的标志寄存器。
另附上看到一位大佬的博文关于PSW的写的很棒,膜拜转载地址:http://rlakk.baihongyu.com/