1 认识标志寄存器

标志寄存器
    CPU内部有一种寄存器,具有三种作用:
    1)存储相关指令的某些执行结果;
    2)用来为CPU执行相关指令提供行为依据;
    3) 用来控制CPU的相关工作方式;
    这种寄存器在8086中称为标志寄存器;标志寄存器简称flag;
    8086标志寄存器有16位,其中存储的信息称为程序状态字(PSW);
    flag是按位起作用;
    flag的1、3、5、12、13、14、15位在8086CPU中没有使用;

进入emu8086;
按emulate按钮,弹出emulator窗口;
按flags按钮,弹出flags窗口,即标志寄存器;各位初始值如图;
按analyse按钮,弹出 lexical flag analyser窗口;表示出flags当前各位的值所表示的意义;
    例如ZF是零标志位;

2 零标志,奇偶标志

ZF标志
    零标志位;flag第6位;
    记录相关指令执行后,结果是否为0;
    结果为0,zf=1;否则,zf=0;
 
mov ax,1
sub  ax,1
执行后结果为0;zf=1;

mov ax,1
and ax, 0
执行后,结果为0,zf=1;

有的指令是影响标志寄存器的,大都是运算指令;
有的指令不影响标志寄存器,大都是传送指令;

PF标志
    flag第二位;奇偶标志位;
    记录指令执行后,结果的所有bit位中1的个数是否为偶数;
    1的个数为偶数,pf=1;否则=0;

mov al, 1
add al, 10
执行后,结果为00001011B,3个1,则pf=0;

mov al, 1
or al, 2
执行后,结果为00000011B,2个1,pf=1;

3 符号标志

SF标志
    flag的第7位;符号标志;
    记录指令执行后,结果是否为负;如果为负,sf=1;否则=0;
    计算机中通常用补码表示有符号数据;
    计算机中的一个数据可以看作有符号数,也可以看作无符号数;对于同一个二进制数据,计算机可以将它当作无符号数据来运算,也可以当作有符号数据来运算;
    CPU在执行add等指令的时候,就已经包含了两种含义,也将得到用同一种信息来记录的两种结果;
    SF标志,就是CPU对有符号数运算结果的一种记录,它记录数据的正负;

mov al, 10000001B
add al, 1
    执行后,结果为 10000010B,sf=1,表示:如果指令进行的是有符号数运算,那么结果为负;

mov al, 10000001B
add al, 01111111B
    执行后,结果为0,sf=0;表示:如果指令进行的是有符号数运算,那么结果为非负;

某些指令影响flag的多个标记位;
    指令sub al, al执行后,ZF、PF、SF受影响,分别为:1,1,0;

4 进位标志

CF标志
    flag第0位;进位标志;
    一般情况下,在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的借位值;
    两个8位数据:98H+98H;将产生进位;进位在8位数中无法保存;CPU把进位记录在CF;

mov al, 98H
add al, al  ;  执行后,al内容为30H,CF=1;
add al, al  ; 执行后,al内容为60H, CF=0;

两个数据做减法,可能向更高位借位;
    97H-98H,将产生借位,借位后,相当于计算197H-98H;CF也可以记录这个借位;

mov al, 97H
sub al, 98H  ;  执行后,al内容为FFH,CF=1,CF记录了向更高位的借位;
sub al, al ;     执行后,al内容为0,CF=0;

5 溢出标志

OF标志
    在进行有符号数运算时,如结果超过了机器所能表示的范围称为溢出;
    8位有符号数,机器所能表示的范围是-128 - 127;16位有符号数,机器所能表示的范围是-32768-32767;
    
mov al, 98
add al, 99
    执行后将产生溢出;98+99=197;

mov al, 0F0H;F0H,有符号数-16的补码;
add al, 088H ;  88H,有符号数-120的补码;
    执行后将产生溢出;(-16) + (-120) = -136;

如果在进行有符号数运算时发生溢出,那么运算的结果将不正确;

flag的第11位是OF,溢出标志;发生溢出,OF=1;否则OF=0;

CF和OF的区别:
    CF是对无符号数运算有意义,OF是对有符号数运算有意义;

8086汇编复习3 - 标志寄存器 - 使用emu8086相关推荐

  1. 8086汇编复习4 - int指令 - 使用emu8086

    int指令     中断信息可以来自CPU的内部和外部:int指令引发的中断是内中断: int n,n为中断类型码:     CPU执行int n指令,相当于引发一个n号中断的中断过程:执行过程如下: ...

  2. 8086汇编复习1 - 并使用emu8086模拟器查看效果

    1 基本寄存器 不同的CPU,寄存器的个数.结构是不相同的. 8086CPU有14个寄存器:AX, BX, CX, DX, SI, DI, SP, BP, IP, CS, SS, DS, ES, PS ...

  3. 8086汇编学习之DS寄存器、SS/SP寄存器

    相关博客:8086汇编基础知识.通用寄存器.CS/IP寄存器与Debug的使用 一.DS寄存器 一个8086CPU寄存器均是16位的,而数据类型有以下两种: 1Byte = 8bit (字节型数据) ...

  4. 8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等

    同类学习笔记总结: (一).8086汇编学习之基础知识.通用寄存器.CS/IP寄存器与Debug的使用 (二).8086汇编学习之DS寄存器.SS/SP寄存器 一.汇编程序的基本格式: 1.基本格式与 ...

  5. 8086汇编寄存器及指令汇总

    1   寄存器的分类 通用寄存器: ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl): sp,bp,si,di 指令寄存器: ip 标志寄存器: FR 段寄存器: cs,ds ...

  6. 汇编 标志寄存器 和寻址方式

    原文链接: 汇编 标志寄存器 和寻址方式 上一篇: pyecharts 简单使用 下一篇: 汇编 转移指令 标志位简介: 标志寄存器,又称程序状态寄存器(它的内容是Program Status Wor ...

  7. 【8086汇编基础】05--常用函数库文件--emu8086.inc

    8086汇编语言初学者教程(第5部分) 常用函数库 - emu8086.inc 通过引用一些常用函数,可以使你编程更加方便.在你的程序中使用其他文件中的函数的方法是INCLUDE后面接上你要引用的文件 ...

  8. 标志寄存器PSW和汇编条件转移指令解释

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

  9. X86汇编——标志寄存器

    FLAGS标志寄存器由一组状态标志.一个控制标志以.一组系统标志以及一部分保留未使用的位所组成.其状态标志用于表示逻辑或算术运算的结果,系统标志提供给操作系统使用. 在16位汇编中,我们可以使用16位 ...

最新文章

  1. dataframe groupby_PySpark SQL——SQL和pd.DataFrame的结合体
  2. 深入理解 Spring 之源码剖析IOC
  3. 关于Jmeter+Ant+Jenkins作为接口、性能自动化框架的误区
  4. 小程序使用wxs 解决wxml保留2位小数问题
  5. hadoop 传感器数据_晋城大数据培训
  6. 简析三星新专利,语音识别技术的新方法
  7. DataFrame的行列操作
  8. (转)使用Flexible实现手淘H5页面的终端适配
  9. VC2012换字体问题
  10. 2018华为网络技术大赛
  11. 杭州登山地图是谁开发的_浙江新添7个省级运动休闲小镇!杭州这个地方榜上有名!...
  12. 根据经纬度查询附近地点
  13. Arch 安装 deb
  14. c语言最大乘积问题,利用C语言来求最大连续子序列乘积的方法
  15. SoX使用手册(中文版)
  16. 总结JS中Math的方法及使用
  17. 仿网易云项目前端服务器部署+Nodejs部署
  18. iOS 获取当前的UIViewController
  19. 基于深度卷积神经网络(D-CNN)的图像去噪方法
  20. 世界各国城镇人口占比数据(1960-2018年)

热门文章

  1. 线性系统理论知识点总结_线性系统理论(七)推广与总结
  2. 计算机组成原理—— 指令系统
  3. [YTU]_2865( 结构体--日期计算)
  4. 5.6 matlab曲线拟合案例(股票预测问题、算法的参数优化问题)
  5. normest--2-范数的条件数估计
  6. 合并a[0..mid]和a[mid+1,n-1],其中这两个数组分别有序
  7. ML_Random_Forests
  8. Bear and Finding Criminals (模拟)
  9. 服务器可以pyqt显示吗,用pyqt+socket实现远程操作服务器的一个例子,PyQtsocket,方法,示例...
  10. pve远程连接 spcie_proxmox折腾 篇一:解决j3455直通iommu分组问题,PVE内核编译教程...