知识点:

 (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. Django 处理modelform错误信息

    cp:https://blog.csdn.net/qq_34964399/article/details/79781071

  2. jquery插件导出excel和pdf(解决中文乱码问题)

    参考文件:http://jackyrong.iteye.com/blog/2169683 https://my.oschina.net/aruan/blog/418980 https://segmen ...

  3. Sql server 的float和real类型会产生科学计数法,如何消除科学计数法

    sqlserver 查询的 float 类型 如果是0.00000000001的话,会被显示为1E-11,请问怎么才能让查询出的结果显示为正常显示方式而不是科学计数法? 答案: float 和 rea ...

  4. gh-ost和pt-osc性能对比

    haughty_xiao     基于MySQL row格式的复制现在趋于主流,因此可以使用此格式的binlog来跟踪改变而不是触发器.与percona toolkit的pt-online-schem ...

  5. 转:前端js、jQuery实现日期格式化、字符串格式化

    1. js仿后台的字符串的StringFormat方法 在做前端页面时候,经常会对字符串进行拼接处理,但是直接使用字符串拼接,不但影响阅读,而且影响执行效率,且jQuery有没有定义字符串的Strin ...

  6. sqlserver性能调优中的逻辑读,物理读,预读是什么意思

    表 'T_EPZ_INOUT_ENTRY_DETAIL'.扫描计数 1,逻辑读 4825 次,物理读 6 次,预读 19672 次.SQL SERVER 数据库引擎当遇到一个查询语句时,SQL SER ...

  7. 系统升级win7 sp1后,ado,MSJRO.tlh error 问题

    MSJRO.tlh() : error C2501: '_RecordsetPtr' : missing storage-class or type specifiers MSJRO.tlh() : ...

  8. Windows Server 2008远程桌面端口更改方法

    win2008远程桌面端口默认是用的是3389端口,但是由于安全考虑,经常我们安装好系统后一般都会考虑把原来的3389端口更改为另外的端口.本文以改为端口为25608商品为例,讲解一下具体操作过程. ...

  9. Vue.js实现前段评论展示

    本来想着给这个博客弄个回复系统(类似知乎的回复),最初的实现思路是这样的:主评论后台渲染,前台新增的评论,回复用jquery操作dom放到页面上.实现的时候感觉好复杂,大量的dom操作,目前前段框架不 ...

  10. 错误 ORA-01102: cannot mount database in EXCLUSIVE mode 的处理方法

    今天启动数据库时报错了! SQL> startup mount ORACLE instance started. Total System Global Area  608174080 byte ...