zoukankan      html  css  js  c++  java
  • 80X86学习笔记逻辑运算与移位指令

    1.逻辑运算指令

    (1)否操作指令NOT

    格式:NOT OPRD

    该指令把操作数OPRD取反,然后送回OPRD,OPRD可以是通用寄存器,也可是存储器操作数,对标志没有影响。

    (2)与操作指令AND

    格式:AND ORPD1, OPRD2

    对两个操作数进行按位逻辑与运算,结果送到OPRD1。该指令执行后,CF=0,OF=0,PF,ZF,SF反应运算结果,AF未定义。

    某个操作数自己与自己相与,虽然值不变,但可使CF清0。与操作指令主要用于使一个操作数中若干位不变,其他若干位清0。

    (3)或操作指令OR

    格式:OR OPRD1,OPRD2

    指令执行后,CF=0,OF=0,PF,ZF,SF反应运算结果,AF未定义。某个操作数自己与自己相或,虽然值不变,但可使CF清0。

    (4)异或XOR

    格式:XOR OPRD1,OPRD2

    该指令执行后,CF=0,OF=0,PF,ZF,SF反应运算结果,AF未定义。

    某个操作数自己与自己异或,虽然值不变,但可使CF清0。

    (5)测试指令TEST

    格式:TEST OPRD1,OPRD2

    与AND相似,但结果不回送到OPRD1。ZF,PF,SF反应运算结果,CF,OF被清0.

    该指令通常用于检测某些位是否为1,但又不希望原操作数值的场合。

    例:要检查AL中位6或2是否有一位位1:

    TEST AL,01000100B;

    若6 2 都为0,则执行指令后,ZF=1,否则ZF被清0.

    例:

    1.屏蔽0,1两位

    MOV AL,0BFH

    AND AL,0FCH

    2.第5位置1

    MOV AL,43H

    OR AL,20H

    2.一般移位指令

    (1)算术左移或逻辑左移指令SAL(有符号数)/SHL(无符号数)

    算术左移和逻辑左移进行相同动作,尽管为了方便提供两个助记符,但只有一条机器指令。

    格式:SAL OPRD, M 或 SHL OPRD, M

    把操作数左移m,每移动一位,右边用0不足一位,移出最高位进入标志位CF.

    (2)算术右移SAR

    格式:SAR OPRD, m

    右移m位,每移一位,左边符号位保持不变,移出最低位进入标志位CF。

    eg:MOV CL, 5

          SAR [DI], CL

    (3)逻辑右移SHR

    格式:SHR OPRD, m

    左边用0补,移出最低位进入标志位CF。

    一般通过移位指令和逻辑运算指令进行数据的合并和分解处理。

    eg:DATA1 DATA2各长4位,分别存放在AL低4位和高4位中,现把它们分别存放在BL寄存器和BH寄存器的低4位中。

    MOV BH, AL

    AND BL, 0FH     ;得DATA1

    MOV BH, AL      ;得DATA2

    MOV CL, 4

    SHR BH, CL

    3.循环移位指令

    这些指令可以一次只移动移位,也可以一次移动多位,若移动多位,那么移位次数存放在CL寄存器中。

    格式:ROL OPRD, M

            ROR OPRD, M

            RCL OPRD, M

            RCR OPRD, M

    操作数oprd可以是通用寄存器,存储器操作数。前两条指令没有把进位标志CF包含在循环环中;后两条指令把进位标志CF包含在循环环中,即作为整个循环的一部分。

    这些指令只影响标志CF和OF.

    对于带进位的循环移位指令,若操作数8位,移位9次后复原。

    例:

    把AL高4位与低4位交换

    ROL AL, 4

  • 相关阅读:
    AJAX
    JQUERY基础
    PHP 数据库抽象层pdo
    会话控制:session与cookie
    php 如何造一个简短原始的数据库类用来增加工作效率
    php 数据访问(以mysql数据库为例)
    面向对象设计原则
    php 设计模式 例子
    PHP中静态与抽象的概念
    键盘的按钮键名
  • 原文地址:https://www.cnblogs.com/seebro/p/2412310.html
Copyright © 2011-2022 走看看