知识点:

 (NOT)按位取反指令
 逻辑取反(!)
 按位取反(~)
 SETZ(SETE) 取ZF位值保存
 SETNZ(SETNE)将ZF位值取反后保存 一、逻辑取反(!)
!111 =0;
!0=1;
SETZ(SETE) //取ZF标志位值 放到寄存器里
SETNZ(SETNE) 二、按位取反NOT指令
VC中提供运算符为(~)
11111111111111111111111111011110 //取反运算后
00000000000000000000000000100001 // asm_NOT.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[])
{
int i,j;
i=0x8877;
j=!i; //0; __asm mov edx,edx
j=~i;//00000000000000001000100001110111
//11111111111111110111011110001000
//FFFF7788 // 11011
// 00100
//00401000 /$ 55 PUSH EBP
//00401001 |. 8BEC MOV EBP,ESP
//00401003 |. 83EC 08 SUB ESP,8
//00401006 |. C745 FC 77880>MOV DWORD PTR SS:[EBP-4],8877
//0040100D |. 33C0 XOR EAX,EAX ; eax=0;
//0040100F |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 ; i>0
//00401013 |. 0F94C0 SETE AL ; AL=ZF
//00401016 |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
//00401019 |. 8BD2 MOV EDX,EDX ; __asm mov edx,edx
//0040101B |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
//0040101E |. F7D1 NOT ECX ; ecx=~i; 按位与
//00401020 |. 894D F8 MOV DWORD PTR SS:[EBP-8],ECX
//00401023 |. 33C0 XOR EAX,EAX
//00401025 |. 8BE5 MOV ESP,EBP
//00401027 |. 5D POP EBP
//00401028 \. C3 RETN return 0;
} 小结:
NOT: 取反运算,0变成1,1变成0
, 如二进制 NOT 1011=0100
AND: 按位与运算,有0为0,全1为1,如二进制 1011 AND 1101 = 1001 OR : 按位或运算, 有1为1,全0为0,如二进制 101100 OR 110101 =111101

汇编 (NOT)按位取反指令的更多相关文章

  1. 为什么X86汇编中的mov指令不支持内存到内存的寻址?

    在X86汇编中,MOV [0012H], [0016H]这种指令是不允许的,至少得有一个操作数是寄存器.当然,这种问题在用高级语言的时候看不到,感觉好像基本上都是从内存到内存啊,为毛到了汇编就不行了? ...

  2. 汇编 STD和CLD指令

    一.用纯汇编封装函数strcmpW 1.用repnz scasw计算字串长度 2.用repz cmpsw比较字串内容 3.把比较的结果存放在EAX里边返回 __declspec(naked) int ...

  3. 7.arm汇编 bic和orr指令

    1. bic BIC指令的格式为: BIC{条件}{S}  目的寄存器,操作数1,操作数2 BIC指令用于清除操作数1的某些位,并把结果放置到目的寄存器中. 操作数1应是一个寄存器, 操作数2可以是一 ...

  4. 【汇编】字符串处理指令 stosb、lodsb、movsw、scasb、rep

    一.字符串处理指令 (1) lodsb.lodsw:把DS:SI指向的存储单元中的数据装入AL或AX,然后根据DF标志增减SI (2) stosb.stosw:把AL或AX中的数据装入ES:DI指向的 ...

  5. Debug和汇编编译器masm对指令的不同处理

    我们在Debug和源程序中写入同样形式的指令 : "mov al,[0]","mov bl,[1]","mov cl,[2]"," ...

  6. 汇编 shr 逻辑右移指令,shl 逻辑左移指令,SAL 算术左移指令,SAR 算术右移指令

    知识点: shr 逻辑右移指令 shl 逻辑左移指令 一.SHL 逻辑左移指令测试 shr 逻辑右移指令 右移一位相当于整除2 shl 逻辑左移指令 左移一位相当于乘2 //很多时候会溢出 //& ...

  7. 汇编 inc 和 dec 指令

    知识点: inc 加1指令 dec 减1指令 一.加一指令inc inc a 相当于 add a, //i++ 优点 速度比sub指令快,占用空间小 这条指令执行结果影响AF.OF.PF.SF.Z ...

  8. 汇编 MOVSX与MOVZX 指令

    知识点:  MOVSX符号扩展传送  MOVZX零扩展传送 一.MOVSX与MOVZX格式 MOVSX 操作数A ,操作数B MOVZX 操作数A ,操作数B 相同点:操作数B 空间必须小于 操作 ...

  9. 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

    http://www.cnblogs.com/del/archive/2010/04/16/1713886.html 跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: ...

随机推荐

  1. Expo大作战(五)--expo中app.json 文件的配置信息

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  2. react native中Unable to load script from assets 'index.android.bundle'解决方案

    刚刚朋友问我,说是创建好一个项目,运行后报错:Unable to load script from assets 'index.android.bundle',以前好好的没出现这种现象,于是我找到一个 ...

  3. web测试实践

    参会人员:赵天宇,周静,张双双,张玉 参会地点:微信群 参会内容:决定评测软件 最后会议结论:决定了选择用中国大学mooc(https://www.icourse163.org/)和结合竞品对象-清华 ...

  4. 用 React 整合 LogEntries JavaScript 库

    [编者按]本文作者为 David Posin,主要介绍 React 与 LogEntries 间的相互操作.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 众所周知,React.js已经被证 ...

  5. 腾讯云Centos安装nginx

    使用的是腾讯云主机,选择的镜像如下: Centos7+ 64bit; nginx 1.7.12 1.安装依赖 yum -y install gcc gcc-c++ wget net-tools pcr ...

  6. 腾讯云自建MySQL数据库访问

    1. 登陆腾讯云 https://cloud.tencent.com/ 2. 登陆控制台 https://console.cloud.tencent.com/ 3. 选择云主机 4. 选择重装系统 5 ...

  7. 数据库还原错误:指定的转换无效。(SqlManagerUI)

    SSMS在一定程度上方便我们进行一些常见的操作.但有时候它处理得又不是那么不人性化.尤其是错误信息. 今天我在进行数据库还原的时候就碰到一个错误:指定的转换无效.(SqlManagerUI) Spec ...

  8. Redis集群迁移

    1:开发中断程序,登录各个主节点查看key信息 INFO # Keyspace db0:keys,expires,avg_ttl # Keyspace db0:keys,expires,avg_ttl ...

  9. python selenium模拟登录163邮箱和QQ空间

    最近在看python网络爬虫,于是我想自己写一个邮箱和QQ空间的自动登录的小程序, 下面以登录163邮箱和QQ空间和为例: 了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用, ...

  10. Automation Script For Percona Xtrabackup FULL/Incremental

    This is my first post in 2019, and Im starting with a MySQL solution. In MySQL world, implementing a ...