zoukankan      html  css  js  c++  java
  • 第十一章.md

    第十一章 标志寄存器

    引言

    8086CPU标志寄存器有16bits,其中的存储信息叫程序状态字(psw)

    标志寄存器按位表示意义

    1567651426982其中空的位无意义,保留


    ZF标志位

    zero flag 结果 == 0? zf=1 : zf=0

    1567651723845

    使用指令应注意是否影响标志寄存器


    PF标志位

    parity flag结果二进制1的个数为偶数? pf=1 : pf=0;


    SF标志位

    symbol flag结果为负数? sf=1: sf=0;

    SF标志位总是将运算看做有符号数进行操作,当计算数值需要看做有符号时,才看sf标志位


    CF标志位(无符号溢出)

    1567652717447

    1567653022287

    1567653041274

    1567653168171


    OF标志位(有符号溢出)

    add 98, 99 == -59

    1567653695400

    1567653747834


    adc指令

    带进位加法指令 adc 对象1, 对象2

    对象1 = 对象1 + 对象2 + CF

    adc ax, bx 即`ax = ax + bx + CF

    示例

    mov ax, 2
    mov bx, 1
    sub bx, ax			; 进行了借位, CF = 1
    adc ax, 1			; 结果 ax = ax + 1 + CF , ax = 4
    

    add ax, bx 等同于

    add al, bl		;CF保存是否进位
    adc ah, bh		;adc将进位状态加上
    

    1567655178350

    inc si
    inc si		;不能直接 add si, 2 因为会影响cf的值 
    

    sbb指令

    带借位减法指令,使用CF位上的值 sbb 对象1, 对象2

    对象1 = 对象1 - 对象2 - cf

    adc指令


    cmp指令

    cmp a, b

    a -b

    该指令仅仅影响标志位值,不会保存结果

    1567745907405

    有符号数

    1567746163470

    1567746206215

    1. SF = 1, OF = 0

      此时,没有溢出,sf标志位与实际运算结果一致

    2. SF = 1, OF = 1

      此时,溢出,sf标志位与实际结果相反

    1567746629666

    1567746651267

    1567746703382

    1567747943034

    ZF=1时,je就会跳转


    DF标志和串传送指令

    1567989985698

    *movsb*
    功能: 以字节为单位进行传送
    es*16 + di = ds*16 + si
    1.如果DF==0, si++,di++
    2.如果DF==1, si--, di--
    
    *movsbw*
    功能: 以字为单位进行传送(同上)
    
    *rep*
    功能:根据cx的值,重复执行后面的串传送指令
    格式:rep movsw  (可以实现cx个字的传送)
    

    cld:将df设置为0

    std:将df设置为1


    pushf, popf

    pushf:将标志寄存器的值送入栈

    popf:将栈中的值弹出到标志寄存器

  • 相关阅读:
    WPF 插件开发(.NET Framework 3.5 System.Addin)
    如何:创建返回 UI 的外接程序
    WPF分析工具
    可视化的工具
    .NET Core入门程序
    我是如何同时拿到阿里和腾讯offer的 【转载】
    我的求职之路:9个offer,12家公司,35场面试,最终谷歌【转载】
    Mysql 配置文件和目录的合理分配
    修改socket文件, MySQL启动报错
    confluence + 禅道安装教程
  • 原文地址:https://www.cnblogs.com/nsfoxer/p/14353806.html
Copyright © 2011-2022 走看看