【汇编】逻辑指令

文章目录

一、逻辑运算指令

  1. OPR不能为立即数
  2. 至少有一个数在寄存器中,NOT 除外,源操作数是立即数除外
  3. NOT 不影响标志位,其他使 CF=0、OF=0,AF 无定义
  4. 可用标志位:SF、ZF、PF

(一)各逻辑运算指令格式及操作

(1)逻辑非指令 NOT

  • 格式 :NOT OPR
  • 执行的操作 :(OPR) ← ¬(OPR)

(2)逻辑与指令 AND

  • 格式 :AND DST,SRO
  • 执行的操作 :(DST) ← (DST)∩(SRC)

(3)逻辑或指令 OR

  • 格式 :OR DST,SRO
  • 执行的操作 :(DST) ← (DST)∪(SRC)

(4)异或指令 XOR

  • 格式 :XOR DST,SRO
  • 执行的操作 :(DST) ← (DST)⊕(SRC)

(5)测试指令 TEST

  • 格式 :TEST OPR1,OPR2
  • 执行的操作 :(OPR1)∩(OPR2)

TEST 指令与AND运算的工作原理相同,但与AND指令不同的是,它不会更改第一个操作数。因此,如果我们需要检查寄存器中的数字是偶数还是奇数,我们也可以使用TEST指令执行此操作,而无需更改原始数字(TEST 相当于与操作但不保存结果)

(二)应用实例

二、移位指令

  1. 进位 CF 始终是最后被移出的一位,AF 位无定义
  2. 溢出 OF 只有移 1 位最高位改变时设置
  3. 循环移动只影响 CF 和 OF
  4. 其他移动还影响 SF、ZF、PF

(一)算术移位指令

(1)算术左移指令 SAL

  • 格式 :SAL OPR,CNT

  • 执行的操作

(2)算术右移指令 SAR

  • 格式 : SAR OPR,CNT

  • 执行的操作

(二)逻辑移位指令

(1)逻辑左移指令 SHL

  • 格式 : SHL OPR,CNT

  • 执行的操作

(2)逻辑右移指令 SHR

  • 格式 : SHR OPR,CNT

  • 执行的操作

(三)循环移位指令

(1)循环左移指令 ROL

  • 格式 : ROL OPR,CNT

  • 执行的操作

(2)循环右移指令 ROR

  • 格式 : ROR OPR,CNT

  • 执行的操作

(3)带进位的循环左移指令 RCL

  • 格式 : RCL OPR,CNT

  • 执行的操作

(4)带进位的循环右移指令 RCR

  • 格式 : RCR OPR,CNT

  • 执行的操作

(四)使用注意事项

  • OPR 可用除立即数以外的任何寻址方式

  • 针对 CNT 的不同数值执行的操作 (以 SHL 为例)

    • CNT = 1 时 ➡️ SHL OPR,1
    • CNT > 1 时 ➡️ MOV CL,CNT ,SHL OPR,CL
  • 条件标志位

    • CF = 移入的数值
    • CNT = 1 时,最高有效位的值发生变化 ➡️ OF = 1
      CNT = 1 时,最高有效位的值不变 ➡️ OF = 0
  • 移位指令

    SF、ZF、PF 根据移位结果设置,AF无定义

  • 循环移位指令

    不影响 SF、ZF、PF(奇偶)、AF


参考文章

汇编语言-移位指令

相关推荐
weixin_4481199411 小时前
Datawhale Jev Cookbook 202610 笔记3
笔记
姚瑞南11 小时前
【PRD】招投标商机雷达爬虫系统
人工智能·经验分享·笔记·爬虫·产品运营·产品经理
Gnevergiveup11 小时前
ATT&CK红蓝对抗实战指南-Windows安全基础
笔记·网络安全
小向是个Der14 小时前
嵌入式进阶——编译与链接
汇编·单片机·学习·编译原理·交叉编译
江屿风14 小时前
【Plain Language Large Model】【从麦当劳点餐到Redis接入:MCP如何让AI工具集成变简单】流食般投喂
人工智能·redis·笔记·语言模型·llm·mcp
海绵宝宝转agent15 小时前
Leetcode二叉树算法个人理解
笔记·学习·算法·leetcode·深度优先
小oo呆15 小时前
【学习心得】MCP工具开发学习笔记
笔记·学习
2601_9611462016 小时前
实验室用等离子表面处理设备处理汽车PP内饰件和PBT骨架的一点记录
笔记·汽车·设备
二十七日秋16 小时前
算法刷题笔记「Day 1|四道 OJ 入门题里的深坑」
c语言·汇编·数据结构·c++·笔记·python·算法
星恒随风16 小时前
Linux Socket TCP编程(二):逐文件重构多进程、多线程与线程池服务器,深入fork、pthread_create、popen和std::bind
linux·服务器·笔记·学习·tcp/ip