-------------------------------------------------------------------------------------------------------------------------------------------------------------------

;INC(Increment): 加一

;DEC(Decrement): 减一

;NEG(Negate):  求补(求反)

;ADD(Add):  加

;ADC(Add Carry): 带进位加

;SUB(Subtract): 减

;SBB(Subtract With Borrow): 带进位减

;CMP(Compare): 比较

;INC、DEC、NEG 的指令格式

;INC r/m

;ADD、ADC、SUB、SBB、CMP 的指令格式:

;ADD r/m, r/m/i

;它们的结果影响 OF、SF、ZF、AF、PF、CF

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

INC、DEC、NEG

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
    mov eax, 6
    inc eax
    PrintDec eax ;7
    dec eax
    PrintDec eax ;6
    neg eax      ;NEG 就是加个负号
    PrintDec eax ;-6
    neg eax
    PrintDec eax ;6
    ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

ADD、ADC

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
    mov eax, 5
    add eax, 1
    PrintDec eax ;6
   
    stc          ;CF=1
    mov eax, 5
    adc eax, 1   ;ADC 比 ADD 还要多加上 CF
    PrintDec eax ;7
   
    clc          ;CF=0
    mov eax, 5
    adc eax, 1
    PrintDec eax ;6
    ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

SUB、SBB

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
    mov eax, 5
    sub eax, 1
    PrintDec eax ;4
   
    stc
    mov eax, 5
    sbb eax, 1   ;SBB 比 SUB 还要多减去 CF
    PrintDec eax ;3
   
    clc
    mov eax, 5
    sbb eax, 1
    PrintDec eax ;4
    ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

CMP

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.code
main proc
    mov eax, 3
    cmp eax, 3
    lahf
    PrintHex ah ;46 - 01000110b(ZF=1 说明两个数相等)
   
    mov eax, 3
    cmp eax, 2
    lahf
    PrintHex ah ;02 - 00000010b(SF=0、ZF=0 说明前者 > 后者)
   
    mov eax, 3
    cmp eax, 4
    lahf
    PrintHex ah ;76 - 10010111b(SF=1、ZF=0 说明前者 < 后者)   
    ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

辨析 NEG 与 NOT

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.data?
    val sword ?
.code
main proc
    ;求补运算: 取反+1
    mov val, 44
    PrintDec val  ;44
    PrintHex val  ;002C - 00000000 00101100b
   
    not val
    inc val
    PrintDec val  ;-44
    PrintHex val  ;FFD4 - 11111111 11010100b
   
    not val
    inc val
    PrintDec val  ;44
    PrintHex val  ;002C - 00000000 00101100b
   
    ;NEG 就相当于: 取反+1
    mov val, 44
    neg val
    PrintDec val  ;-44
    PrintHex val  ;FFD4 - 11111111 11010100b
   
    neg val
    PrintDec val  ;44
    PrintHex val  ;002C - 00000000 00101100b
    ret
main endp
end main

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

Win32ASM学习[15]:加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP相关推荐

  1. 学 Win32 汇编[26] - 加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP

    为什么80%的码农都做不了架构师?>>>    ;INC(Increment): 加一 ;DEC(Decrement): 减一 ;NEG(Negate): 求补(求反) ;ADD(A ...

  2. Win32ASM学习[12]:位测试指令位扫描指令

    ---------------------------------------------------------------------------------------------------- ...

  3. Win32ASM学习[14]:符号扩展指令: CBW,CWDE,CDQ,CWD

    ---------------------------------------------------------------------------------------------------- ...

  4. String类型的日期加减一天

    String类型的日期加减一天 摘要: String 转Date ,Date转String ,Calendar日历完成日期加减 日期格式化 特别注意HH必须是大写才是24小时制,否则会转化成12小时制 ...

  5. 深度学习(七)——图像验证码破解(数字加减验证码)

    这段时间实习工作和找工作,导致时间很忙.现在有时间,还是希望把自己最近的工作感触和所完成的项目经验分享给大家.也算是对自己的一个总结.学习漫长的生涯里,作为我这个算法工程师这个职位非常重要,也希望大家 ...

  6. c语言进位加汇编指令,共同学习hcs08的汇编指令,快速掌握

    简单的介绍,hcs08的指令集,能够看懂c代码的汇编编译,方便硬件调试. 常用的伪指令: 1. 伪地址 ORG $C000 ;定义中断时用到 2. 伪字节 FCB $01,,$02,$03 : 3.伪 ...

  7. Go 学习笔记(48)— Go 标准库之 time (获取时/分/秒的单位值、标准时间和Unix时间转换、字符串时间和Time类型转换、时区转换、时间的加减/休眠)

    1. 概要说明 import "time" time 包提供了时间的显示和测量用的函数.日历的计算采用的是公历. Go 提供以下几种时间类型: 时间点 Time 时间段 Durat ...

  8. JavaScript学习(十六)—实现购物车加减数量,计算总金额

    JavaScript学习(十六)-实现购物车加减数量,计算总金额 代码如下: <table border="2" cellspacing="0" soli ...

  9. 连续型切片与离散加减的思路学习

    连续型切片与离散加减的思路学习 @(微积分) 思考一道1999年的习题. 设f(x)是区间[0,+∞)[0,+\infty)上单调递减且非负的连续函数.an=∑nk=1f(k)−∫n1f(x)dx,n ...

最新文章

  1. java刚工作搭建环境_Java开发环境的搭建
  2. pytorch 图像与tensor转换
  3. android 把assets 里面的图片文件输出到SD卡
  4. NoClassDefFoundError: org/apache/flink/metrics/MetricGroup
  5. mongodb查询内嵌文档
  6. mAP与IOU的简单介绍
  7. PathCopyCopy一键复制文件路径
  8. mysql 集群操作系统_mysql集群部署
  9. 九校联考-长沙市一中NOIP模拟总结
  10. form表单提交大量input,php接收不全
  11. 设计模式学习(三):创建型模式【转】
  12. 如何有效投诉中国电信、中国联通、中国移动?
  13. javascript基础常识问答(一)
  14. 工作9年的程序员几点感受
  15. winhttp 与wininet的区别(一)
  16. YUV420 Planar 和YUV420 Semi-Planar详解
  17. 小程序怎么做线下推广
  18. 【网络组网】:H3C的vSYS参考
  19. 中国医科大学《护理研究(本科)》在线作业
  20. securecrt启动mini2440卡在Please press Enter to activate this console问题已解决

热门文章

  1. linux统计字符串频数,Linux 统计某个字符串出现的次数
  2. 计算机盘符无法重命名,win8磁盘分区无法重命名怎么办
  3. 计算机考研379分,考研379分报考南开大学被刷,是调剂还是二战?师姐建议非常肯定...
  4. 外包以小时计算金额的费用_2020年初级会计各大税种的计算公式,请收藏!
  5. 鼠标拖动改变DIV等网页元素的大小的最佳实践
  6. 【转】前端开发值得一看的文章
  7. SASS简介及使用方法
  8. mysql binlog空间维护
  9. leetcode 970. 强整数(Powerful Integers)
  10. 折半查找算法及分析(手工过程)