汇编-and逻辑与
and的逻辑运算符 &&
AND 指令在两个操作数的对应位之间进行(按位)逻辑与(AND)操作,并将结果存放在目标操作数中:
下列是被允许的操作数组合,但是立即操作数不能超过 32 位:
AND reg, reg
AND reg, mem
AND reg, imm
AND mem, reg
AND mem, imm
操作数可以是 8 位、16 位、32 位和 64 位,但是两个操作数必须是同样大小。两个操作数的每一对对应位都遵循如下操作原则:如果两个位都是 1,则结果位等于 1;否则结果位等于 0
AND指令常用于将操作数的某些位清0,而其余位维持不变
该技术称为位屏蔽
.386 .model flat,stdcall option casemap:none .stack 4096 ExitProcess PROTO,dwExitCode:DWORD .data .code main PROC mov al,10110101b ;把低2位清零 and al,11111011b ;需要清零的位放0,保持不变的位放1 ;10110001 INVOKE ExitProcess,0 main ENDP END main
标志位
标志AND指令总是清零溢出标志和进位标志, 并根据目的操作数的值来修改符号标志、零标志和奇偶标志。
将小写字符转换为大写
AND指令提供了一种简单的方法将字符从小写转换为大写。比较大写A和小写a的ASCII码, 显然只有位5不同:
A=01000001b=65=0x41
a=01100001b=97=0x61
将任何一个字符与二进制数11011111进行AND, 则除位5外的所有位都保持不变, 而位5清零
.386 .model flat,stdcall option casemap:none .stack 4096 Include Irvine32.inc includelib Irvine32.lib ExitProcess PROTO,dwExitCode:DWORD .data .code main PROC mov al,61h ;a=01100001b=97=0x61 mov dh, 10 ;第 10 行 mov dl, 20 ;第 20 列 call Gotoxy ;定位光标 call WriteChar ;显示字符 and al,11011111b ;将小写字符转换为大写 mov dh, 12 ;第 12 行 call Gotoxy ;定位光标 call WriteChar ;显示字符 INVOKE ExitProcess,0 main ENDP END main
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2021-12-05 qt5-右键菜单
2019-12-05 python---win32gui、win32con、win32api:winAPI操作