文章目录

  • 一、逻辑运算指令
    • 1、逻辑‘与’指令 AND
    • 2、逻辑‘或’指令 OR
    • 3、逻辑“非”指令 NOT
    • 4、逻辑“异或” XOR
    • 5、测试指令TEST
  • 二、移位指令
    • 1)非循环移位
      • 1、算数左移SAL和逻辑左移SHL
      • 2、逻辑右移SHR
      • 3、算术右移SAR
    • 2)循环移位
      • 1、带CF的循环左移 RCL
      • 2、带CF的循环右移 RCR
      • 3、不带CF的左移循环 ROL
      • 4、不带CF的右移循环 ROR
    • 助记

一、逻辑运算指令

1、逻辑‘与’指令 AND

指令格式:AND OPRD1,OPRD2 ;OPRD1←OPRD1^OPRD2
功能:AND指令使源操作数和目标操作数按bit位相“与”,结果送回目标操作数。AND中的“与”’特性通常可将指定位清0
常用作:

  1. 实现两个数 的按位与
  2. 使目标操作数中某些位保持不变,把其他位清‘0’
  3. 使操作数不变,但影响其他6个状态标志位,并使CF=OF=0
    例如:
AND AX,[BX]      ;AX和[BX]所指字单元的内容按位相‘与’,结果送AX
AND AL,OFH      ;AL的高四位清0,第四位保持不变
AND AX,AX       ;AX自身按位相与,不改变AX中的内容,但影响6个状态标志位

2、逻辑‘或’指令 OR

指令格式:OR OPRD1,OPRD2 ;OPRD1←OPRD1∨OPRD2
指令功能:OR指令实现对源操作数和目标操作数按位相“或”,结果送会目标操作数中,对应AND指令,OR指令在程序中也应用于一下方面:

  1. 实现对两数按位相“或”
  2. 使目标数某些位保持不变,将另外一些位置1。此时源操作数应这样设置:目标数哪些位需要置‘1’,就把源操作数的对应bit位设为1,其他位设为0
  3. 使操作数不变,但影响6个状态标志位,并使CF=OF=1
    例如:
OR [BX],AL       ;[BX]←[BX]∨AL,将[BX]中内容和AL中内容向“或”,结果送回[BX]单元
OR AL,20H       ;将AL中的D5位置1,其余位不改变
OR AX,AX        ;AX中内容不变,但影响6个状态标志位

3、逻辑“非”指令 NOT

指令格式:NOT OPRD
指令功能:NOT指令是单操作数指令,它将指定的操作数OPRD按位取反,再送回该操作数,这里可以是8位或16位的寄存器操作数,但不能是立即数。NOT指令对标志位无影响。
例如:

NOT AX       ;将AX中内容按位取反,结果送回AX
NOT WORD PTR[SI]        ;将[SI]所指向两个单元中的内容按位取反,再送回这两单元

4、逻辑“异或” XOR

指令格式:XOR OPRD1,OPRD2 ;OPRD1←OPRD1⊕OPRD2
指令功能:XOR是将源操作数和目的操作数按位进行“异或”,结果送回目标操作数。“异或”操作原则是:两位操作数相同时结果为0.不同时结果为1
例如:

XOR AX,1122H     ;AX的内容与1122H"异或",结果送回AX中
XOR AX,AX           ;使AX清零

5、测试指令TEST

TEST指令的格式及对操作数的要求和完成的操作和AND指令类似,区别是:TEST不将操作的结果送回目的操作数,而只是影响标志位,故这条指令常用于不破坏数据内容的情况下检测,数据的某些位,常搭配JC/JZ等条件转移指令使用。

TEST AL,02H      ;若AL中Di位为1,则ZF=0,否则=1

二、移位指令

1)非循环移位

非循环移位分为算术移位和逻辑移位,逻辑移位针对的是无符号数,而算数移位针对的是有符号数。

1、算数左移SAL和逻辑左移SHL

指令格式:
SHL OPRD,1 SAL OPRD,1
SHL OPRD, CL SAL OPRD,CL
指令功能: 算数左移指令SAL和逻辑左移指令SHL的执行完全相同的操作,都是将目的操作数的内容左移一位或者CL所指定的位数,每左移一位,左边的最高位移入标志位CF,而在右边的最低位补零。

注意:当移位之后的CF和最高位状态不同时,OF标志被影响为1,表示溢出状态;
由于左移指令比乘法指令执行速度快得多,在程序中的无符号数的乘2运算用左移指令来代替乘法指令可加快程序的运行。

MOV AL,41H
SHL AL,1        ;视为有符号数时,溢出,82H > 7FH

2、逻辑右移SHR

指令格式:SHR OPRD ,1
或: SHR OPRD ,CL
指令功能:逻辑右移指令将目的操作数的内容向右移一位或者CL指定的位数,每右移一位,右边最低位移入标志位CF,最高位补0。(算术右移的不同之处)

注意:SHR指令也影响标志位CF和OF,如果移动次数为1,且移位之后最高位和次高位不相等,则标志OF=1,否则OF=0,若移动次数不固定,则OF状态不定。
和左移指令类似,每逻辑左移一位,就相当于无符号数除以2,因此可利用SHR指令加快程序中除法运算的执行。

MOV AL,82H
SHR AL,1        ;执行结果,AL=41H,CF=0,OF=1

3、算术右移SAR

指令格式:SAR OPRD,1
SAR OPRD,CL
指令功能:算术右移SAR指令和SHR都是右移指令,两者不同之处在于,算术右移不改变最高位(符号位)的状态,每右移一次,最高位保持原最高位的状态,其余和逻辑右移没有区别。
注意:SAR指令对CF,PF,SF,和ZF有影响,但不影响OF,AF

2)循环移位

循环移位分为带CF的循环移位RCL/RCR和不带CF的循环移位ROL/ROR

1、带CF的循环左移 RCL

指令格式:RCL OPRD,1
RCL OPRD ,CL
指令功能:带CF的循环左移指令RCL是将目的操作数左移一位或CL的指定位,每左移一位,最低位移入CF标记,原CF标记补入到最高位

2、带CF的循环右移 RCR

指令格式:RCR OPRD,1
RCR OPRD,CL
指令功能:带CF的循环右移指令是将目的操作数右移一位或CL的指定位,每右移一位,最高位移入CF标志,原CF标志补入到最低位。

;检测BL寄存器中第4位的状态,并保持原内容不变
MOV CL,4
ROL BL,CL       ;CF←BL第4位
JNC ZERO        ;JNC指令在当CF标志位为0时,跳转到ZERO
ROR BL,CL       ;恢复原BL的内容

3、不带CF的左移循环 ROL

指令格式:ROL OPRD, 1
ROL OPRD,CL
指令功能:不带CF的循环左移和带CF的循环左移指令的区别只有是否带CF标志位,不带CF的左移指令每左移一位,直接将最高位同时送入CF和最低位实现左移。

4、不带CF的右移循环 ROR

指令格式:ROR OPRD,1
ROR OPRD,CL
指令功能:不带CF的循环指令和带CF的循环右移指令的区别在于是否带CF标志位,不带CF标志位的右移指令每右移一次,直接将最低位直接送入CF和最高位实现右移。
注意:ROR和ROL指令移位一次,新的最高位和次高位不等,则标志位OF=1,否则OF=0;若移位次数不为1,则OF状态不定。

MOV AL,82H
ROL AL,1        ;结果:AL=05H,CF=1,OF=1

助记

SAL(Shift Arithmetic Left)
SAR(Shift Arithmetic Right)
SHL(Shift Logic Left)
SHR(Shift Logic Right)
ROL/ROR 不带CF,(稍有牵强,哈哈)
RCL/RCR 带CF
还是主张多加练习,自然就会熟练使用。记忆也是自然的事

8086CPU指令系统--汇编语言逻辑运算和移位操作指令相关推荐

  1. rol 循环左移 计算_第四周 算术运算、逻辑运算与移位操作指令

    大家好,又是我,沉迷学习无法自拔的小笨蛋康sir. 这个文集将会同步更新我观看吴宁老师的<微机原理与接口技术>教学视频写的笔记,学习笔记,大概每周一章. 有问题大家可以在评论下面留言讨论, ...

  2. 计算机语言主要由一些指令组成这些指令包括,(计算机组成指令系统汇编语言.ppt...

    (计算机组成指令系统汇编语言 * 5.2.1 存储结构与存取方式 4. 外存 访问时,用户给出文件名,系统给出外存的寻址信息.通常不由指令直接给出,而由主机以命令字形式给出. 5. 外设 访问时,主机 ...

  3. 汇编语言基础--汇编操作指令概述

    本文是接续"汇编语言基础--机器级数据存储",主要介绍汇编指令的构造.寻址和指令主要分类. 操作指令 指令的基本要素:       在"计算机处理器(CPU)基础&quo ...

  4. 8086CPU相关汇编语言的简单概述

    8086CPU相关汇编语言的简单概述 1.寄存器 通用寄存器 8806CPU给出物理地址的方法 段寄存器 修改CS,IP的指令 2.寄存器(内存访问) 栈机制 3.[BX]和loop指令 [BX] l ...

  5. 【深度学习计算机指令系统,彻底搞懂指令十大寻址方式】

    系列文章目录 1.<带你深挖计算机底层逻辑,打通你计算机基础知识的任督二脉> 2.<深度学习计算机底层原理,深度剖析存储器> 3.<基于内存全面理解高速缓冲存储器> ...

  6. 汇编语言学习之基本指令(上)

    汇编语言学习之基本指令(上) 汇编语言对大小写不敏感,所以笔者全部采用大写说明语法规则,实例中采用小写英文 文章目录 汇编语言学习之基本指令(上) 1.数据传送类指令 1.1传送指令MOV 1.2交换 ...

  7. c51语言定义布尔变量,51单片机指令系统:布尔变量操作指令(9)

    51单片机指令系统:布尔变量操作指令(9) 第二十七课:布尔变量操作指令分析 布尔处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的.布尔变量也即开关变量,它是以位(bit) ...

  8. (十)汇编语言——CALL和RET指令

    (十)汇编语言--CALL和RET指令 文章目录 (十)汇编语言--CALL和RET指令 CALL指令 功能 寄存器 内存 段间转移 返回指令 ret retf 实例 MUL指令 模块化程序设计 寄存 ...

  9. 汇编语言条件跳转指令汇总

    汇编语言条件跳转指令 基于特定标志位值的跳转 助记符 说明 标志位 JZ 为零跳转 ZF=1 JNZ 非零跳转 ZF=0 JC 进位跳转 CF=1 JNC 无进位跳转 CF=0 JO 溢出跳转 OF= ...

最新文章

  1. 使用Eclipse EE(汉化版) 创建一个JavaWeb工程
  2. 关于ARM Cortex系列产品
  3. POJ2446 模板盖格子 简单二分匹配
  4. KDD 2021 | 小红书推荐多样性解决方案:SSD在质量、多样性之间获得较好权衡
  5. 关于c++中map插入元素的问题
  6. python的实例属性和静态属性表_Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法...
  7. python如何输出两列数据_如何用python将一列数据分为两列?
  8. Verilog实现AXI4-Lite源代码
  9. 游戏筑基开发之C语言打印(printf)中文时出现乱码的解决方案
  10. 别用Date了,Java8新特性之日期处理,现在学会也不迟!
  11. LeetCode11 盛最多水的容器
  12. php程序员中文,php中文网“php程序员工具箱” v0.1版本上线
  13. JESD204B时钟网络
  14. JAVA公益捐赠管理系统_公益组织捐赠系统的设计与实现
  15. java 读取ppt_Java 读取PPT文本和图片
  16. 爬取王者荣耀高清皮肤
  17. 关于颜色HSL(色度、饱和度、亮度)
  18. 数模学习(模糊数学篇)——模糊识别(python实现)
  19. 机器人自动化《RPA国内外平台深度对比》
  20. Jeesite4本地及服务器上传文件、图片详解

热门文章

  1. android os.access,Establishing mandatory access control on Android OS
  2. C Primer Plus(第6版)第二章编程练习答案
  3. java1.8 stream()报错_streamsets 安装
  4. java 中getmapping,在Java spring尝试使用@getmapping到API时返回空JSON
  5. hmr webpack 不编译_webpack hmr
  6. 子网划分(内含算法详解)
  7. DM共享存储集群搭建
  8. excel如何快速选择一列数据
  9. 小数(BigDecimal)加减乘除、比较大小
  10. 2009教师节短信大全