程序控制类指令
第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。
电气控制与Plc第5章-S7-200-PLC的基本指令及程序设计

KA2
(M0.1)
KM2
(Q0.1)
KM1
(Q0.0)
KM2
(Q0.1)
KA1
(M0.0)
图5-4 电气原理图
LD M0.0 A I0.0 = Q0.0
LD Q0.0
AN M0.1
=
Q0.1
AN Q0.1
=
M0.0
(a) 梯形图
图5-5 触点串联指令编程使用举例
(b) 语句表
触点并联指令使用说明:
EXIT
5.1.2 触点串连指令
与指令:用于单个常开触点的串联连接。 指令格式:A bit
与反指令:用于单个常闭触点的串联连接。 指令格式:AN bit
例3-2 触点串联指令的应用举例。图5-4为电气原理图(已标 地址),图5-5为对应的梯形图和语句表。
KA1
(M0.0)
SB
(I0.0)
KM1
EXIT
5.1.9 逻辑堆栈操作指令
S7-200 PLC使用了一个9层堆栈来处理所有逻辑操作, 逻辑堆栈指令主要用来完成对触点进行的复杂连接,配 合ALD、OLD指令使用。
1.指令
1)逻辑入栈指令 指令格式:LPS
2)逻辑读栈指令 指令格式:LRD
3)逻辑出栈指令 指令格式:LPP
4)装入堆栈指令 指令格式:LDS n
I0.1 I0.2 Q0.1,Q0.2
(b) STL
(c) 时序图
图5-14 S/R指令使用举例
EXIT
S/R指令使用说明
➢S/R指令的操作数为:I、Q、M、SM、T、C、V、S和 L。 ➢ N的常数范围为1~255,N也可为:VB、IB、QB、 MB、SMB、SB、LB、AC、常数、*VD、*AC和*LD。 一般情况下使用常数。 ➢ 对位元件来说一旦被置位,就保持在通电状态,除非对 它复位;而一旦被复位就保持在断电状态,除非再对它置 位。
计算机组成原理第五章单元测试(含答案)

第五章指令系统测试1、以下四种类型指令中,执行时间最长的是()(单选)A、RR型指令B、RS型指令C、SS型指令D、程序控制类指令2、程序控制类指令的功能是()(单选)A、进行算术运算和逻辑运算B、进行主存与CPU之间的数据传送C、进行CPU和I/O设备之间的数据传送D、改变程序执行的顺序3、单地址指令中为了完成两个数的算术运算,除地址码指明的一个操作数外,另一个常需采用的寻址方式是( )(单选)A、立即数寻址B、寄存器寻址C、隐含寻址D、直接寻址4、下列属于指令系统中采用不同寻址方式的目的主要是()(单选)A、为了实现软件的兼容和移植B、缩短指令长度,扩大寻址空间,提高编程灵活性C、为程序设计者提供更多、更灵活、更强大的指令D、丰富指令功能并降低指令译码难度5、寄存器间接寻址方式中,操作数存放在()中(单选)A、通用寄存器B、主存C、数据缓冲寄存器MDRD、指令寄存器6、指令采用跳跃寻址方式的主要作用是() (单选)A、访问更大主存空间B、实现程序的有条件、无条件转移C、实现程序浮动D、实现程序调用7、下列寻址方式中,有利于缩短指令地址码长度的是()(单选)A、寄存器寻址B、隐含寻址C、直接寻址D、间接寻址8、假设某条指令的一个操作数采用寄存器间接寻址方式,假定指令中给出的寄存器编号为8,8号寄存器的内容为1200H,地址1200H中的内容为12FCH,地址12FCH中的内容为3888H,地址3888H中的内容为88F9H.则该操作数的有效地址为( ) (单选)A、1200HB、12FCHC、3888HD、88F9H9、假设某条指令的一个操作数采用寄存器间接寻址方式,假定指令中给出的寄存器编号为8,8号寄存器的内容为1200H,地址1200H中的内容为12FCH,地址12FCH中的内容为3888H,地址3888H中的内容为88F9H.则该操作数为( ) (单选)A、1200HB、12FCHC、3888HD、88F9H10、某计算机按字节编址,采用大端方式存储信息。
SLC的功能指令

复位有效电平控制位;0(高电平有 效),1(低电平有效) 启动有效电平控制位;0(高电平有 效),1(低电平有效) 正交计数器计数速率选择,0(4X),1(1X)
计数方向控制位;0(减计数),1(增计数)
SM37.4 SM37.5 SM37.6 SM37.7
向HSC中写入计数方向;0(不更新),1(更 新计数方向)
返回目录
1.高速脉冲输出指令的格式
PLS Q STL指令
2.高速脉冲的输出方式 高速脉冲输出可分为:
高速脉冲串输出(PTO):提供方波输出,用户控制脉冲周期和脉冲数 宽度可调脉冲输出(PWM):提供连续、占空比可调的脉冲输出,用户 控制脉冲周期和脉冲宽度
返回目录
3.输出端子的连接 每个CPU有两个PTO/PWM发生器产生高速脉冲串和脉冲宽度可调
当前值大于预置值状 态位;0(小于等 于);1(大于)
指出了当前计数方向 当前值与预置值是否相等 当前值是否大于预置值的状态
可以通过监视高速计数器的状态位产生相应中断,完成重要操作。 返回目录
5. 高速计数器设置过程 为更好地理解和使用高速计数器,下面给出高速计数器的一般设置过
程。 (1)使用初始化脉冲触点SM0.1调用高速计数器初始化操作子程序。(这个 结构可以使系统在后续的扫描过程中不再调用这个子程序,从而减少了 扫描时间,且程序更加结构化)。
返回目录
2 指令功能 (1) 定义高速计数器指令(HDEF):
“HSC”端口指定高速计数器编号(0~5), “MODE”端口指定工作模式(0~11,各高速计 数器至多有12种工作模式)。EN端口执行条件 存在时,HDEF指令为指定的高速计数器选定一 种工作模式。在一个程序中,每一个高速计数器 只能使用一次HDEF指令。
第5章S7-200 PLC的基本指令及应用

2) 访问方式指出操作数是按位、字节、字或双字 访问的。当按位访问时,可用操作数位置形式 加以区分。访问方式按如下符号表示: X:位 B:字节 W:字 D:双字 3) 操作数的位置指明了操作数在此存储区的确切 位置,操作数的位置用数字来指明,以字节为 单位计数。
2.梯形图指令格式
梯形图是一种图形语言,不仅支持对存储区域 的按位、字节、字、双字的访问方式,同时也支 持整数、实数、字符串、表格等高级数据类型。 指令用三种图形风格进行描述。 (1)位指令和逻辑运算比较指令的格式
(2)位寻址格式
按位寻址时的格式为:Ax.y,使用时必须指定 元件名称 A、字节地址x和位号y。
可以进行位寻址的编程元件: 输入继电器(I)、输出继电器(Q)、通用辅助继电 器(M)、特殊继电器(SM)、局部变量存储器(L)、变 量存储器(V)和顺序控制继电器 (S)。
图5-6 CPU存储器中位数据表示方法举例(位寻址)
4)定时器位:与其他继电器的输出相似。当定 时器的当前值达到设定值PT时,定时器的触点 动作。 5)定时器当前值:存储定时器当前所累积的时 间,它用16位符号整数来表示,最大计数值为 32767。 6)定时器的分辨率和编号如表5-9所列。通过 该表可知定时器的编号一旦确定,其对应的分 辨率也就随之确定。
定时器定时时间T 的计算:T=PT×S。式中:T 为实际定时时间,PT为设定值,S为分辨率。例 如:TON指令使用T33(为10ms的定时器),设 定值为100 ,则实际定时时间为 T= 100×10ms=1000ms 定时器的设定值PT的数据类型为INT型。操作数 可为:VW、IW、QW、MW、SW、SMW、LW、AIW、T 、C、AC、*VD、*AC、*LD或常数,其中常数最 为常用。 3)定时器的编号。定时器的编号用定时器的名 称和数字(0~255)来表示,即T***,如T37。 定时器的编号包含定时器位和定时器当前值两 方面的信息。
三菱PLC功能指令解读

程序步 3步(嵌套5层) 1步
26
循环指令
循环指令由FOR及NEXT二条指令构成,它们成对出现。
图 8-14 循环指令使用说明
27
多层循环间的关 系是循环次数相 乘的关系。
4.5.3传送比较类指令(FNC10— FNC19)
1.比较指令
表7-1 比较指令的要素
指令 助记 指令代 名称 符 码位数
[ D·] P0~P63 P63即 END
程序步
CJ和 CJ(P)~3步 标号 P~1步
含
在满足跳转条件之后的各个扫描周期中, PLC将不再
义 扫描执行跳转指令与跳转指针PΔ间的程序,即跳到以
指针PΔ为入口的程序段中执行。直到跳转的条件不再
满足,跳转停止进行。
3
条件跳转指令及应用
条件跳转指令使用说明
可以用变址寄存器进 行变址的软元件是: X、 Y、M、S、P、T、C、D、 K、H、KnX、KnY、Kn
M、KnS。
10
数据类软元件及存储器组织
注意!
变址寄存器不能修改V与Z本身或位数指定用的Kn 参数。例如K4M0Z有效,而K0ZM0无效。
11
数据类软元件及存储器组织
二、数据类软元件的结构形式
注:可通过修改D8000的数据改写警戒时钟。 如图:
5、循环指令
一、循环指令的要素及梯形图表示
表8-6 程序循环指令要素
指令名称 循环指令 循环结束指令
助记 指令代码 符
操作数 [S·]
FOR FNC09(16) K,H,KnX,KnY,Kn M,KnS,T,C,D,V,Z
NEXT FNC09 无
操作数范围 [S1·] [S2·] [D·]
PLC21-功能指令(第九章)

2.减法运算指令 对有符号数进行相减操作,包括整数减法、双整数减法、 实数减法。 梯形图表示:
语句表示:整数减法指令“-I IN1,OUT”;双整数减法指 令“ - D IN1,OUT”;实数减法指令“ - R IN1,OUT”。
当信号EN=1时,被减数IN1与减数IN2相减,其结果传送到 OUT中。
四、比较指令 数值比较指令用于比较两个数值; 字符串比较指令用于比较两个字符串的ASCll码字符。
操作数按指定条件进行比较。
条件成立时,触点闭合,所以实际上是一种位指令。 仅说明数值比较指令 . 类型有:字节比较、整数比较、双字整数比较和实数比较。 字节比较是无符号的,其它类型为有符号的。 比较指令的关系符有:等于=、大于>、小于<、不等<>、 大于等于>=、小于等于<= 等6种。 对比较指令可进行LD、 A和O编程。以关系符“=”为例说明。
4. 正弦、余弦、正切指令
梯形图表示:
语句表示:正弦指令“SIN IN,OUT”;余弦指令“COS IN,OUT”;正切指令“TAN IN,OUT”。
当允许信号EN=1时,将一个双字长(32位)的实数弧度 值IN分别取正弦、余弦、正切,各得到32位的实数结果传送 到OUT中。 如果已知输入值为角度,要先将角度值转化为弧度值, 使用“(*R)MUL_R”指令,用角度值乘以π /180。
当信号EN=l时,被乘数IN1与乘数IN2相乘,结果送到OUT 中。在语句表示中,要先将被乘数送到OUT中,然后和IN1中 的数据进行相乘,溢出以及输入非法参数或运算中产生非法值, 都会使特殊标志SM1.1置位。
4.除法运算指令 对有符号数进行相除操作,包括:整数除法、双整数除法、 完全整数除法和实数除法。
3.块传送指令 字节块(BMB)的传送、字块(BMW)的传送和双字块的 传送(BMD)指令传倒数量的数据到一个新的存储区,数据的 起始地址为IN,数据的长度为N个字节、字或双字。 新块的起站地址为OUT。N的范围从l至255。
PLC-功能指令

5.2 程序流程控制功能指令
➢ 条件跳转指令CJ ➢ 子程序调用指令CALL与返回指令SRET ➢ 中断返回指令IRET、允许中断指令EI与禁止中断
指令DI ➢ 主程序结束指令FEND ➢ 监视定时器刷新指令WDT ➢ 循环开始指令FOR与循环结束指令NEXT
1 条件跳转指令CJ
➢ 条件跳转指令CJ(Conditional Jump)的功能 编号为FNC00,操作数的指针标号P0~P127, 其中P63即END所在步序,无需再标号。CJ和 CJP都占3个程序步,指针标号占1个程序步。
从D1000开始以500点为一个文件,最多可设置14个文件,可 被外部设备存取;
文件寄存器实际上被设置为PLC的参数区。文件寄存器与锁 存寄存器是重叠的,可保证数据不会丢失。
FX2N系列的文件寄存器可通过BMOV(块传送)指令改写
2)变址寄存器(V/Z)
变址寄存V0~V7和Z0~Z7除
I□0□
0:下降沿中断 1:上升沿中断
输入号(0~5),对应输入X0~X5且每个只能用一次
例如:I201是当输入X2从OFF→ON变化时,执行以I201为标 号的中断程序,并根据IRET指令返回。
(2)定时器中断指针(I△□□):共3点,用来指示周期定时 中断的中断服务程序的入口位置。这类中断的作用是PLC以指 定的周期定时执行中断服务程序,定时循环处理某些任务,处 理的时间也不受PLC扫描周期的影响。定时器中断指针格式如 下:
例如,I710,即每隔10ms就执行标号为I710后面的中断程序 ,并根据IRET指令返回
(3)计数器中断指针( I0△0 ):△表示定时器中断号, 取 值范围为1~6 例如,I010 I020 I030 I040 I050 I060,用于在PLC 内置的高速计数器中。当高速计数器的当 前值达到规定值,执行中断子程序。常用于利用高速计数器优 先处理计数结果的场合。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
段间调用例
CALL FAR TIMRE
CALL DWORD PTR[SI]
段间调用例
格式:
CALL FAR PROC
CALL
循环条件: CX ≠ 0 ZF=0
例:在一个由 17 个字符组成的字符串 STRING 中,现 在查找该字符串中是否包含空格字符(其 ASCII 码为 20H ),若未找到或尚未查完,则继续查找,直到找 到第一个空格字符或查完了才退出循环。 STRING DB ‘Personal Computer’ … MOV BX,OFFSET STRING DEC BX MOV CX,17 NEXT: INC BX CMP [BX],BYTE PTR 20H LOOPNE NEXT …
┇ 代 码 段
该单元在数据段,段地址=DS
┇
中断指令的执行过程
将PSW压入堆栈;
将INT指令的下一条指令的CS、IP压栈;
由n×4得到存放中断向量的地址;
将中断向量(中断服务程序入口地址) 送CS和IP寄存器;
转入中断服务程序。
中断指令的执行过程
n×4
IPL SP SP SP 68122H SP IP IPH CSL CSH FLAGSL 22H 11H 00H 67H
用于调用一个子过程 调用前须保护断点地址 子过程执行结束后要返回原调用处继续 执行原程序
断点恢复
段内调用
子过程与原调用程序在同一代码 段,在调用之前只需保护断点的 偏移地址 格式: CALL NEAR PROC
断点
入口 地址
近过程名
段内调用例
CALL TIMRE
直接调用
CALL WORD PTR[SI]
JMP DWORD PTR[BX]
代 码 段 1 代 码 段 2 数 据 段
┇
条件转移指令
在满足一定条件下,程序转移到目标地 址继续执行 条件转移指令均为段内短转移,即转移 范围为: -128~+127
条件转移指令的应用
1)简单条件(直接标志)转移指令(共10条) 根据CF、ZF、SF、OF、PF分别为1或0,共有10种状态, 设置了10种转移指令: JE/JZ JS JO JC JP ;标志为1转移 JNE/JNZ JNS JNO JNC JNP ;标志为0转 2)用于无符号数的条件转移指令 ① JA/JNBE ;高于/不低于等于转移, CF∨ZF=0 ② JNA/JBE ;不高于/低于等于转移, CF∨ZF=1 ③ JB/JNAE ;低于/不高于等于转移,CF= 1 ④ JNB/JAE ;不低于/高于等于转移,CF=
程序控制类指令
转移指令 循环控制 子程序调用 中断控制
3.9 转移指令
通过修改指令的偏移地址或段地址及偏移地 址实现程序的转移
无条件转移指令
无条件转移到目标地址,执行新的指令
有条件转移指令
在具备一定条件的情况下转移到目标地址
无条件转移指令
格式: JMP OPRD
目标地址
与JMP在 同一代码段 与JMP不在 同一代码段
转移指令例
统计内存数据段中以TABLE为首地 址的100个8位符号数中正数、负数 和零元数的个数。
转移指令例(流程图)
将存放各元素个 数的单元清零
取首地址 设串长度 取一个字节数 N 零元素加1
为零?
N 正数个数加1
Y
负数个数加1
为负?
Y
3.10 循环控制指令
控制程序在以当前IP为中心的-128~+127 范围内循环执行 循环次数由CX寄存器指定
LOOP LOOPZ LOOPNZ
无条件循环指令
格式: LOOP LABEL
循环条件: CX ≠ 0 操作: DEC CX JNZ 符号地址
条件循环指令 格式: LOOPZ LABEL 格式: LOOPNZ LABEL
LOOPE LABEL
LOOPNE LABEL
循环条件: CX ≠ 0 ZF=1
┇ JMP 代 码 段
┇
┇
无条件段内转移
段内间接寻址
JMP BX JMP WORD PTR[BX] IP
BX=1200
┇
JMP ┇
指令码
代 码 段
┇ XXH XXH ┇ 数 据 段
无条件转移指令——段间转移
转移的目标地址不在当前代码段内
指令中直接给 出目标地址
由指令中的32位存 储器操作数指出目 标地址
段间间接寻址
段间直接寻址
无条件段间转移
段内直接寻址
JMP FAR Label
IP
┇
JMP XXH XXH XXH XXH
代 码 段 1
远地址标号 Label与 JMP之间 的位移量
CS
Label
┇
┇
代 码 段 2
无条件段间转移
段内间接寻址
┇
JMP ┇ 指令码 [BX] IP CS ┇ XXH XXH XXH XXH
INTO指令通常安排在有符号数加减运算 指令之后。
3. 中断返回指令
格式:
IRET
中断服务程序的最后一条指令,负责
恢复断点
恢复标志寄存器内容
方法二:
MOV DI,OFFSET STRING MOV AL,20H MOV CX,17 REPNE SACSB JZ NEXT JMP NFOUND NEXT: … NFOUND:…
3.11 子程序调用返回指令
段内直接调用
段内调用 段间调用
段内间接调用 段间直接调用 段间间接调用
调用指令与转移指令的比较
调用指令在指令中直接给出子程序入口地址, 中断指令只给出中断向量码,入口地址则在向 量码指向的内存单元中
1. 中断指令
格式: INT n 说明: nх4
中断类型码 n=0 〜 255
n х4
入口的偏移地址
入口的段地址
XXH XXH XXH XXH
数 据 段
存放中断服务子程序入口 地址的单元的偏移地址
格式例:
CALL CALL
┇ SI
XXH XXH XXH XXH
代 码 段
FAR TIMRE DWORD PTR[SI]
CS IP
数 据 段
返回指令
从堆栈中弹出断点地址,返回原程序 格式:
RET
RET指令一般位于子程序的最后
3.12中断指令
中断与过程调用:
中断是随机事件或异常事件引起,调用则是事 先已在程序中安排好 响应中断请求不仅要保护断点地址,还要保护 PSW内容
┇
0084H IP CS 23H 11H 00H 20H
IP=[21Hх4]
CS==[(21Hх4)+2]
数 据 段
┇
21123H 中断服务子程序 XX
┇
代 码 段
溢出中断指令
格式:
INTO
相当于
INT 4
若OF=1,则启动一个类型为4的中断过程, 给出一个出错标志,如果OF=0,不做任何 操作。
3)用于带符号数的条件转移指令 ① JG/JNLE 大于/不小于等于转移,(SF ∨OF)∨ ZF =0 ② JGE/JNL 大于等于/不小于转移,(SF ∨OF)=0 ③ JL/JNGE 小于/不大于等于转移,(SF ∨OF)=1 ④ JLE/JNG 小于等于/不大于转移,(SF ∨OF)∨ ZF =1
原则上可实现在整个内存空间的转移
无条件转移指令
段内转移
转移的目标地址在当前代码段内
指令中直接给 出目标地址
由指令中的寄存器 或存储器操作数指 出目标地址
段内直接寻址
段内间接寻址
无条件段内转移
段内直接寻址 JMP Label
近地址标号 Label 下一条要执行指令的 偏移地址=当前IP+位移量 位移量
堆 栈 段
CS
数 据 段
┇
MOV
FLAGSH
┇
代 码 段
中断指令例
执行程序段: CS IP
执行INT 指令后
┇
6200H:0110H INT 21H 6200H:0112H MOV AX,BX
SP=11FA
┇
SP=1200
12H 01H 00H 62H PSWL PSWH
堆 栈 段
中断指令例
执行INT 21H指令后