移位与循环移位指令--习题
课堂练习:
22.设AX=3762H,CL=5,执行“SHR AX,CL”后,AX=()。
A.0376H B.01BBH C.01BB D.0376
28.执行“DIV BX”指令后,()寄存器中存放商。
A.AL B.AH C.AX D.DX
24.若移位指令的移位位数大于1时,其移位位数必须放在中。
25.如果AL=85H,CL=4,执行“SAR AL,CL”时,AL= ,CF= 。
6.设BX=8234H,请说明下列两条指令的区别,执行下列各指令后BX中的内容是什么?
SHR BX,1
SAR BX,1
6.现有程序段如下:
MOV BL,AL
MOV CL,4
SHR BL,CL
MOV A,BL
AND AL,0FH
MOV B,AL
请回答:(1)该程序段完成的功能是什么?
(2)如果AL的初值为56H,则A= ,B= 。
8.现有程序段如下:
MOV AX,M
MOV DX,N
SHR DX,1
RCR AX,1
请回答:(1)该程序段完成的功能是什么?
(2)若M=1234H,N=5678H,程序运行后DX= ,AX= 。
9.现有程序段如下:
XOR AX,AX
MOV AX,6342H
MOV CX,0404H
ROL AH,CL
XCHG CH,CL
ROR AL,CL
请回答:(1)该程序段执行后AX= 。
(2)CF= 。
11.现有程序段如下:
MOV CX,16
MOV BX,0
MOV DX,1
L:MOV AX,9AB8H
AND AX,DX
JZ N
INC BX
N:SHL DX,1
LOOP L
MOV M,BX
请回答:(1)该程序段完成的功能是什么?
(2)该程序段执行完后(M)= 。
14.现有程序段如下:
MOV AL,0
MOV BL,1
MOV CX,10
L:ADD AL,BL
INC BL
LOOP L
请回答:(1)该程序段完成的功能是什么?
(2)该程序执行完后,AL= 。
5.将DX:AX:BX中的48位数乘以2。
9.将DX:AX中的32位数据逻辑左移2位。
答案============================================================
课堂练习:
22.设AX=3762H,CL=5,执行“SHR AX,CL”后,AX=()。
A.0376H B.01BBH C.01BB D.0376
28.执行“DIV BX”指令后,()寄存器中存放商。
A.AL B.AH C.AX D.DX
24.若移位指令的移位位数大于1时,其移位位数必须放在中。
CL
25.如果AL=85H,CL=4,执行“SAR AL,CL”时,AL= ,CF= 。
0F8H 0 6.设BX=8234H,请说明下列两条指令的区别,执行下列各指令后BX中的内容是什么?
SHR BX,1
SAR BX,1
参考:SHR是逻辑右移指令,移位后空出的位补0,而SAR是算术右移指令,最高位保持不变,其他位右移一位。
SHR BX,1执行后BX=411AH,执行SAR BX,1后BX=0C11AH。
6.现有程序段如下:
MOV BL,AL
MOV CL,4
SHR BL,CL
MOV A,BL
AND AL,0FH
MOV B,AL
请回答:(1)该程序段完成的功能是什么?
(2)如果AL的初值为56H,则A= ,B= 。
6.(1)将AL中的八位数分高低4位分别存放在A和B中。
(2)A=05H,B=06H
8.现有程序段如下:
MOV AX,M
MOV DX,N
SHR DX,1
RCR AX,1
请回答:(1)该程序段完成的功能是什么?
(2)若M=1234H,N=5678H,程序运行后DX= ,AX= 。
8.(1)将M:N中的32位右移一位。
(2)DX=091AH,AX=2B3CH
9.现有程序段如下:
XOR AX,AX
MOV AX,6342H
MOV CX,0404H
ROL AH,CL
XCHG CH,CL
ROR AL,CL
请回答:(1)该程序段执行后AX= 。
(2)CF= 。
9.(1)3624H
(2)CF=0
11.现有程序段如下:
MOV CX,16
MOV BX,0
MOV DX,1
L:MOV AX,9AB8H
AND AX,DX
JZ N
INC BX
N:SHL DX,1
LOOP L
MOV M,BX
请回答:(1)该程序段完成的功能是什么?
(2)该程序段执行完后(M)= 。
11.(1)统计9AB8H中为1的位数。
(2)M=8
14.现有程序段如下:
MOV AL,0
MOV BL,1
MOV CX,10
L:ADD AL,BL
INC BL
LOOP L
请回答:(1)该程序段完成的功能是什么?
(2)该程序执行完后,AL= 。
14.(1)实现1+2+3+……+10
(2)37H(55)
5.将DX:AX:BX中的48位数乘以2。
5.SAL BX, 1
RCL AX, 1
RCL DX, 1
9.将DX:AX中的32位数据逻辑左移2位。
9.SHL AX, 1
RCL DX, 1
SHL AX, 1
RCL DX, 1。
PLC题库
1.左、右移位指令是()A.RL与RRB.ROL与RORC.SFTL与SFTRD.SHL与SHR2.下面程序中,若VB0的值为5,则I0.0变“ON”后,Q0.7~Q0.0的值分别为:( )A.0000 1000B.0000 1001C.0000 0101D.0000 10113.对S7-200系列PLC,输入公共端M与哪种电压相连?( )A.0VB.+12VC.+24VD.-24V4.工业控制中,PLC直流控制电压一般为多少伏?( )A.AC110VB.DC24VC.DC36VD.AC220V5.下面程序中,若CO的当前值为5,则I0.0变“ON”后,Q0.0、Q0.1、Q0.2的状态分别为( )A.Q0.0为0、Q0.1为0、Q0.2为1B.Q0.0为1、Q0.1为0、Q0.2为0C.Q0.0为0、Q0.1为1、Q0.2为0D.Q0.0为1、Q0.1为0、Q0.2为16.加法指令格式为()A.MULB.ADDC.DIVD.SUB7.在SCR指令段中,如S0.1原处于接通的状态,当转移条件成立后,使S0.2接通,那么S0.1应是()A.接通B.复位C.状态由S0.2下步决定D.不定8.S7-200PLC,数据块数据传送,可采用哪种指令?( )A.BMBB.MOVBC.SLBD.PID9.对S7-200系列PLC,两个16位数整数相乘,产生一个32位的输出结果,应采用哪种指令。
( )A.ADDB.SUBC.DIVD.MUL10.由于PLC执行指令的速度很快,因此通常用执行()步指令所需要的时间来衡量PLC的速度。
A.800B.900C.1000D.150011.使用哪个命令,输出Q、M仅在驱动接通后的一个扫描周期内动作?( )A.LRDB.LPSC.EDD.EU12.要使定时器T、计数器C等元件中的状态位清零,可使用那一条指令( )A.SB.RC.LRDD.LPP13.顺序功能图的三要素是指()A.步、顺序、状态B.顺序、状态、条件C.顺序、转换、动作D.步、转换、动作14.左、右循环移位指令是()A.RCL与RCRB.ROL与RORC.SFTL与SFTRD.WSFL与WSFR15.下面指令中能实现10s定时的为:( )A.LD I0.0TON T37, +1B.LD I0.0TON T33, +10C.LD I0.0TON T42, +100D.LD I0.0TON T55, +1016.如下梯形图对于的时序关系,下列选型中()正确A BA.上述A选项B.上述B选项C.上述C选项D.上述D选项17.下图中时序图对于的梯形图为()ABCDA.上述A选项B.上述B选项C.上述C选项D.上述D选项18.减法指令格式为()A.MULB.ADDC.DIVD.SUB19.空指令的取值范围为()A.0~127B.0~255C.1~256D.1~32767B20.置位/复位指令的取值范围为()A.0~127B.0~255C.1~256D.1~32767B21.()是步进结束指令A.SCRB.LSCRC.SCRTD.SCRED22.()是步进跳转指令A.SCRB.LSCRC.SCRTD.SCREC23.()是步进开始指令A.SCRB.LSCRC.SCRTD.SCREB24.步进顺序控制的初始步用()激活A.SM0.0B.SM0.1C.SM0.4D.SM0.5B25.已知某PLC控制系统需要8点输入,6点输出,那么选择PLC时,其输入输出点数分别为()A.8、6B.10、10C.10、8D.8、10C26.起-保-停电路最主要特点是具有“记忆”功能,如下图所示,起到停止功能的触点是()A.I0.0B.I0.1C.Q0.0D.以上都不是B27.起-保-停电路最主要特点是具有“记忆”功能,如下图所示,起到启动功能的触点是()A.I0.0B.I0.1C.Q0.0D.以上都不是A28.起-保-停电路最主要特点是具有“记忆”功能,如下图所示,起到保持功能的触点是()A.I0.0B.I0.1C.Q0.0D.以上都不是C29.堆栈指令可以嵌套使用,最多为()层A.8B.9C.255D.无数B30.乘法指令格式为()A.MULB.ADDC.DIVD.SUBA31.块指令支路数量为()A.8B.9C.255D.无数C32.( )指令用于并联多个串联组成的电路块,表示块的“或”操作A.ALDB.OLDC.AD.OB33.()指令用于串联多个并联组成的电路块,表示块的“与”操作A.ALDB.OLDC.AD.0A34.()是局部变量寄存器A.LB.VC.ID.AIA35.()是变量寄存器A.LB.VC.ID.AIB36.只能与步进指令配合使用的是()软元件A.MB.SMC.ID.SD37.输出指令(=)不能用于()A.MB.SMC.ID.QC38.SM0.5为占空比50%、周期为()时钟脉冲A.1msB.100msC.1sD.1minC39.SM0.4为占空比50%、周期为()时钟脉冲A.1msB.100msC.1sD.1minD40.VD0表示含义中下列()不正确A.VW0~VW1B.VB0~VB4C.V0.0~V3.7D.V0~V4D41.以下说法正确的有()A.PLC输出使用的DC24V电源由PLC本身提供B.PLC的外部负载可由输出继电器驱动C.PLC之间的通讯方式主要是串行通信D.影响PLC扫描周期长短的因素包括程序长度和CPU处理速度E.以上答案都是错误的BCD42.以下说法错误的有()A.工业中控制电压一般是36伏B.PLC的多个线圈可以并联也可以串联C.两个软元件线圈可以并联,更多个则不可以D.PLC的自检过程是在每次开机通电时完成的E.以上答案都是错误的ABCD43.以下说法正确的有()A.PLC可以向扩展模块提供24V直流电源B.在PLC的寻址方式中,W表示字,一个字占8位C.PLC地址单元一般占用两个字节D.PLC有一个24V的内置电源E.以上答案都是错误的AD44.PLC具有许多独特的优点,其中包括()A.可靠性高、抗干扰能力强B.编程简单、使用方便C.功能完善、通用性强D.设计安装简单、维护方便E.以上答案都是错误的ABCD45.下列编程元件中,LD指令能操作的编程元件有()A.I、QB.M、CC.T、SD.DE.以上答案都是错误的ABC46.以下说法错误的有()A.PLC的最大I/O点数并没有限制B.PLC是专门用来完成逻辑运算的控制器C.PLC的抗干扰能力高于微型计算机、单片机、工控机D.PLC的输出形式是继电器接点输出E.以上答案都是错误的ABD47.PLC的发展方向可向着()A.小型化B.智能化C.高速化D.多功能E.以上答案都是错误的ABCD48.PLC的应用领域有()A.开关量逻辑控制B.运动控制C.数据处理D.闭环过程控制E.以上答案都是错误的ABCD49.PLC的结构形式有()A.整体式B.叠装式C.分隔式D.模块式E.以上答案都是错误的ABD50. 下面关于S7-200系列PLC的触点串联指令A、AN的叙述中正确的是: ()A.AN指令用于单个触点的串联连接,串联的数不能超过5个B.A常用于串联常开触点C.AN常用于串联常闭触点D.在OUT指令之后,可以通过串联触点对其它线圈进行驱动E.以上答案都是错误的BC51.PLC的继电器输出方式即可以驱动交流负载又可以驱动直流负载对52.PLC的双向晶闸管输出方式可以驱动交流负载对53.对于输入继电器,编程时应注意,其线圈只能由外部信号来驱动,故而在梯形图中不应出现输入继电器的线圈。
S7-200 SMART移位和循环移位运算指令怎么用?
S7-200 SMART移位和循环移位运算指令
移位指令
S7-200 SMART移位指令分为左、右移位、循环左、右移位及寄存器移位指令三大类。
前两类移位指令按移位数据的长度又分字节型、字型、双字型3种。
下图所示为移位指令梯形图:
图1. 移位指令:
移位与循环指令相关视频教程的链接如下:
如下为一个移位和循环移位实例:
图2.移位和循环移位程序图
其中:
I4.0上升沿触发
FOR_W为字循环右移
SHL_W为字左移
其移位和循环移位的过程可由下图进一步说明:
图3.移位和循环移位过程说明图
For Next 循环
程序循环结构用于描述一段程序的重复循环执行。
由 FOR和NEXT指令构成程序的循环体。
FOR指令标记循环的开始,NEXT指令为循环体的结束指令。
图4.For Next 循环
其中:
INIT,FINAL分别定义起始值和结束值。
使能输入EN有效,循环体开始执行,执行到NEXT指令时返回,每执行一次循环体,当前值计数器INDX增1,达到终止值FINAL时,循环结束。
使能输入无效时,循环体程序不执行。
每次使能输入有效,指令自动将各参数复位。
注意:使用 FOR 和 NEXT 指令可在重复执行分配计数的循环中执行程序段。
每条 FOR 指令需要一条 NEXT 指令。
For Next 编程实例
图5.For Next 循环循环程序图
使用状态表监控程序的运行如下图所示
图6.状态监视图
如上表所示,VW100值为4, INDEX大于终止值,循环终止。
微机原理课后习题参考答案
微机原理课后习题参考答案第1部分微型计算机基础知识1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?【解】微处理器:指计算机内部对数据进行处理并对处理过程进行控制的部件,伴随着大规模集成电路技术的迅速发展,芯片集成密度越来越高,CPU可以集成在一个半导体芯片上,这种具有中央处理器功能的大规模集成电路器件,被统称为“微处理器”。
微型计算机:简称“微型机”、“微机”,也称“微电脑”。
由大规模集成电路组成的、体积较小的电子计算机。
由微处理机(核心)、存储片、输入和输出片、系统总线等组成。
特点是体积小、灵活性大、价格便宜、使用方便。
微型计算机系统:简称“微机系统”。
由微型计算机、显示器、输入输出设备、电源及控制面板等组成的计算机系统。
配有操作系统、高级语言和多种工具性软件等。
1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?【解】CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。
1.3 微型计算机采用总线结构有什么优点?【解】①简化了系统结构,便于系统设计制造;②大大减少了连线数目,便于布线,减小体积,提高系统的可靠性;③便于接口设计,所有与总线连接的设备均采用类似的接口;④便于系统的扩充、更新与灵活配置,易于实现系统的模块化;⑤便于设备的软件设计,所有接口的软件就是对不同的口地址进行操作;⑥便于故障诊断和维修,同时也降低了成本。
总线的逻辑电路有些是三态的,即输出电平有三种状态:逻辑“0”,逻辑“1”和“高阻”态。
1.4计算机总线有哪些,分别是什么?【解】总线按其信号线上传输的信息性质可分为三组:①数据总线,一般情况下是双向总线;②地址总线,单向总线,是微处理器或其他主设备发出的地址信号线;③ 控制总线,微处理器与存储器或接口等之间1.5 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总线或者合用部分总线,那么要靠什么来区分地址和数据?【解】数据总线(DB)为双向结构,数据在CPU与存储器或I/O 接口之间的传送是双向的,(数据既可以读也可以写),其宽度通常与微处理器的字长相同。
微机原理习题解答:4
微机原理习题解答:4习题四1.8086语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快?答:数据操作数的寻址方式有七种,分别为:立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对基址变址和相对基址变址寻址。
其中寄存器寻址的指令执行速度最快。
2.若DS=6000H,SS=5000H,ES=4000H,SI=0100H,BX=0300H,BP=0400H,D=1200H,数据段中变量名NUM的偏移地址为0050H,试指出下列源操作数的寻址方式和物理地址是多少?(1)MOV AX,[64H]答:寻址方式为直接寻址;PA=60064H(2)MOV AX,NUM 答:寻址方式为直接寻址;PA=60005H (3)MOV AX,[SI]答:寻址方式为寄存器间接寻址;PA=60100H (4)MOV AX,[BX]答:寻址方式为寄存器间接寻址;PA=60300H (5)MOV AX,[BP]答:寻址方式为寄存器间接寻址;PA=50400H (6)MOV AL,[DI]答:寻址方式为寄存器间接寻址;PA=61200H (7)MOV AL,[BX+1110H]答:寻址方式为寄存器相对寻址;PA=61410H (8)MOV AX,NUM[BX]答:寻址方式为寄存器相对寻址;PA=60305H (9)MOV AX,[BX+SI]答:寻址方式为基址变址寻址;PA=60400H(10)MOV AX,NUM[BX][DI]答:寻址方式为相对基址变址寻址;PA=61505H3.设BX=637DH,SI=2A9BH,位移量为C237H,试确定由这些寄存器和下列寻址方式产生的有效地址。
(1)直接寻址答:有效地址为EA=C237H(2)用BX的寄存器间接寻址答:有效地址为EA=637DH(3)用BX的相对寄存器间接寻址答:有效地址为EA=125B4H (4)基址加变址寻址答:有效地址为EA=8E18H(5)相对基址变址寻址答:有效地址为EA=1504FH其中,(3)和(5)中产生进位,要把最高位1舍去。
plc位移位和循环移位指令
plc位移位和循环移位指令PLC(可编程逻辑控制器)是一种常用于工业自动化控制系统的设备,它能够通过编程实现各种复杂的逻辑运算和控制功能。
在PLC 的指令集中,位移位和循环移位指令是两个重要的指令类型,它们在程序设计和运行中起到了重要的作用。
位移位指令是PLC中常用的一种操作指令,它用于将数据在字节或位级别上进行移动。
位移位指令通常用于对数据进行分解、合并、排序等操作。
位移位指令有两种形式:字节位移和位位移。
字节位移指令用于将字节数据在字节级别上进行移动。
例如,我们可以使用字节位移指令将一个16位的数据分成两个8位的数据,或者将两个8位的数据合并成一个16位的数据。
通过字节位移指令,我们可以实现对数据的有序排列和组合,从而方便后续的逻辑运算和控制。
位位移指令用于将数据在位级别上进行移动。
例如,我们可以使用位位移指令将一个8位的数据的某个位移到另一个位置,或者将多个位进行组合和拆分。
位位移指令通常用于对数据的某一位进行操作,例如将某一位设置为1或0,或者将某几位数据进行逻辑运算。
循环移位指令是另一种常用的PLC指令,它用于将数据在位级别上进行循环移动。
循环移位指令可以将数据按照指定的次数进行循环移动,从而实现对数据的循环操作。
循环移位指令有两种形式:循环左移和循环右移。
循环左移指令将数据的位从低位开始循环左移,即将最高位数据移动到最低位。
这样,数据的位在左移的过程中会循环移动,最后将最高位数据移动到最低位,从而实现数据的循环左移。
循环右移指令将数据的位从高位开始循环右移,即将最低位数据移动到最高位。
这样,数据的位在右移的过程中会循环移动,最后将最低位数据移动到最高位,从而实现数据的循环右移。
位移位和循环移位指令在PLC程序设计和运行中有着广泛的应用。
它们可以实现对数据的灵活处理和操作,从而满足不同的控制需求。
例如,在温度控制系统中,我们可以使用位移位和循环移位指令对传感器采集到的温度数据进行处理和判断,从而实现对温度的精确控制和调节。
循环移位与移位指令
案例 数码管显示控制
用PLC控制七段数码管循环显示数字 0~9,显示间隔1s。
LED数码管工作原理 数码管工作原理
a b c
ad
e
f
g
a
b c
d e
f
g
f g
b
COM( ) ( COM(+) ( )
a e
R U I
c
d
COM
U′
U - U′ R= I
一、硬件设计
LED显示控制 显示控制PLC的I/O点分配表 显示控制 的 点分配表
字右移位指令WSFR、字左移位指令 WSFL
助记符 WSFR FNC36 字右移 WSFL FNC37 字左移 功 能 把源元件状态存 放到字栈中,堆 栈右移 把源元件状态存 放到字栈中,堆 栈左移 操 作 [S.] KnX、 KnY、 KnM、 KnS、 T、C、 D [D.] 数 n1 n2 程 序 步
梯形图
二、软件设计
脉冲 0 1 2 3 4 5 6 7 8 9 M4 0 0 0 0 0 1 1 1 1 1 M3 M2 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 M1 0 0 1 1 1 1 1 0 0 0 M0 0 1 1 1 1 1 0 0 0 0 S0 1 1 1 1 1 0 0 0 0 0
七 段 码 显 示 真 值 表
数字 aY0 bY1 cY2 dY3 eY4 fY5 gY6 0 1 2 3 4 5 6 7 8 9 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 1
FX系列PLC的循环移位与移位指令
RCL、 RCLP… 5步
DRCL、 DRCLP… 9
步
带进位循环左移指令使16位、32位数据连同进位一起向右循环移位“n”
位。
如果M8022在执行循环指令前ON,则循环中的进位标志被送到目标。
X0
[D.]
n
FNC33 RCL(P) D0
K4
当X0由OFF→ON时,[D]内各位数据向左移n位,最后一次从最低位移
SFRD指令是先进先出控制的数据读出指令
程序步 n
K、H 2≤
n≤512
SFWR、 SFWR
P… 7步
X1
[S.] [D.] n
FNC39 SFRD (P)
D0
D20
K10
当X1由OFF→ON时,将D1的数据传送到D20内,与此同时,指针D0 的内容减1,D2~D9的数据向右移。
当X0再由OFF→ON时,即原D2中的内容传送到D20内,D1的内容再 减1。依此类推,数据总是从D1读出。当D1的内容为0,则上述操作不再 执行,零标志M8020动作。
D(•)
KnY、 KnM、
KnS 、T、 C、
D、V、Z
n
K、H 移位量 n≤16 (16位) n≤32 (32位)
程序步
ROR、 RORP… 5步
DROR、 DRORP… 9 步
X0
[D.]
n
FNC30 ROR(P) D0
K4
当X0由OFF→ON时,[D]内各位数据向右移n位,最后一次从最低位移出的 状态也存于进位标志M8022中。
操作数范围
D(•)
n
KnY、 KnM、
KnS 、T、 C、
D、V、Z
K、H 移位量 n≤16 (16位) n≤32 (32位)
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次移位。
keilC中的循环移位
一:C语言实现循环移位:比如将a=0x45循环左移二位。
a循环左移n位,即将原先右面(8-n)位左移n 位,而将原先左端的n位移到最右面n位。
实现步骤:1、将a的左端n位先放到b中的高n位中b=>>(8-n);2、将a左移n位,其右面高n位被补0c=<<n; //<<或>>是不带循环的移位3、将b,c进行或运算a=c|b;程序如下:main(){unsigned char a=0x45,b,c;unsigned int n=2;b=a>>8-n)c=a<<n;a=c|b;}二:Keil C言实现循环移位在Keil C51中有如此一个库,其头文件为<intrins.h>在C51\INC目录下,有以下几个操作,它不是函数,但象函数,它们有入口出口,可是,没有返回RET 语句,若是有这些操作,用disassembly窗口能够看到是将代码直接嵌入到你的代码中,其效率很高,比如一个空操作,_nop_() 嵌入的代码确实是一个NOP指令。
在那个库中,有如下操作:unsigned char _chkfloat_(float val) 检查浮点数状态返回值:0: standard floating-point numbers1: Floating-point value 02:+INF (positive overflow)3:-INF (Not a number) error statusunsigned char _crol_( //字节的多次循环左移unsigned char c, //C左移的字符unsigned char b);//b左移的位数unsigned char _cror_( //字节的多次循环右移unsigned char c, //C右移的字符unsigned char b);//b右左移的位数unsigned int _irol_ ( //字的循环左移unsigned int c, //c左移的字unsigned char b);//b左移的次数unsigned int _iror_ ( //字的循环右移unsigned int c, //c右移的字unsigned char b);//b右移的次数unsigned long _lrol_ ( //4字节(双字)的循环左移unsigned long c,//c左移的双字unsigned char b);//b左移的次数unsigned long _lror_ ( //4字节(双字)的循环右移unsigned long c,//c右移的双字unsigned char b);//b右移的次数void _nop_ (void); //NOP 8051中的空操作bit _testbit_ (bit b);//8051中的JBC指令,测试b,然后清0,返回b 的值。
5循环及移位指令
3.指令格式及功能
(1)
循 环 右 移 说 明 (一)
(1) 循环右移说明(二) 执行条件成立,[D.]循环右移n位。[D.]高位n位右 移,[D.]中原高位n位同时右移,以此类推,[D.]中低位 n位移至[D.]中的高位n位。每次执行循环右移n位的最 后一位影响标志位M8022(进位标志)。
(3)执行图5-45,当X0闭合,D10的值为245。图5-46给出运行的情况,图(a)中,当X1 闭合1次,执行ROR指令1次,D10右移3位。此时D10=-24546。同时进位标志M8022 为“1”。当X1再闭合1次,再执行ROR指令1次,D10右移3位。此时D10=-11261。同 时进位标志M8022为“1”。图(b)中,当X2闭合,执行ROL指令1次,D10的各位左移2 位,此时D10=980。同时进位标志M8022为“0” X2再闭合,再执行ROL指令1 次,D10的再左移2位,此时D10=3920。同时进位标志M8022为“0”。
图5-57 字右移和字左移命令
(2)执行图5-57,为X0闭合,D3、D2、D1、D0的值分别为40、30、20、10。 当X1闭合一次,执行WSFR命令,D25、D24、D23、D22分别为40、30、20、 10;X1再闭合一次,则D21、D20、D19、D18分别为40、30、20、10,而D25~ D22保持原移入值不变。 当X1再闭合一次,则D17、D16、D15、D14分别为40、30、20、10,而D25~ D18保持原移入值不变,当X1再闭合一次,D13、D12、D11、D10分别为40、30、 20、10。而D25~D14保持原移入值不变。 (3)WSFL执行情况与(2)相同,但当X3闭合一次,X0、X1、X2、X3分别为10、 20、30、40 (4)WSFR、WSFL控制触点,最好采用脉冲触点指令,如图5-57所示
