zoukankan      html  css  js  c++  java
  • 9.汇编语言--算数运算,标记寄存器

    ;add  加法
    ;add 操作数1 操作数2  ---->结果放在操作数1
    
    ;sub 减法指令
    ;sub 操作数1 操作数2 ----->操作1-操作2  结果放在操作数1里面
    
    ;inc  自增    dec 自减
    ;inc 操作数
    
    ;neg 非操作,按位取反

    减法运算

    .586    
    .MODEL flat,stdcall
    option casemap:none
    
    ; inc 是一个头文件
    include  windows.inc
    include user32.inc
    include kernel32.inc
    ;msvcrt.inc 引用c中的输入输出功能
    include  msvcrt.inc
    
    ;库文件
    includelib user32.lib
    includelib kernel32.lib
    includelib msvcrt.lib
    
    .data
    format dd "%d",0
    ;相当于 char *text "my name is wangtengxian!"
    text db "my name is wangtengxiang!",0
    
    
    .code
    main proc
        mov eax,6
        mov ebx,1
        sub eax,ebx    
        call ExitProcess
        add esp,4
    main ENDP
    END    main
    
    

    关于标记寄存器

    参考:https://blog.csdn.net/jn1158359135/article/details/7761011

    1、状态标志(Status Flags)
    EFLAGS寄存器的状态标志(0246、7以及11位)指示算术指令(如ADD, SUB, MUL以及DIV指令)的结果,这些状态标志的作用如下:
    
    CF(bit 0) [Carry flag]   进制标志位,若算术操作产生的结果在最高有效位(most-significant bit)发生进位或借位则将其置1,反之清零。这个标志指示无符号整型运算的溢出状态,这个标志同样在多倍精度运算(multiple-precision arithmetic)中使用。
    PF(bit 2) [Parity flag]   如果结果的最低有效字节(least-significant byte)包含偶数个1位则该位置1,否则清零。
    AF(bit 4) [Adjust flag]   如果算术操作在结果的第3位发生进位或借位则将该标志置1,否则清零。这个标志在BCD(binary-code decimal)算术运算中被使用。
    ZF(bit 6) [Zero flag]   若结果为0则将其置1,反之清零。
    SF(bit 7) [Sign flag]   该标志被设置为有符号整型的最高有效位。(0指示结果为正,反之则为负)
    OF(bit 11) [Overflow flag]   如果整型结果是较大的正数或较小的负数,并且无法匹配目的操作数时将该位置1,反之清零。这个标志为带符号整型运算指示溢出状态。
    

    例子:结果不为0   ZF标志位置1

  • 相关阅读:
    洛谷1113 杂务
    MySQL中的各种引擎
    剑指offer第3题:从尾到头打印链表
    向一个GitHub repository添加协作者
    String、StringBuffer与StringBuilder之间区别
    java与C语言在字符串结束符上的区别
    git 查看远程分支、本地分支、创建分支、把分支推到远程repository、删除本地分支
    Git问题Everything up-to-date解决
    Mybatis 数据库物理分页插件 PageHelper
    时间序列分析发展史
  • 原文地址:https://www.cnblogs.com/trevain/p/14521529.html
Copyright © 2011-2022 走看看