博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单片机基础之汇编语言入门学习(五) 标志寄存器
阅读量:788 次
发布时间:2019-03-24

本文共 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/

你可能感兴趣的文章