博客
关于我
汇编语言(六):位操作类指令(AND, OR, XOR, NOT, TEST, 移位指令)
阅读量:375 次
发布时间:2019-03-04

本文共 1349 字,大约阅读时间需要 4 分钟。

汇编语言课程笔记:位操作类指令

目录

  • 逻辑运算指令
  • 移位指令
  • 循环移位指令
  • 1. 逻辑运算指令

    1.1 逻辑与指令 (AND)

    • 指令格式:AND reg,imm/reg/mem
    • 功能:设置标志位CF和OF为0,根据结果设置SF、ZF和PF状态。
    • 用途:用于将某位或某些位置为0,不影响其他位。

    1.2 逻辑或指令 (OR)

    • 指令格式:OR reg,imm/reg/mem
    • 功能:设置标志位CF和OF为0,根据结果设置SF、ZF和PF状态。
    • 用途:用于将某位或某些位置为1,不影响其他位。

    1.3 逻辑异或指令 (XOR)

    • 指令格式:XOR reg,imm/reg/mem
    • 功能:设置标志位CF和OF为0,根据结果设置SF、ZF和PF状态。
    • 用途:用于对某些位取反,不影响其他位。

    1.4 逻辑非指令 (NOT)

    • 指令格式:NOT reg/mem
    • 功能:不影响标志位。
    • 用途:用于对单个寄存器或内存位置取反。

    1.5 测试指令 (TEST)

    • 指令格式:TEST reg,imm/reg/mem
    • 功能:执行逻辑与运算,但不改变操作数。
    • 用途:用于检测某些条件是否满足,避免改变原操作数。

    2. 移位指令

    移位指令用于对寄存器或内存位置的数值进行位操作,分为逻辑移位和算术移位。

    2.1 逻辑移位指令

    • 左移:SHL reg/mem,1/CL 或 SHL reg/mem,CL
    • 右移:SHR reg/mem,1/CL 或 SHR reg/mem,CL
    • 特点:适用于无符号数移位处理。
      • 左移:最高位进入CF,最低位补0。
      • 右移:最低位进入CF,最高位补0。

    2.2 算术移位指令

    • 左移:SAL reg/mem,1/CL 或 SAL reg/mem,CL
    • 右移:SAR reg/mem,1/CL 或 SAR reg/mem,CL
    • 特点:适用于有符号数移位处理。
      • 左移:最高位进入CF,最低位补0。
      • 右移:最低位进入CF,符号位不变。

    2.3 移位指令对标志的影响

    • CF:根据移入的位设置。
    • SF、ZF、PF:根据移位后的结果设置。
    • AF:未定义。
    • OF:当移位前最高位与移位后最高位不同时为1,否则为0。

    3. 循环移位指令

    循环移位指令用于将操作数的位进行循环移位操作,分为带进位和不带进位两种类型。

    3.1 不带进位循环移位

    • 左移:ROL reg/mem,1/CL
    • 右移:ROR reg/mem,1/CL
    • 特点:被移位的位会进入CF。

    3.2 带进位循环移位

    • 左移:RCL reg/mem,1/CL
    • 右移:RCR reg/mem,1/CL
    • 特点:移位时会考虑CF的值,类似于加法中的进位处理。

    3.3 循环移位对标志的影响

    • CF:根据指令功能设置。
    • SF、ZF、PF、AF:不受影响。
    • OF:当移位前最高位与移位后最高位不同时为1,否则为0。

    4. 实际应用示例

    4.1 移位操作示例

    • shl ax,1:将AX左移一位,CF为1。
    • shr al,1:将AL右移一位,CF为0。

    4.2 循环移位示例

    • rol al,1:将AL左循环移位一位。
    • ror bl,1:将BL右循环移位一位。

    4.3 位传送示例

    • ror bl,1:将BL的最低位送到AL的最低位。
    • ror al,1:将AL的最低位送到BL的最低位。

    转载地址:http://mtih.baihongyu.com/

    你可能感兴趣的文章
    python写入文件出现空行
    查看>>
    PYTHON-返回给定x的多边形路径的y坐标
    查看>>
    python-进程池与线程池,协程
    查看>>
    Python-通过函数传递变量
    查看>>
    Python内置函数详解——总结篇
    查看>>
    Python.对象集合中的标识.和散列
    查看>>
    Python.硒.拖放错误“AttributeError:move_to 需要 WebElement“
    查看>>
    Python内置函数详解
    查看>>
    Python/Kivy:从一个类调用函数到另一个类并在 Python 中显示小部件
    查看>>
    Python/Kivy:我可以在双击标签时调用函数吗
    查看>>
    python内置函数5-frozenset()
    查看>>
    Python/Plotly:如何使用要显示的信息自定义悬停模板?
    查看>>
    Python/Selenium - 无法单击 www.instagram.com 上的“接受 cookie“按钮
    查看>>
    Python内置函数(35)——next
    查看>>
    python写入mysql
    查看>>
    python写入csv老是乱码或者各种不好
    查看>>
    Python内置函数
    查看>>
    Python2 安装MySQLdb库
    查看>>
    Python2 已终结,入手Python 3,你需要这30个技巧
    查看>>
    python写下拉列表在excel,无法使用python获取Excel下拉列表(组合框)值
    查看>>