80X86学习笔记--逻辑运算与移位指令

原创 2012年03月23日 15:56:07

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

自己动手写CPU之第五阶段(3)——MIPS指令集中的逻辑、移位与空指令

MIPS32指令集架构中定义的逻辑操作指令有8条:and、andi、or、ori、xor、xori、nor、lui,其中ori指令已经实现了,本章要实现其余7条指令。 MIPS32指令集架构中定义的移...
  • leishangwen
  • leishangwen
  • 2014年08月01日 13:08
  • 7073

Andrew NG机器学习课程笔记系列之——机器学习之逻辑回归(Logistic Regression)

1. Classification 这篇文章我们来讨论分类问题(classification problems),也就是说你想预测的变量 y 是一个离散的值。我们会使用逻辑回归算法来解决分类问题。 之...
  • mydear_11000
  • mydear_11000
  • 2016年03月12日 13:30
  • 1378

自己动手写CPU之第五阶段(4)——逻辑、移位与空指令的实现

为了实现逻辑、移位操作与空指令(其中nop、ssnop不用特意实现,可以认为是特殊的逻辑左移指令sll),只需要修改OpenMIPS的如下两个模块。 修改译码阶段的ID模块,用以实现对上述指令的译码。...
  • leishangwen
  • leishangwen
  • 2014年08月04日 13:36
  • 2584

8086逻辑运算和移位指令

今天更新罗伊运算指令和移位指令,这边好好理解它是怎么操作的就可以了。 一、逻辑运算指令AND/OR/NOT/XOR/TEST(与,或,非,异或,测试) ①与,或,非,异或 这边大家都知道,这里不在...
  • best_fiends_zxh
  • best_fiends_zxh
  • 2016年10月05日 14:23
  • 1096

80x86指令使用实验 给出下面各条四则运算和逻辑运算指令的结果,并对结果对验证。

  • 2014年06月26日 18:39
  • 195KB
  • 下载

80X86学习笔记--算术运算指令

一.加减运算指令 1.加法指令ADD 格式:ADD OPRD1, OPRD2 操作:OPRD1 加法指令影响标志位,OF位更具操作数符号变化情况来设置:若两个操作数符号相同而结...
  • x954818696
  • x954818696
  • 2012年03月23日 15:55
  • 809

80X86学习笔记--数据传送指令

一.传送指令 格式:mov dst, src 源操作数可以使累加器,寄存器,存储单元,立即数。 目的操作数不能为立即数。 注意问题: 源和目的操作数不能同时是段寄存器;代...
  • x954818696
  • x954818696
  • 2012年03月23日 15:54
  • 863

学习笔记---关系运算符、条件表达式、逻辑运算

关系运算符: 关系运算符 运算符 意义   小于   小于等于   > 大于   >= 大于等于   == 等于   != 不等于 优先级: 优先级 ...
  • aketoshknight
  • aketoshknight
  • 2016年12月07日 17:42
  • 405

逻辑运算学习笔记

补码加法 [ x ]补+[ y ]补=[ x+y ]补 (mod 2) 特点:不需要事先判断符号,符号位与码值位一起参加运算。 符号位相加后若有进位,则舍去该进位数字。...
  • u013043762
  • u013043762
  • 2016年11月15日 16:44
  • 287

unity3D-游戏/AR/VR在线就业班 C#入门关系运算和逻辑运算学习笔记

unity3D-游戏/AR/VR在线就业班 C#入门关系运算和逻辑运算学习笔记
  • qq_36703442
  • qq_36703442
  • 2016年11月15日 11:56
  • 173
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:80X86学习笔记--逻辑运算与移位指令
举报原因:
原因补充:

(最多只允许输入30个字)