• 第十一章.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:将栈中的值弹出到标志寄存器

  • 相关阅读:
    SpringBoot学习:整合shiro(身份认证和权限认证),使用EhCache缓存
    帝国备份王出错
    spring boot整合mybatis+mybatis-plus
    Druid连接池简介和配置
    thinkphp生成的验证码不显示问题解决
    分布式文件系统-FastDFS
    Spring Security OAuth2 Demo
    spring cloud-给Eureka Server加上安全的用户认证
    spring cloud 报错Error creating bean with name 'hystrixCommandAspect' ,解决方案
    分布式唯一ID极简教程
  • 原文地址:https://www.cnblogs.com/nsfoxer/p/14353806.html
Copyright © 2020-2023  润新知