指令的种类
- 格式:pptx
- 大小:3.59 MB
- 文档页数:16


PLC根本指令一览表
第一节 根本指令的种类
根本指令一览表 :根本指令 . 步进梯形图指令 FX1S可编程序控制器的根本顺控指令和步进梯形图指令
的种类及其功能以下所示 :
助记符 功 能 格式和操作软元件
LD 常开触点逻辑运算初步 ( 常开触点与
取 左母线连结 )
LDI 常闭触点逻辑运算初步 ( 常闭触点与
取反 左母线连结〕
LDP 上升沿检测 ( 检测到信号的上升沿时
取脉冲 闭合一个扫描周期 )
上升沿
LDF 下降沿检测 ( 检测到信号的下降沿时
取脉冲 闭合一个扫描周期 )
下降沿
AND 串通连结 ( 常开触点与其他触点或触
与 点组串通连结 )
ANI 串通连结 ( 常闭触点与其他触点或触
与非 点组串通连结 )
ANDP 上升沿串通连结 ( 检测到位软元件上
与脉冲 升沿信号时闭合一个扫描周期 )
上升沿
ANDF 下降沿串通连结 ( 检测到位软元件下
与脉冲 降沿信号时闭合一个扫描周期 )
下降沿
OR 并联连结 ( 常开触点与其他触点或触
或 点组
并联连结 )
ORI 并联连结 ( 常闭触点与其他触点或触
或非 点组并联连结 )
ORP 脉冲上升沿检测并联连结 ( 检测到位
或脉冲 软元件上升沿信号时闭合一个扫描
上升沿 周期 )
ORF 脉冲下降沿检测并联连结 ( 检测到位
或脉冲 软元件下降沿信号时闭合一个扫描
下降沿 周期 )
ANB 并联电路块的串通连结 ( 电路块与其
电路块与 他触点或触点组串通连结 )
ORB 串通电路块的并联连结 ( 电路块与其
电路块或 他触点或触点组并联连结 )
OUT 线圈驱动
输出
SET 使线圈接通并保持动作 PLC根本指令一览表
置 1
RST 使线圈断开 , 除掉动作保持 , 存放器
复零 清零
PLS 上升沿微分输出 ( 当检测到输入脉冲
指 令 执 行 的 控 制 列 表
序号 输入数据 SW-B S3 S2 S1 S0 M LDAR ALU-B(299-B) LDDR1 LDDR2 R0-B
(CN) LDR0
(LDPC) RAM LED 脉冲信号 CE
(SWB) WE LED-B WE
(1) 25 0 0 0 0 0 0 0 1 0 0 1 1 1 ╳ 0 1 1
(2) 10 0 0 0 0 0 0 1 1 0 0 1 0 1 ╳ 0 1 1
(3) 36 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1
(4) 1 0 0 0 0 0 0 1 1 0 0 0 1 ╳ 0 1 1
(5) 10 0 0 0 0 0 0 1 1 0 0 1 0 1 ╳ 0 1 1
(6) 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1
(7) 1 1 0 0 1 0 0 0 0 0 1 1 1 ╳ 0 1 1
(8) 1 1 0 0 1 0 0 0 0 0 1 1 1 ╳ 0 1 1
一、数据传输指令
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。
1. 通用数据传送指令
MOV 传送字或字节.
MOVSX 先符号扩展,再传送.
MOVZX 先零扩展,再传送.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
BSWAP 交换32位寄存器里字节的顺序
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )
XADD 先交换再累加.( 结果在第一个操作数里 )
XLAT 字节查表转换.
── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
2. 输入输出端口传送指令.
IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
其范围是 0-65535.
3. 目的地址传送指令.
LEA 装入有效地址.
例: LEA DX,string ;把偏移地址存到DX.
LDS 传送目标指针,把指针内容装入DS.
例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
LES 传送目标指针,把指针内容装入ES.
汇编总结:mov指令
mov指令的作⽤:
mov指令可能是汇编⾥⽤的最多的指令了,完成c语⾔⾥的赋值。
mov指令种类:
1.普通的mov指令
2.做符号扩展的movs
3.做零扩展的movz
1.普通mov的种类有:
movb #完成1个字节的复制
movw #完成2个字节的复制
movl #完成4个字节的复制
movq #完成8个字节的复制
2.movs的种类以及为什么要符号扩展指令?
1.为什么要⽤符号扩展指令
如果要完成下⾯的c语⾔代码
char c = -1;
int i = c;
如果翻译成下⾯的汇编代码,会发现⼀个问题
⽤movb把%al寄存器⾥的-1,复制到%ebx寄存器,结果变成了255。等等,为什么会这样?
.section .text
.global _start
fmt:
.ascii "%d\n\0"
_start:
movb $-1, %al #把-1赋值到寄存器al
xorl %ebx, %ebx #把寄存器%ebx 赋值为0
movb %al, %bl #把al的值赋值到%ebx寄存器的低8位 (引⽤%ebx寄存器低8位的⽅法就是使⽤%bl寄存器)
xorq %rax, %rax
movl %ebx, %esi
movq $fmt, %rdi
call printf #调⽤printf 打印ebx寄存器的内容,会发现输出变成了255
movl $0, %edi #调⽤exit退出进程
call exit
接上段,学过原码,补码,反码的同学知道,在⼆进制的⾓度看待⼀个数。其在内存中表⽰正数,表⽰负数,依赖机器是怎么解释最⾼bit位
的1。c语⾔⾥⾯signed类型,如果最⾼bit为1,认为它是⼀个负数。unsigned类型,始终认为是正数。
回到刚刚的-1变成255的问题。
作为⽤户,只想在由char 类型转为int,输出还是-1,就这么简单。
(事实上c语⾔已经做了⾃动转换,这⾥的char,int只是指代上⾯的汇编代码⾥的类型)