Win32ASM学习[15]:加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
;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相关推荐
- 学 Win32 汇编[26] - 加减指令: INC、DEC、NEG、ADD、ADC、SUB、SBB、CMP
为什么80%的码农都做不了架构师?>>> ;INC(Increment): 加一 ;DEC(Decrement): 减一 ;NEG(Negate): 求补(求反) ;ADD(A ...
- Win32ASM学习[12]:位测试指令位扫描指令
---------------------------------------------------------------------------------------------------- ...
- Win32ASM学习[14]:符号扩展指令: CBW,CWDE,CDQ,CWD
---------------------------------------------------------------------------------------------------- ...
- String类型的日期加减一天
String类型的日期加减一天 摘要: String 转Date ,Date转String ,Calendar日历完成日期加减 日期格式化 特别注意HH必须是大写才是24小时制,否则会转化成12小时制 ...
- 深度学习(七)——图像验证码破解(数字加减验证码)
这段时间实习工作和找工作,导致时间很忙.现在有时间,还是希望把自己最近的工作感触和所完成的项目经验分享给大家.也算是对自己的一个总结.学习漫长的生涯里,作为我这个算法工程师这个职位非常重要,也希望大家 ...
- c语言进位加汇编指令,共同学习hcs08的汇编指令,快速掌握
简单的介绍,hcs08的指令集,能够看懂c代码的汇编编译,方便硬件调试. 常用的伪指令: 1. 伪地址 ORG $C000 ;定义中断时用到 2. 伪字节 FCB $01,,$02,$03 : 3.伪 ...
- Go 学习笔记(48)— Go 标准库之 time (获取时/分/秒的单位值、标准时间和Unix时间转换、字符串时间和Time类型转换、时区转换、时间的加减/休眠)
1. 概要说明 import "time" time 包提供了时间的显示和测量用的函数.日历的计算采用的是公历. Go 提供以下几种时间类型: 时间点 Time 时间段 Durat ...
- JavaScript学习(十六)—实现购物车加减数量,计算总金额
JavaScript学习(十六)-实现购物车加减数量,计算总金额 代码如下: <table border="2" cellspacing="0" soli ...
- 连续型切片与离散加减的思路学习
连续型切片与离散加减的思路学习 @(微积分) 思考一道1999年的习题. 设f(x)是区间[0,+∞)[0,+\infty)上单调递减且非负的连续函数.an=∑nk=1f(k)−∫n1f(x)dx,n ...
最新文章
- java刚工作搭建环境_Java开发环境的搭建
- pytorch 图像与tensor转换
- android 把assets 里面的图片文件输出到SD卡
- NoClassDefFoundError: org/apache/flink/metrics/MetricGroup
- mongodb查询内嵌文档
- mAP与IOU的简单介绍
- PathCopyCopy一键复制文件路径
- mysql 集群操作系统_mysql集群部署
- 九校联考-长沙市一中NOIP模拟总结
- form表单提交大量input,php接收不全
- 设计模式学习(三):创建型模式【转】
- 如何有效投诉中国电信、中国联通、中国移动?
- javascript基础常识问答(一)
- 工作9年的程序员几点感受
- winhttp 与wininet的区别(一)
- YUV420 Planar 和YUV420 Semi-Planar详解
- 小程序怎么做线下推广
- 【网络组网】:H3C的vSYS参考
- 中国医科大学《护理研究(本科)》在线作业
- securecrt启动mini2440卡在Please press Enter to activate this console问题已解决
热门文章
- linux统计字符串频数,Linux 统计某个字符串出现的次数
- 计算机盘符无法重命名,win8磁盘分区无法重命名怎么办
- 计算机考研379分,考研379分报考南开大学被刷,是调剂还是二战?师姐建议非常肯定...
- 外包以小时计算金额的费用_2020年初级会计各大税种的计算公式,请收藏!
- 鼠标拖动改变DIV等网页元素的大小的最佳实践
- 【转】前端开发值得一看的文章
- SASS简介及使用方法
- mysql binlog空间维护
- leetcode 970. 强整数(Powerful Integers)
- 折半查找算法及分析(手工过程)