汇编语言——逻辑运算和移位指令

article/2025/10/7 7:25:45

逻辑运算和移位指令

逻辑运算指令

逻辑与AND
  • 格式
    AND reg, imm/reg/mem ;reg←reg^imm/reg/mem
    AND mem, imm/reg ; mem←-mem ^ imm/reg
  • 功能:对两个操作数执行按位的逻辑与运算,结果送到目的操作数
  • 说明:
    (1)按位的逻辑与运算;
    (2)操作数不能同时为存储器操作数;
    (3)注意对标志位的影响; (OF,CF==0)
  • 思考:
    (1)某一个操作数自己和自己相逻辑与,结果是?(还是其本身)
    (2) AND指令主要用在什么场合?
    可屏蔽某些位(将这些位置0) 注:和0与清零,和1与保留原来的值
    在这里插入图片描述
逻辑或OR
  • 格式
    OR reg,imm/reg/mem; reg←reg V imm/reg/mem
    OR mem,imm/reg ; mem←memV imm/reg
  • 功能:对两个操作数执行按位逻辑或运算,结果送到目的操作数
  • 说明
    (1)按位逻辑或运算;
    (2)OR指令对操作数的限制和对标志位的影响;(OF,CF==0)
    思考:
    (1)某一个操作数自己和自己相逻辑或,结果是?其本身
    (2)OR指令主要用在什么场合? 功能: 使某些位置为1
    在这里插入图片描述
逻辑非NOT
  • 格式 NOT reg/mem ;~reg/mem
  • 功能:对一个操作数执行按位逻辑非运算
  • 说明
    (1)按位取反,原来是“0”的位变为“1”,原来是“1”的位变为“0”;
    (2) NOT指令是一个单操作数指令;
    (3) NOT指令不影响标志位;
逻辑异或XOR
  • 格式
    XOR reg,imm/reg/mem ; reg← reg 异或 imm/reg/mem
    XOR mem,imm/reg ; mem← mem 异或 imm/reg
  • 功能:对两个操作数执行按位逻辑异或运算,结果送到目的操作数
  • 说明:
    (1) 只有相“异或”的两位不相同,结果才是1;
    (2)XOR指令对操作数的限制和对标志位的影响同AND指令(OF,CF==0)
  • 思考:
    (1)某一个操作数自己和自己相异或,结果是?为0
    (2) XOR指令主要用在什么场合?
    使操作数的某些位取反或测试两数是否相等
测试TEST
  • 格式:
    TEST reg, imm/reg/mem ; reg^ imm/reg/mem
    TEST mem, imm/reg ; mem^ imm/reg
    TEST目的,源 ;目的^源,不回送结果,但影响标志位(例如ZF)
  • 例子
    TEST AL, 80H; 测AL中第7位
    JNZ T_ ALARM; D7=1, 转温度报警
    TEST AL, 40H; 测D6位
    JNZ P_ ALARM; D6=1, 转压力报警

移位指令(破坏性移位)

算术左移SAL(无符号数)
  • 格式: SAL 目的,计数值
    SAL AH,1
    SAL AH,CL(当计数值大于1时,数要先传入CL)
    SAL BYTE PTR [BX] ,1
    在这里插入图片描述
逻辑左移SHL(有符号数)
  • 格式: SHL目的,计数值
    SHL AH, 1
    SHL AH, CL

  • 1)CF总是被移出的高位,两者均属于破坏性移位
    2)左移1位,相当于乘2
    3)移位次数为1时,若最高位被改变,0F=1,否则0F=0(按有符号位相当于溢出)
    逻辑右移SHR

格式: SHR目的,计数值
右移1次,无符号数相当于除以2 (余数丢弃)

MOV AL, 10000110B ; AL=134
SHR AL, 1; AL=67
SHR AL, 1; AL=33, CF=1

在这里插入图片描述

算数右移SAR

格式: SAR目的,计数值;
右移1次,有符号数相当于除以2
例:

MOV AL, 80H; AL=10000000B- -128 
MOV CL, 03H
SAR AL, CL ; AL=11110000B-F0H=-16

在这里插入图片描述

循环移位指令

ROL 循环左移

在这里插入图片描述
ROR循环右移
在这里插入图片描述
RCL带进位循环左移
在这里插入图片描述
RCR带进位循环右移
在这里插入图片描述

  • 循环移位指令的应用
    1.用于某些状态位的测试
    2.高位部分和低位部分的交换
    3.特定应用程序跑马灯等

http://chatgpt.dhexx.cn/article/STClIIYM.shtml

相关文章

汇编语言基础之 移位指令

原文: http://bdxnote.blog.163.com/blog/static/ 移位指令是一组经常使用的指令,包括:算数移位、逻辑移位、双精度移位、循环移位、带进位的循环移位; 移位指令都有一个指定需要移动的二进制位数的操作数,该操作数可以是立即数,也可以是CL的值;在8086中,该操作数只能是1,但是在…

x86汇编_移位和循环移位指令简介_笔记46

移位指令与前面介绍的按位操作指令一起形成了汇编语言最显著的特点之一。位移动 (bit shifting) 意味着在操作数内向左或向右移动。x86 处理器在这方面提供了相当丰富的指令集如下表所示,这些指令都会影响溢出标志位和进位标志位。 英文全称汇编指令中文翻译说明意…

PLC移位循环指令

PLC移位循环指令 一、移位指令 移位指令包括无符号数移位和有符号数移位。 其中无符号数移位包含字左移指令、字右移指令、 双字左移指令和双字右移指令;有符号数移位包含整数右移指令和双整数右移指令。 1、无符号数移位指令 (1)字左移指…

ARM64体系结构编程3-算数和移位指令

条件操作码 条件标志位描述N负数标志(上一次运算结果为负值)Z零结果标志(上一次运算结果为零)C进位标志(上一次运算结果发生了无符号溢出)V溢出标志(上一次运算结果发生了有符号溢出&#xff0…

逻辑、移位操作与空指令的实现

逻辑、移位操作和空指令的实现 1. 流水线数据相关的问题 流水线上经常会有一些被称为“相关”的情况发生,它使得指令序列中下一条指令无法按照设计的时钟周期执行,这些“相关”会降低流水线的性能。 1.1 流水线相关 流水线中的相关可分为&#xff1a…

汇编移位指令SHR,SAR,SAL/SHL,ROR,ROL,RCR,RCL

目录 逻辑右移SHR 算数右移SAR(重点) 算数/逻辑左移SAL/SHL(完成的操作都一样) 循环右移ROR 循环左移ROL 带进位循环右移RCR 带进位循环左移RCL 总结 例题 一 二 移位指令为双操作数指令,用于将目的的操作数中的二进制数移位。 目…

位移指令实现乘法、除法计算

前言 大家都知道51单片机是有乘法、除法指令的,不管是用C语言还是汇编语言,都是可以直接计算乘法、除法的,我以为,-,*,/ 这些算术运算是单片机的标配,而我公司使用的应广单片机居然没有乘法、除…

微机原理——移位指令

例题 思路 选择移位语句,右移,将AL移出的送入DX左端,将BL移出的送入DX左端。循环八次 MOV AL,01100101B; MOV BL,11011010B; XOR DX,DX;两个值相同,异或结果为0。等效:MOV DX,0 MOV CX,8;count L1: SHR AL,1;逻辑右…

汇编语言---移位指令

移位指令是一组经常使用的指令,包括:算数移位、逻辑移位、双精度移位、循环移位、带进位的循环移位; 移位指令都有一个指定需要移动的二进制位数的操作数,该操作数可以是立即数,也可以是CL的值;在8086中,该操作数只能是1,但是在其后的CPU中,该立即数可以是定义域[1,31]之内的数…

汇编语言——移位指令

基本概念 移位操作指令:移位操作指令是一组经常使用的指令,属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令)&…

汇编指令之移位指令

移位指令包括了 算术移位指令、逻辑移位指令、循环移位指令。 格式为:xxx oper1,CL/1 ;移位次数只能是1或者存放在CL里面。 一、算术移位指令 1、算术左移指令SAL 功能:左移一次,最低位补0,最高位送入CF标志位,如图&am…

汇编指令(四)移位指令

学习概要 格式 移位指令主要分四种 一、逻辑移位指令 1.逻辑左移指令SHL 2.逻辑右移指令SHR 3.逻辑移位指令的功能 二、算术移位指令 1.算术左移指令SAL 2.算术右移指令SAR 最高位不变的意思就是,最高位原来是1(0),右移过后…

【大学生软件测试基础】白盒测试 - 语句覆盖 - 03

任务1、依据源代码画出程序流程图; 任务2、根据程序流程图,找出程序的所有执行路径; 任务3、找出能覆盖所有语句的最少路径; 任务4、根据最少路径设计语句覆盖用例; 流程图: 任务2、根据程序流程图&…

修正的判定条件覆盖例题_语句覆盖、判断覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖、修正条件覆盖...

int function(bool a,bool b,boolc){intx; x=0;if(a&&(b||c)){x=1;returnx; } } 1、语句覆盖(SC) 选择足够多的测试数据,使得被测程序中的每条语句至少执行一次。 测试用例:a=T,b=T,c=T 2、判断覆盖(DC) 设计足够的测试用例,使得程序中的每个判定至少都获得一次真值…

语句覆盖,判定覆盖,条件覆盖,条件/判定覆盖,条件组合覆盖,路径覆盖

最近在复习软件测试的考试,每次到白盒测试这里都要为这几种逻辑覆盖方法感到头疼,这次终于决定好好整理出来。 逻辑覆盖是通过对程序逻辑结构的遍历实现程序的覆盖。它是一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。 根…

软件测试培训之:白盒测试的语句覆盖法和判定覆盖法

白盒测试是相对于黑盒测试而言的,黑盒测试不关注程序内部的实现结构,仅仅是通过向程序进行输入来观察程序的输出对不对;白盒测试就需要关注程序内部的实现结构,对程序的逻辑结构实施相关的测试;那么下面来谈谈语句覆盖法、判定覆盖法和条件覆…

语句覆盖、判定覆盖、条件覆盖 - 白盒笔试题解析

1. 定义 黑盒测试 - 不关注内部结构的测试/基于输入输出的测试 白盒测试 - 基于内部结构的测试 白盒测试的关键: 覆盖度 2. 白盒相关概念 语句覆盖 - 设计一套测试 让被测对象中所有语句得到测试覆盖 判定覆盖 - 设计一套测试 让被测对象中所有判定得到测试覆…

白盒测试用例设计方法(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖、基本路径覆盖)

语句覆盖:每条语句至少执行一次。 判定覆盖:每个判定的所有可能结果至少出现一次。(又称“分支覆盖”) 条件覆盖:每个条件的所有可能结果至少执行一次。 判定/条件覆盖:一个判定中的每个条件的所有可能结果…

白盒测试的逻辑覆盖辨析(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖)

白盒测试逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖) 逻辑覆盖测试: 语句覆盖:每条语句至少执行一次判定覆盖:每一判定的每个分支至少执行一次条件覆盖:每一判定中的每个条件&…

白盒测试技术——语句覆盖、判定覆盖、条件覆盖

结合一个例子说: 画出相应的程序流程图,更方便分析: 首先我们要明确一点:测试用例要尽可能少。 1、语句覆盖:被测程序中每个语句至少执行一次 路径:s->a->b->c->d->e A2,B0&a…