指令学习——移位指令资料
• SLW和SRW,字左移和字右移。指令盒与字节 移位比较,只有名称变为SHR_W和SHR_W。 使能输入有效时,把字型输入数据IN左移或右 移N位后,再将结果输出到OUT所指的字存储 单元。最大实际可移位次数为16。
双字左移和双字右移
• (3)SLD和SRD,双字左移和双字右移。指令盒与字 节移位比较,只有名称变为SHL_DW和SHR_DW,其 他部分完全相同。使能输入有效时,把双字型输入数 据IN左移或右移N位后,再将结果输出到OUT所指的双 字存储单元。最大实际可移位次数为32。
2. 循环左移、循环右移
循环左移和循环右移根据所循环移位的数的长度分别又 可分为字节型、字型、双字型。
循环移位特点: 移位数据存M1.1(溢出)相连,所以最后被移出的位被移到另一 端的同时,也被放到SM1.1位存储单元。例如在循环右 移时,移位数据的最右端位移入最左端,同时又进入 SM1.1。SM1.1始终存放最后一次被移出的位。
右端1移入SM1.1和
LW0左
0
右端0移入SM1.1和
LW0左
例题分析:编写八只灯HL1、HL2、HL3、HL4、HL5、HL6、HL7、 HL8每0.5秒顺序点亮,连续循环20次的程序.
QB0
应用举例 :RRW LW0,3
运行结果 如下
移位 次 数
0
1
地址
LW0 LW0
2 LW0
3 LW0
单元内容
位SM1.1
说明
1011010100110011 1101101010011001 1110110101001100 0111011010100110
X
移位前
1
右端1移入SM1.1和
LW0左
1
移位指令
• 1. 左移和右移 • 2. 循环左移、循环右移 • 3. 寄存器移位
1. 左移和右移
• (1)字节左移和字节右移 • SLB和SRB,字节左移和字节右移。使能输入有效时,
把字节型输入数据IN左移或右移N位后,再将结果输出 到OUT所指的字节存储单元。最大实际可移位次数为8。
应用举例:指令SLB执行结果
《移位指令SFT》PPT课件
3.跳步目标不在D700-D777范围内,则分别被处理为NOP和 END指令。例如CJP677被当作NOP;EJP677被当作END指令 处理。
4.不得对跳步过程中强行置位、复位以及线性修改常数。
图6-23表示CJP/EJP之间程序执行过程。当X01接通时,执 行跳步指令,跳转到EJP702下面一条指令执行,即X501接通 时,输出继电器Y31通电CJP/EJP之间程序按以下方法执行:
(六) 空操作指令NOP
• NOP称为空处理(或称为空操作)指令,用于程序修改 执行NOP指令时,不完成任何操作,只是占用一步的 时间,NOP指令一般用在下列几个方面:
1.指定某些步序编号(地址)内容为空,相当于指定 存储器某些单元内容为空,留作以后插入或修改程 序用。
2.使某些接点短路。有时需要短路掉一些接点,但又 不想太多地改变步序编号及程序内容时,可以使用 NOP指令,如图6-21(a)所示。
R:移位寄存器复位端.当连接R的接点(本图中用X401)接 通.寄存器中的内容全部清“O”,对应的辅助继电器全部断 开。如果R端连接的接点一直处于接通状态,则数据输入和脉 冲输入的信号无效.因此执行移位操作时,复位输入端接点应 处于断开状态。
连接寄存器三个输入端(IN,CP,R)的接点可以是LD指 令使用器件中的任意接点。
当跳步条件成立时(X01接通时),跳过程序B, 执行程序C,这时程序B中除已开始时的状态, 而且整个程序的执行时间也相应减少,如图6- 22所示。
图6-22 CJP/EJP指令执行过程
条件跳步指令/跳步结束指令使用说明:
1.条件跳步/跳步结束指令必须成对使用,跳步目标必须一致。 如果只有条件跳步指令而无跳步结束指令,则执行时将被处理 为NOP。反之,如果只有跳步结束指令,则被处理为END指
11.S7-1200指令(比较、移位等)
5.1.1 比较指令——例1
注意比较指令针对的数据类型是Time
5.1.1 比较指令——例2
用比较和计数指令编写开关灯程序。要求灯控 按钮I0.0按下第一次,灯Q4.0亮,按下第二次, 灯Q4.0、Q4.1全亮,按下第三次灯全灭。如此 循环。
关键点:在程序中所用计数器为加法计数器,当加到3 时,必须复位计数器。
模拟量输入的规范化
规范化的最大最小值与模拟量输入 0.0和 1.0 之间的值,然 后将其换算到 0 到 27648 之间或 -27648 到 27648之间
模拟量输出的规范化
Scale的最大最小值与模拟量输出通道的极性有关
5.1.4 数据传送指令
“1”);若执行有误,则能流就此中止 ➢ ENO可作为下一个方框的EN输入
哪些指令有EN和ENO? 传送与转换指令、数学运算指令、移位与循环指令、字 逻辑运算指令
5.1.3 数据转换指令
• 几种数据转换指令
1)CONV 数据类型转换
2)浮点数取整 浮点数转换为双字整数
3)SCALE_X 按比例,将百分比小数(浮点数)变为整数
比较指令都可以等效为一个触点,因为比较
的结果仅有两种情况:TRUE or False
5.1.1 比较指令
5.1.1 比较指令
1)基本的比较指令
• 功能:比较数据类型相同的两个数IN1和IN2的大小有符 号数或无符号数的大小,进而输出。
• 两个要素:比较符、数据类型 ➢ 比较运算符有6种:==、>=、<=、>、< 和 <> ➢ IN1和IN2数据类型(按长度分):字节(有符号、 无符号)、字(有符号、无符号)、双字整数(有 符号、无符号)、实数、字符和字符串、时间等
移位指令的用法,举例说明
移位指令的用法,举例说明
计算机中的移位指令是一种重要的操作,它可以将二进制数字在
指定的方向上移动一定的位数。
下面我们就来具体了解一下这些指令
的用法和一些举例。
首先让我们来认识一下移位指令的类型。
移位指令分为两种类型:逻辑移位指令和算术移位指令。
逻辑移位指令包括左移和右移。
左移操作可以将数字向左移动指
定的位数,同时在右侧补0。
比如说我们要将数值111000进行左移三位,那么结果就是000111000。
而右移则是将数字向右移动指定的位数,同时在左侧补0。
比如我们要将数值101110进行右移两位,那么结果
就是001011。
另一种类型的移位指令是算术移位指令,包括算术左移和算术右移。
算术左移操作可以将数字向左移动指定的位数,同时在右侧补0,相当于乘以2的指定次幂。
比如我们要将数值10010进行算术左移两位,那么结果就是010000。
而算术右移则是将数字向右移动指定的位数,同时在左侧补上数字的符号位。
比如我们要将数值110100进行算
术右移三位,那么结果就是111110。
移位指令的用途十分广泛。
它不仅可以用在数字的处理上,还可
以用在数据结构中。
比如,我们可以利用移位操作实现位图的压缩和
解压缩。
在处理图像和声音等多媒体数据时,移位指令也是一个不可
或缺的工具。
总之,移位指令是计算机处理数据的重要工具之一。
它的灵活运用可以提升程序的运行效率,提高计算机的处理能力。
我们需要深入理解和掌握移位指令的使用方法,才能更好地应用它们来实现各种功能和算法。
汇编语言2-4逻辑移位指令
8086指令系统
一、数据传送类; 二、算术运算类; 三、位操作指令(逻辑运算和移位类); 四、串操作类; 五、控制转移类; 六、处理器控制类;
第 2章
8086指令系统
位操作指令,它们都是按位进行操作的包含逻辑运
算类指令和移位指令。 位操作类指令以二进制位为基本单位进行数据的操 作;这是一类常用的指令,都应该特别掌握 注意这些指令对标志位的影响 要求:全面而准确地理解每条指令的功能和应用 重点掌握以下指令:
第 2章
2、逻辑或指令OR
功能:对两个操作数执行按位逻辑或运 算,结果送到目的操作数
OR reg,imm/reg/mem ;reg←reg∨imm/reg/mem OR mem,imm/reg ;mem←mem∨imm/reg
说明:(1)按位逻辑或运算; (2)OR指令对操作数的限制和对标志位的影响; 思考: (1)某一个操作数自己和自己相逻辑或? 置某些位 (2)OR指令主要用在什么场合?
RCR reg/mem,1/CL
;带进位循环左移
;带进位循环右移
演示
第 2章
说明:循环移位指令
对操作数:同移位指令。 对标志的影响:
(1)按照指令功能设置进位标志CF (2)不影响SF、ZF、PF、AF (3)对于OF,同移位指令。如果进行一位移动, 则按照操作数的最高符号位是否改变,相应设置 溢出标志OF:如果移位前的操作数最高位与移位 后操作数的最高位不同(有变化),则OF = 1; 否则OF = 0。当移位次数大于1时,OF不确定
第 2章
例:移位指令
mov cl,4 mov al,0f0h ;al=f0h shl al,1 ;al=e0h ;CF=1,SF=1、ZF=0、PF=0,OF=0 shr al,1 ;al=70h ;CF=0,SF=0、ZF=0、PF=0、OF=1 sar al,1 ;al=38h ;CF=0,SF=0、ZF=0、PF=0、OF=0 sar al,cl ;al=03h ;CF=1,SF=0、ZF=0、PF=1 、OF=0
移位指令的学习
移位指令应用:6个灯循环点亮,即Q0.0---Q0.5每隔1秒点亮一个灯,周期循环。
移位指令应用:5台电机顺序启动,顺序停止,按下启动按钮I1.0,Q0.0---Q0.4顺序输出,按下停止按钮I1.1,Q0.0---Q0.4顺序熄灭。
移位指令应用:5台电机顺序启动,逆序停止,按下启动按钮I1.0,Q0.0---Q0.4顺序输出,按下停止按钮I1.1,Q0.4---Q0.0顺序熄灭。
移位指令应用:统计VW0里面有多少个二进制数1,将结果存入VW2;
移位指令应用:有7台空压机,每天运行6台休息1台,每24小时切换一次,若某台空压机出现故障时马上停机,休息的那台马上投入运行,直至故障解除后再循环切换,I0.0---I0.6为7台空压机的故障输入点,Q0.0---Q0.7为控制7台空压机的输出点,按下启动按钮I0.7,6台空压机每5秒顺序启动一台,按下停止按钮I1.0,6台空压机每5秒顺序停止一台。
PLC 移位指令
说明 位变量,例如M0.0、I0.1、Q0.4 占据1个字节,例如MB0、IB0、QB0 占据2个占据,例如 MW2、IW4、QW10 占据4个占据,例如 MD2、ID4、QD10 有符号整数,占据1个字节 有符号整数,占据2个字节 有符号整数,占据4个字节 无符号整数,占据1个字节 无符号整数,占据2个字节 无符号整数,占据4个字节 占据4个字节,有6位有效数字 占用8个字节,最多有15位有效数字
无符号值移位时,用零填充操作数左
侧区域中空出的位。如果指定值有符号,则 用符号位的信号状态填充空出的位。
右图说明了如何将整数数据类型操作数的内 容向右移动 4 位:
SHL:左移
左移指令,执行后,由于N=3,所以MB42当中的数将向左移动三位,数值由1变 成8
说明 可以使用“左移”指令将输入 IN 中 操作数的内容按位向左移位,并在 输出 OUT 中查询结果。参数 N 用于 指定将指定值移位的位数。 如果参数 N 的值为“0”,则将输入 IN 的值复制到输出 OUT 的操作数中。 如果参数 N 的值大于位数,则输入 IN 的操作数值将向右移动该位数个 位置。
存储区
说明
I、Q、M、D、L
使能输入
I、Q、M、D、L
使能输出
I、Q、M、D、L 或常数
要移位的值
I、Q、M、D、L 或常数 将对值进行移位的位数。
I、Q、M、D、L
指令的结果
移位指令的参数IN和OUT可以是一个变量,也可是也两个变量,如果是一个变量,
则指令执行一次,数据移位操作一次,如果是两个变量(输入和输出分别连接各自变 量),指令执行一次,OUT保存IN移位后的结果,再执行几次OUT变量的数据都不会改 变。
3-33 移位指令
5.9移位与循环指令
5.9移位与循环指令移位与循环指令在PLC 控制中常用,根据移位的数据长度可分为字节型移位,字型移位和双字型移位;根据移位的方向可分为左移和右移,还可进行循环移位。
注:移位指令在运用时,由于手的抖动很容易多次输入,建议加上上升沿指令,不易发生错误。
5.9.1位移指令位移指令将输入值右移或左移N位,并将输出结果装载到OUT中。
该指令有左移和右移两种。
根据所移位数的长度不同可分为字节型、字型和双字型。
移位数据存储单元的移出端与SM1.1(溢出)相连,所以最后被移出的位被放到SM1.1位存储单元。
移位时,移出位进入SM1.1,另一端自动补0。
如果移位操作使数据变为0,则零存储器标志位(SMl.0)自动置位。
1.左移指令表5- 左移指令功能描述:把字节型(字型或双字型)输人数据左移N位后,再将结果输出到OUT所指的字节(字或双字)存储单元,最后一次移出位保存在SM1.1中。
最大实际可移位次数为8位(16位或32位)。
2.右移指令表5- 右移指令功能描述:把字节型(字型或双字型)输人数据右移N位后,再将结果输出到OUT所指的字节(字或双字)存储单元,最后一次移出位保存在SM1.1中。
最大实际可移位次数为8位(16位或32位)。
【例5-3】字节左移六只灯(Q0.0~Q0.5),按下启动按钮(I0.0)时,六只灯按正方向顺序逐个点亮,每一时间只有一只灯亮。
灯亮的间隔时间为1秒。
按下停止按钮(I0.1),灯全灭。
5.9.2循环移位指令 (Rotate)循环移位指令包括循环左移和循环右移,循环移位位数的长度可以是字节、字或双字。
循环数据存储单元的移出端与另一端相连,同时又与SMl.1(溢出)相连,所以最后被移出的位移到另一端的同时,也被放到SMl.1位存储单元。
例如在循环右移时,移位数据的最右端位移入最左端,同时又进入SMl.1。
SMl.1始终存放最后一次被移出的位。
移位次数N与移位数据的长度有关,如N小于实际的数据长度,则执行N次移位。
循环移位指令
指令解读
应用注意
1. 连续执行型每个扫描周期都要执行一次, 因 此,最好使用脉冲执行型指令ROLPo
2. 当终址D使用组合位元件时位元件的组数在 16位指令ROL时为K4;在32位指令DROL时为K8,否 则 指令不能执行。
编程示例
试用循环指令编制如下流程的应用程序。有5 个灯,启动后,先是按照顺序轮流各自亮Is,全 部一 起亮5s,如此反复循环。
2. 当终址D使用组合位元件时位元件的组数在 16位指令ROR时为K4;在32位指令DROR时为K8,否 则 指令不能执行。
编程示例
有A, B, C三个灯,(代表“欢迎您”三个 字),控制要求是A, B, C各轮流亮1秒钟,然后 一 起亮1秒钟,如此反复循环。
设计思路
您迎欢 您 迎
Y17 Y16
xooo
0T 6H
xooo
T
X001
____ቤተ መጻሕፍቲ ባይዱ_ ______ ______
_
{MOW KI
K4Y000
10 H
M1
[MOVP KO
K4Y000
T
17 H
25
XOMOllM8013
T IIF
Y006
34
[RST YOOO
Y006
訓~ ROLP K4Y000 KI
Y1~Y5轮流输出1 ------[MOVP H7F K4Y000
D10中低4位送丫0~¥调 出
EXD
二、循环左移指令ROL
指令格式
操作数
内容与取值
D.
循环左移数据存储字元件地址。
循环移动位数,16位循环移位指令(n<16) ; 32位循环
n
移位指令(n<32)。
汇编言语——移位指令
(2)操作数d2 表示移动的位数,只能是立即数1或者寄 存器CL,当移动位数超过1位时,必须把移动位数放在CL 中,以CL作为d2操作数。 (3)操作数d1各位移动的情况如图7.1所示,从最高位起, 将有d2位移到操作数d1之外,除了最后移出的一位放到标志 位CF中之外,5/7 14/6 …… CF 操作数d1 1 0 0
(4)移动后d1中的数据是在其原值的后面加了d2个0,即 把原数值扩大了倍,当扩大后的值超过表示范围时,超过d1 类型(字节或字)规定位数的高位部分会自动丢失。 (5)该指令对其余标志位的影响情况是:移动后的结果 为0则ZF置1,否则ZF清0;移动后d1最高位的值会复制到SF 上;如果移动前后d1的最高位不同则OF置1,否则OF清0。 移位指令涉及数值计算问题,但并不复杂。比如AX的值是 8D56H,CL的值是3,则下面几条指令是SHL指令的正确用 法,后面也给出了移位后的结果: SHL SHL SHL SHL AL,1 移位后,AL = 0ACH,CF = 0,AH不变 AX,1 移位后,AX = 1AACH,CF = 1 AH,CL 移位后,AH = 68H,CF = 0,AL不变 AX,CL 移位后,AX = 6AD0H,CF = 0
7.1 移位指令
7.1.1 逻辑左移 【指令格式】SHL d1, d2 【功能】把操作数d1的各个二进制位依次向左移动d2位, 移动造成右边的空位填0,结果放回操作d1中。 【说明】 (1)操作数d1必须是通用寄存器或内存型寻址方式,必须 有确定的类型,可以是字节型,也可以是字型,并且对内存型 寻址方式可以使用段跨越。
位号:15/7 14/6 …… 操作数d1
……
1
0
CF
图7.3 算术右移指令SAR的功能
第六章5循环移位指令
• 带进位循环右移RCR(Rotation Right with Carry) • 带进位循环左移RCL(Rotation Left with Carry)
执行这两条指令时,各位的数据与进位位M8022一起(16位指令时一共17
位)向右(或向左)循环移动n位(见图)。
三、位右移和位左移指令 • 位右移SFTR(Shift Right) • 位左移 SFTL(Shift Left) 操作数 [S]: X、Y、M、S [D]:Y、M、S
实现位元件中的状态成 组地向右或向左移动
说明: 位元件组的长度由n1指定,n2指定移 动的位数。
梯形图
图中X010由OFF变为ON时,位右移指令(3位1组)按以下顺序移位:M2~M0中 的数溢出,M5~M3→M2~M0,M8~M6→M5~M3,X002~X0000→M8~M6。 图b中的X010由OFF变为ON时,位左移指令按图中所示的顺序移位。
Y2 0 0 0 1 1 0 0
Y1 0 0 1 1 0 0 1
Y0 0 1 1 0 0 1 1
M0 1 1 0 0 1 1 0 循 环
(c)四台水泵运行梯形图
图
四台水泵轮流工作实例
2.位左移指令SFTL举例
【例题】 位左移指令SFTL的程序梯形图如图所示。设Y17~Y0的初 始状态为0,X3~X0的位状态为1011。求数次执行位左移指令SFTL后, Y17~Y0各位状态的变化。
(1)位右移说明: 当操作条件满足时,位右移指令在n1个指定目标位元件中,右移n2个指 定的源元件位元件状态。即n2位[S.] 状态右移到n1位[D.],从n1位目标元件 的高位进去,而其低位溢出。 上述的示例程序操作。位右移的目标元件为:M10~M25,源元件为: X0~X1,当X1由“0”变“1”时,X1、X0的状态传到M25、M24,原来的 M25、M24移到M23、M22…以此类推,M11、M10丢失。由图示的方法说 明状态的变化。 由于连续型操作,每个扫描周期都进行操作,合上一瞬间,就把原操作数状 态都移位了。建议使用SFTRP,SFTLP,便于控制。
