精华内容
下载资源
问答
  • 巧用移位寄存器指令实现流水线巧用移位寄存器指令实现流水线
  •  下面便以以下的程序来讲解指令的使用,用I0.2的上升沿来执行移位寄存器指令,那么就是一个扫描周期移一位的,指令中V100.0是移位寄存器的位,I0.3里面存的是0或1的数值,指令指定是移位加的,移位寄存器的长度是4...
  • 1、右回转---------------------------------ROR 2、左回转----... 6.6.3 MEAN 求平均值 程序举例: 如上图所示:当条件X0接通,对D0、D1、D2三个数据寄存器求平均值,把其结果存到D10里面。其运算过程如上图右边所示。
    a963c2d270184621cdb727abcf93541c.png

    1、右回转---------------------------------ROR

    2、左回转---------------------------------ROL

    3、位右移---------------------------------SFTR

    4、位左移---------------------------------SFTL

    1 右回转

    程序举例:

    c9e6d77ea64d9cd3e0328f1ebcf503a6.png

    X0每接通一次,则D0向右回转4位,最终位被存入进位标志中。具体转换过程如下图所示:

    1286580db4357483f41dca6d53114a3a.png

    连续执行型指令在每个扫描周期都进行回转动作,务必注意。

    2 左回转

    程序举例:

    679f4e4dbf53886752f13c649a003cf7.png

    X0每接通一次,则D0向左回转4位,最终位被存入进位标志中。

    e6631ab46dddf3d417f6d501813eb3d6.png

    连续执行型指令在每个扫描周期都进行回转动作,务必注意。

    3 位右移

    程序举例:

    ff9dd152375a19caad6b27ee8f8fb21b.png

    当X10接通后,指令执行结果如下:

    X3 X2 X1 X0

    ↓ ↓ ↓ ↓ 溢出

    M15 M14 M13 M12 M11 M10 M9 M8 M7 M6 M5 M4 M3 M2 M1 M0

    ¯¯¯¯¯¯→¯¯¯¯¯¯¯¯ ¯¯¯¯¯¯→¯¯¯¯¯ ¯¯¯¯¯→¯¯¯¯¯¯ ¯¯¯¯¯→¯¯¯¯¯¯

    X0-X3组成的4位传到M12-M15里面,M12-M15传到后面4位,以后4位继续向后传,最后的4位被溢出。

    4 位左移

    程序举例:

    5113596b224ab9d39d06b0300a75bdd9.png

    如上图所示 X0-X3传送到M0-M3,

    M0-M3传送到M4-M7,

    M4-M7传送到M8-M11,

    M8-M11传送到M12-M15,

    M12-M15溢出

    4.4数据处理指令

    4.4.1 ZRST全部复位

    ZRST 为整体复位指令

    decbb00bd5b736c6d10817b8276bc64f.png

    如上程序,当X1接通,ZRST指令将M3-M10全部复位,D10-D27也全部被清0

    4.4.2 DECO译码

    要译码的对象 要译码的位数

    ↑ ↑ 若X2 X1 X0=3 即X0,X1为ON,X2为OFF

    [DECO X0 M0 K3]

    ↓ 则 M7 M6 M5 M4 M3 M2 M1 M0中M3接通

    被译码对象 7 6 5 4 3 2 1 0

    指令由X0、X1、X2三位组成数据,使对应的M0-M7中的某个值置ON

    若X0、X1、X2组成的数据为3时,则M3线圈接通,

    若X0、X1、X2组成的数据为6时,则M6线圈接通,依次类推。

    6.6.3 MEAN 求平均值

    程序举例:

    7b68ea1e17ea04d23e5e831e619efc54.png

    如上图所示:当条件X0接通,对D0、D1、D2三个数据寄存器求平均值,把其结果存到D10里面。其运算过程如上图右边所示。

    展开全文
  • 1、对于与或来说,只有当所有操作数都为真的时候,整个表达式才为真;对于异火来说,当所有操作数都为真...4、作为其他操作的副产品,可以使用shl和shr指令对寄存器或内存空间进行清零操作,不过考虑到移位指令比mov...

    1、对于与或来说,只有当所有操作数都为真的时候,整个表达式才为真;对于异火来说,当所有操作数都为真的时候,结果正好为假

    2、在设置、检测或转换比特位的时候,可以分别使用or、and和xor指令

    3、在使用shl和shr指令的时候,如果后面需要用到原始数据,那么需要对原始数据进行保存

    4、作为其他操作的副产品,可以使用shl和shr指令对寄存器或内存空间进行清零操作,不过考虑到移位指令比mov或xor指令运算速度要慢一些,通常情况下会选择使用后边这两个指令

    5、在井陉乘以2或者除以2的运算时,可以分别使用sal和sar指令,要让其他人能明白这里进行的是算术运算操作,同时在进行除法运算的时候确保负数能够被适当的处理

    6、如果对比特位组合进行循环移位的次数正好等于他所在的寄存器的长度大小或内存单元的长度大小,那么就不需要再对这个比特位组合进行数据保存和恢复了

    7、在使用push和pop指令进行保存和恢复数据时,请记清楚最后一个被放入到堆栈的数据时最先被弹出堆栈的数据(LIFO)

    8、在使用push和pop指令时,使用关联线有助于创建和调试代码

    9、对内存中的数据进行交换的时候,只使用mov指令的话会占用更多的寄存器,但是运算速度更快,相比之下,如果使用push和pop指令的话,他不需要占用任何的寄存器但是运算速度慢一些。如果同时考虑到寄存器和运算速度的话,使用xchg指令以及相应的的mov指令将是一个更好的折中选择。

    展开全文
  • 汇编语言——移位指令

    千次阅读 2020-03-16 16:29:15
    移位操作指令:移位操作指令是一组经常使用的指令,属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令),双精度移位指令三大类。...

    基本概念

    移位操作指令:移位操作指令是一组经常使用的指令,属于汇编语言逻辑指令中的一部分,它包括移位指令(含算术移位指令、逻辑移位指令),循环移位指令(含带进位的循环移位指令),双精度移位指令三大类。其功能为将目的操作数的所有位按操作符规定的方式移动1位或按寄存器CL规定的次数(0~255)移动,结果送入目的地址。目的操作数是8位(或16位)的寄存器数据或存储器数据。

    基本格式 

    格式为:xxx oper1,CL/1

    移位次数只能是1或者存放在CL里面。

    移位指令

    一、算术移位指令

    1、算术左移指令SAL

    功能:左移一次,最低位补0,最高位送入CF标志位,如图:

    意义:左移n次,等于x2的n次幂。所以可用于有符号操作数做x2的n次幂运算。

    2、算术右移指令SAR

    功能:右移一次,最高位保持不变,最低位送入CF标志位,如图:

    意义:右移n次,等于/2的n次幂。所以可用于有符号操作数做/2的n次幂运算。

    二、逻辑移位指令

    1、逻辑左移指令SHL

    功能:同SAL,如图:

    意义:同SAL

    2、逻辑右移指令SHR

    功能:右移一次,最高位补0.区别!最低位送入CF标志位。如图:

    意义:用于实现无符号数/2的n次幂操作。

    三、循环移位指令

    1、循环左移指令ROL

    功能:左移一次,左移前的最高位送入最低位以及CF.如图:

    2、循环右移指令ROR

    功能:右移一次,右移前的最低位送入最高位以及CF.如图:

    3、带进位的循环左移指令RCL

    功能:左移一次,左移前的最高位送入CF,CF的内容送入最低位.如图:

    4、带进位的循环右移指令RCR

    功能:右移一次,右移前的最低位送入CF,CF的内容送入最高位.如图:

    四、双精度移位指令

    1、双精度左移指令SHLD

     

    2、双精度右移指令SHRD

     

    参考文章

    https://blog.csdn.net/qq_41627235/article/details/80368254

    https://baike.baidu.com/item/%E7%A7%BB%E4%BD%8D%E6%8C%87%E4%BB%A4/10562725?fr=aladdin

    展开全文
  • arm指令移位指令

    千次阅读 2015-12-29 17:45:40
    arm指令移位指令 LSL 逻辑左移 ASL 算术左移 LSR 逻辑右移 ASR 算术右移 ROR 循环右移 RRX 带扩展的循环右移ASL 和 LSL 是等同的,可以自由互换。 你可以用一个立即值(从 0 到 31)指定移位数量,或用包含在 0 ...
    

    arm指令移位指令



    LSL 逻辑左移 ASL 算术左移 LSR 逻辑右移 ASR 算术右移 ROR 循环右移 RRX 带扩展的循环右移ASLLSL 是等同的,可以自由互换。

    你可以用一个立即值(从 0 到 31)指定移位数量,或用包含在 0 和 31 之间的一个值的寄存器指定移位数量。

     

    逻辑或算术左移(LSL)

    MOV R1, #12

    MOV R0, R1, LSL#2

                                        R0 是 48。 这些指令形成的总和是R0 = #12, LSL#2 等同于 BASIC 的 R0 = 12 << 2



      - - - - - - - - - - - - - - -- - - - - -- - 参考:

    逻辑或算术左移


    (Logical or ArithmeticShift Left)

      Rx, LSL #n    or
      Rx, ASL #n    or
      Rx, LSL Rn    or
      Rx, ASL Rn

    接受 Rx 的内容并按用‘n’或在寄存器 Rn 中指定的数量向高有效位方向移位。最低有效位用零来填充。除了概念上的第 33 位(就是被移出的最小的那位)之外丢弃移出最左端的高位,如果逻辑类指令中 S 位被设置了,则此位将成为从桶式移位器退出时进位标志的值。

    考虑下列:

      MOV    R1, #12
      MOV    R0, R1, LSL#2

    在退出时,R0 是 48。 这些指令形成的总和是 R0 = #12, LSL#2 等同于 BASIC 的R0 = 12 << 2

     

    逻辑右移


    (Logical ShiftRight)

      Rx, LSR #n    or
      Rx, LSR Rn

    它在概念上与左移相对。把所有位向更低有效位方向移动。如果逻辑类指令中 S 位被设置了,则把最后被移出最右端的那位放置到进位标志中。它同于 BASIC 的register = value >>> shift

     

    算术右移


    (Arithmetic ShiftRight)

      Rx, ASR #n    or
      Rx, ASR Rn

    类似于 LSR,但使用要被移位的寄存器(Rx)的第 31 位的值来填充高位,用来保护补码表示中的符号。如果逻辑类指令中 S 位被设置了,则把最后被移出最右端的那位放置到进位标志中。它同于 BASIC 的register = value >> shift

     

    循环右移


    (Rotate Right)

      Rx, ROR #n    or
      Rx, ROR Rn

    循环右移类似于逻辑右移,但是把从右侧移出去的位放置到左侧,如果逻辑类指令中 S 位被设置了,则同时放置到进位标志中,这就是位的‘循环’。一个移位量为 32 的操作将导致输出与输入完全一致,因为所有位都被移位了 32 个位置,又回到了开始时的位置!

     

    带扩展的循环右移


    (Rotate Right with extend)

      Rx, RRX

    这是一个 ROR#0 操作,它向右移动一个位置 - 不同之处是,它使用处理器的进位标志来提供一个要被移位的 33 位的数量。


    展开全文
  • 寄存器移位(1)左移位指令原理:使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向左移N位后(右端补0),将结果输出到OUT所指定的存储单元中,如果移位次数大于0,最后一次移出位保存在“溢出”存储器位SM...
  • 移位寄存器移位功能实现四台电机的顺序启动和停止控制控制要求启动→电机A工作(10S后)→电机B工作(10S后)→电机C工作(10S后)→电机D工作(工作1小时后)→电机A停止(10S后)→电机B停止(10S后)→电机C停止(10S后)→...
  • 移位指令

    千次阅读 2011-06-16 00:00:00
    (1)逻辑移位指令。①SHL——逻辑左移指令。形式1:SHL 操作数,1。功能:操作数的内容连同CF的内容一起左移1位,尾部空位补0,CF中的原有的内容丢弃,如图9-7所示。 图9-7 左移指令相同功能:操作数左移1位,...
  • 移位指令 移动一位时由指令直接给出; 移动两位及以上,则移位次数由CL指定。 要求操作数不能是立即数; 这类指令的执行大多会影响6个状态标志位。 非循环移位指令 逻辑左移SHL(Shift Logic Left) 算术左移SAL...
  • ARM指令集--移位指令

    千次阅读 2009-09-27 20:30:00
    ARM指令集-移位指令ARM微处理器内嵌的桶型移位器(Barrel Shifter),支持数据的各种移位操作,移位操作在 ARM指令集中不作为单独的指令使用,它只能作为指令格式中是一个字段,在汇编语言中表示为指令中的选项。...
  • 通过verilog的行为仿真及...本文采用的矩阵-树状结构移位寄存器,配合指令预处理技术,能有效实现32位数据的移位操作,并兼容INTELX86系列的所有移位指令还可作为通用硬件方便地移植到其他指令级别的CPU设计之中。
  • 每天学一点/电工:西门子PLCSTEP7-SMARTPLC:移位寄存器移位寄存器如下图示:EN:每个扫描周期执行一次。DATA:数据移入位。S—BIT:指定移位寄存器的初始位。N:指定移位寄存器的长度和方向(N为正数左移,N为负数...
  • 移位指令(操作) ARM微处理器内嵌的桶型移位器(Barrel Shi f t er),支持数据的各种移位操作,移位操作在ARM指令集中不作为单独的指令使用,它只能作为指令格式中是一个字段,在汇编语言中表示为指令中的选项。...
  • 一。 把数据、地址或立即数传送到寄存器、存储单元以及I/O端口,或从... 二 使用算术逻辑运算和移位指令,可以实现对二进制数据的加、减、乘、除等四则运算,与、或、非、异或等逻辑运算,以及移位运算和代码转换运算
  • 微机原理—移位指令

    千次阅读 2016-10-31 22:14:42
    寄存器操作数或内存操作数进行指定位数的移位。可一次移一位,也可一次移位CL规定的次数。非循环移位 SHL SHR SAL SAR循环移位 ROL ROR RCL RCR 非循环移位 (B/W) SHL reg/mem,1/CL ;逻辑左移,最高位进入...
  • 【C语言知识】关于移位指令的使用

    千次阅读 2019-09-18 20:44:18
    以STM32中寄存器移位为例: //打开GPIOB端口的时钟 *(unsigned int *)0x40021018 |= (1<<(3)); //控制ODR寄存器 *(unsigned int *)0x40010C0C &= ~(1<<0); 这里出现的|= 和 &= ~,是C语言...
  • 本文给出了一种可用于32位以上CPU执行单元的移位寄存器电路,并针对CISC指令集...采用指令预处理的技术和通过冗余位,能很方便的实现带进位标志CF移位和设置CF位,并使得每条移位指令的平均执行速度为两个指令周期。
  • 今天发现了一个Intel逻辑左移指令shl的一个bug。 逻辑左移的概念是对给定的目的操作数左移COUNT次,每次移位时最高位移入标志位CF中,最低位补零. 其中OPRD1为目的操作数, 可以是通用寄存器或存储器操作数。 ...
  • 关于ARM的一些基本概念,大家可以参考我之前的文章:《嵌入式工程师到底要不要学习ARM汇编指令?》《到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc?一文帮你梳理基础概念【科普】》关于ARM指令用到的IDE开发...
  • 1.逻辑运算指令 (1)否操作指令NOT 格式:NOT OPRD 该指令把操作数OPRD取反,然后送回OPRD,OPRD可以是通用寄存器,也可是存储器操作数,对标志没有影响。 (2)与操作指令AND 格式:AND ORPD1, OPRD2 对两个操作...
  • 1.引言 CPU寄存器状态字的各位给出了有关指令状态或结果的信息以及所出现的错误,我们可以将二进制逻辑操作状态位信号状态直接集成到程序中,以控制程序执行的流程。2.状态字寄存器 先简单介绍一下CPU中状态字。 ●...
  • 1.引言 CPU寄存器状态字的各位给出了有关指令状态或结果的信息以及所出现的错误,我们可以将二进制逻辑操作状态位信号状态直接集成到程序中,以控制程序执行的流程。2.状态字寄存器 先简单介绍一下CPU中状态字。● ...
  • 微机原理--第三章(6)移位指令

    千次阅读 2016-10-15 13:43:12
    寄存器操作数或内存操作数进行指定位数的移位。可一次移一位,也可一次移位CL规定的次数。 非循环移位 SHL SHR SAL SAR 循环移位 ROL ROR RCL RCR 非循环移位 (B/W) SHL reg/mem,1/CL ;逻辑左移,最高位进入CF,...
  • 寄存器或内存单元中的数据向左移位 将最后移出的一位写入CF 最低位用0补充 移动位数大于1时必须用CL MOV AL,01010001B MOV CL,3 SHL AL,CL 惯常用法:逻辑左移一位,相当于乘2;右移一位相当于/2 assume cs:...
  • 移位和循环指令

    2021-01-19 23:03:53
     SRO、SRI、SRX、SRA和RR构成了右移和循环右移指令,当执行移位操作后将会修改寄存器的内容并影响标志位。  SRO指令寄存器的内容右移1位,其中位移入进位位,位置“0”。  SRI指令寄存器的内容右移1位,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 582
精华内容 232
关键字:

寄存器移位指令