标志寄存器PSW

标志寄存器PSW(程序状态字寄存器PSW)
   标志寄存器PSW是一个16为的寄存器。它反映了CPU运算的状态特征并且存放某些控制标志。8086使用了16位中的9位,包括6个状态标志位和3个控制标志位。

CF(进位标志位):当执行一个加法(减法)运算时,最高位产生进位(或借位)时,CF为1,否则为0。
ZF零标志位:若当前的运算结果为零,则ZF为1,否则为0。
SF符号标志位:该标志位与运算结果的最高位相同。即运算结果为负,则SF为1,否则为0。
OF溢出标志位:若运算结果超出机器能够表示的范围称为溢出,此时OF为1,否则为0。判断是否溢出的方法是:进行二进制运算时,最高位的进位值与次高位的进位值进行异或运算,若运算结果为1则表示溢出OF=1,否则OF=0

PF奇偶标志:当运算结果的最低16位中含1的个数为偶数则PF=1否则PF=0
AF辅助进位标志:一个加法(减法)运算结果的低4位向高4位有进位(或借位)时则AF=1否则AF=0  

另外还有三个控制标志位用来控制CPU的操作,可以由程序进行置位和复位。
TF跟踪标志:该标志位为方面程序调试而设置。若TF=1,8086/8088CPU处于单步工作方式,即在每条指令执行结束后,产生中断。
IF中断标志位:该标志位用来控制CPU是否响应可屏蔽中断。若IF=1则允许中断,否则禁止中断。
DF方向标志:该标志位用来控制串处理指令的处理方向。若DF=1则串处理过程中地址自动递减,否则自动递增。

OD里能查看到 除IF标志外的 8个标志位

汇编条件转移指令解释

可以通过以下程序理解上述有符号条件转移指令

void main(){
int a=3,b=5;
if (a!=b) //je
if (a==b) //jnz
if (a<=b) //jg
if (a<b) //jge
if (a>=b) //jl
if (a>b)//jle
{
printf("do if");
}
}
return 0;

最新文章

  1. CodeForces 676D代码 哪里有问题呢?
  2. frame里的链接跳转
  3. C#调用Windows API函数截图
  4. h.264并行解码算法2D-Wave实现(基于多核非共享内存系统)
  5. STL的基本使用之关联容器:set和multiSet的基本使用
  6. table细线
  7. iOS工程上传AppStore时遇到的问题“ERROR ITMS-90046”解析
  8. 整数运算:CPU内部只有加法运算
  9. TreeSet集合排序方式一:自然排序Comparable
  10. Java思维导图之Class对象
  11. 原生 JS 实现一个瀑布流插件
  12. Javascript高级编程学习笔记(87)—— Canvas(4)绘制路径
  13. angularjs等号运算
  14. c#利用ApplicationContext类 同时启动双窗体的实现
  15. Oracle数据库SQLPLUS 连接显示 ??? 的解决
  16. zTree入门实例(一眼就看会)
  17. Nginx的配置使用
  18. Sql server 备份还原后出现“受限制用户”问题
  19. PD003-NET通用后台系统
  20. Android 开发自己的网络收音机4——读取XML文件的电台数据

热门文章

  1. python nmap模块使用进行主机探测(ICMP)
  2. Maximum Profit
  3. 基于Qt搭建ROS开发环境
  4. 【luogu P3381 最小费用最大流】 模板
  5. centos修改hostname
  6. 旧文备份:硬盘MBR引导记录损坏的一种修复方法
  7. deep learning学习记录二
  8. Javascript和android原生互调
  9. ios应用数据存储方式(归档) - 转
  10. c#总结最近的几项重要代码