搜档网
当前位置:搜档网 › 微机原理练习-控制转移类指令

微机原理练习-控制转移类指令

微机原理练习-控制转移类指令
微机原理练习-控制转移类指令

微机原理练习 - 控制转移类指令

一、低难度:

等待P1.0出现低电平

JNB P1.0,$

JB P1.0,$

原地等待

SJMP $

A减一非0转到L,否则转到L0

DJNZ A,L

SJMP L0

If A>0 then goto L else goto L1

JZ L1

JB ACC.0,L1

SJMP L

If A>=0 then goto L else goto L1

JB ACC.7,L1

SJMP L

If A<0 then goto L else goto L1

JB ACC.7,L

SJMP L1

If A<=0 then goto L else goto L1

JZ L

JB ACC.0,L

SJMP L1

If A=0 then goto L else goto L1

JZ L

SJMP L1

If A<>0(<>为不等) then goto L else goto L1

JZ L1

SJMP L

二、中难度:

用判断进位方法处理高字节,进行@R0(2):=@R0(2)+@R1(2) 当标志Flag=1时执行一次子程序Sub

A取绝对值

JNB ACC.7,L

CPL A

INC A

如果A>=数80H则减去数80H

CLR ACC.7

将RAM00H~FFH清为0

MOV R0,#0

L:MOV @R0,#0

INC R0

CJNE R0,#00H,L

RAM30H~3FH->RAM20H~2FH

Dec Dptr

MOV A,DPL

JNZ L

DEC DPH

L:DEC DPL

Inc R67

CJNE R7,#0FFH,L

INC R6

L:INC R7

Inc @R0(2)

INC R0

INC @R0

CJNE @R0,#0,L

DEC R0

INC @R0

L:

Dec @R0(2)

INC R0

DEC @R0

CJNE @R0,#0FFH,L

DEC R0

DEC @R0

L:

Djnz Dptr,L

MOV A,DPH

JNZ L

MOV A,DPL

DEC A

CJNE A,#0,L

RAM30H~3FH按字节左移一次

RAM30H~3FH->RAM38H~47H

If A=0 则 B=2 否则B=4

MOV B,#4

CJNE A,#0,L

MOV B,#2

当A<0,=0或>0时,B分别等于0,1,2

MOV B,#1

JZ L

MOV B,#0

JB ACC.7,L

MOV B,#2

按照A中的索引值,对应转移到Sub0,Sub1,...

RL A

MOV DPTR,#TAB

JMP @A+DPTR

TAB:AJMP SUB0

AJMP SUB1

三、高难度(指令不限):

利用栈构造Jmp @Dptr

子程序ClrAllRam:将RAM00H~FFH赋值为A的值

不用CALL类指令实现CALL操作

不用RET指令实现RET操作

子程序中使用调用前入栈的数据,编写子程序。主程序示例:

PUSH ACC

PUSH B

ACALL StackToP1

将子程序后的数据送到30H开始的RAM中,,编写子程序。主程序示例:ACALL DatToBuf

DB '123456789',0

5控制转移指令实验

2.5 控制转移指令实验 一、实验目的 ·掌握无条件转移指令和条件转移指令的使用。 ·掌握调用指令和返回指令的使用。 ·掌握用Keil调试汇编源程序的方法。 ·掌握用Proteus调试汇编源程序的方法。 二、实验预备知识 无条件转移指令是指当程序执行到该指令时,程序无条件转移到指令所提供的地址处执行。有长转移指令( LJMP)、绝对转移指令(AJMP)和相对转移指令(SJMP)三种。 条件转移指令是指根据给出的条件进行判断,若条件满足,则程序转向由偏移量确定的目的地址处去执行;若条件不满足,程序将不会转移,而是按原顺序执行。相对偏移量为一个带符号的8位数,偏移范围为-128~十127,共256个字节。共有三种: ◇累加器A判零转移指令(JZ、JNZ)。该指令对累加器A的内容为零和不为零进行检测并转移,不改变累加器A的内容,也不影响任何标志位。 ◇减l非零转移指令又称循环转移指令( DJNZ)。该指令是把源操作数减1,结果送回到源操作数中去;并判断结果是否为O,若不为O则转移到目标地址,继续执行循环程序;若为0则终止循环程序的执行。 ◇比较转移指令(CJNE)。该指令对指定的目的字节和源字节进行比较,若它们的值不相等,则转移。 把具有一定功能的公用程序段作为子程序,在主程序中采用调用指令( LCALL、 ACALL)调用子程序,子程序的最后一条指令为返回主程序指令(RET)。 长调用指令( LCALL)的执行过程是先将(PC)+3→PC,指向下一指令地址;再将把下一指令的16位地址(断点)压入堆栈,先压人PC0~7低位地址,后压入PC8~15高位地址,(SP)十2→SP;最后将指令中给出的16位目标地址addr16送入程序计数器PC。从而使程序转向目标地址addr16去执行被调用的子程序。 子程序返回指令(RET)的作用是将栈顶的断点地址送PC,于是,子程序返回主程序继续执行。 三、实验内容 根据控制转移类指令的不同用途,分别编写二个小程序,以完成程序在不同条件下的转移、调用。 1.参考程序1——累加器A判零转移指令和无条件转移指令 (1)将立即数#01H传送至A中。 (2)判断A中的内容,若(A)=OOH,则顺序执行MOV A,#02H指令;若(A)≠ OOH,则转移执行DEC A指令;循环往复执行相关指令。 2.参考程序2——减1非零转移指令、调用指令和返回指令 (1)将片内RAM20H~22H单元全部送入立即数#11H。 (2)调用子程序将立即数#55H传送至片内RAM22H单元中。 (3)返回主程序将立即数#55H分别传送至片内RAM20H、21H单元中。 四、买验参考程序

逻辑及布尔指令和控制转移类指令练习

逻辑及布尔指令和控制转移类指令练习 实验名称: 逻辑及布尔指令和控制转移类指令练习实验目的:1. 熟悉掌握逻 辑及布尔和控制转移指令的功能及编程;2. 熟悉单片机接口中各位信号的逻辑 操作3. 掌握字节数据的拼接、转换及组合。实验要求:按照实验安排准时参 加实验,按照实验步骤操作,仔细观察及记录实验过程及结果,回答实验相关 问题,最终根据实验结果撰写实验指导书。实验内容:1、从教材上任意选择一 程序,将之输入,练习程序调试的基本方法,体会STEP INTO,STEP OVER,运行到光标处,全部运行,设置断点,清除断点,等等基本的调试方 法。2、将教材中关于逻辑操作与控制转移指令分别逐条进行实验,注意体会 指令语法要求以及所执行的操作。3、30H,31H 单元用非压缩BCD 码表示两 位的十进制数,将其转换成十进制数存入32H 单元;将其转换成十六进制数存 入33H 单元。(30H 为高位,31H 为低位)实验过程:1. 熟悉MOV 指令,在KEIL 软件里建立新工程并输入:ORG 0MOV A.#00110000BMOV B.#7FHMOV SP.#07HMOV DPTR.#010FHMOV R0.#A2HMOV A.@R0MOV B.@DPHMOV A.@DPLEND2. 分步运行,观察寄存器A,B,DPTR,堆栈指针SP 和程序计数器PC 的值。3. 30H,31H 单元用非压缩BCD 码表示两位的十进制数,将其转换成十进制数存入32H 单元;将其转换成十六进制数存入33H 单元。(30H 为高位,31H 为低位)输入:ORG 0MOV 30H,#00001000BMOV 31H,#00001001B;用非压缩的BCD 码在30H 和31H 里表示89DMOV A,30HRRC ARRC ARRC ARRC AMOV R2,30HADDC A,R2DA AMOV 33H,AENDtips:感谢大家的阅读,本文由我司收集整编。仅供参阅!

传送指令与比较指令

2、编写程序实现以下控制: PLC通电后,首先进入密码输入页面; 如密码正确(2012),按下列条件进入不同页面: (1) 如开关打在左边,则进入手动页面; (2) 如开关打在右边,则进入自动页面; 报警页面中的报警信号有:卡机报警(Y12),缺料报警X2,气缸未定位报警s901,计数报警C10。 编程思路: 1、PLC上电后,首先把页面编号1,传送给页面切换寄存器D; 2、使用比较指令,判断输入的密码是否为2012; 3、密码正确的情况下:如X1=1, 把页面编号3,传送给页面切换寄存器D; 4、密码正确的情况下:如X1=0, 把页面编号2,传送给页面切换寄存器D; 5、如有任何报警,让主电机Y10停机,蜂鸣器Y11响,如按下M34,则Y11 不响。 6、M30,M31分别给D200,D225清零。

3.1 传送指令 今天,我们来学习跟“数值传送”相关的功能指令。 在控制应用中,一个控制程序总是需要初始数据,这些数据可以通过各种方式获得,如从外部器件读取,或在程序开始运行时,从内部存储单元获取,因此,机内的数据传送是不可缺少的。 一、传送指令的“助记符” 在三菱的指令系统里,比较指令的“指令记号”是MOV,也就是Move (移动,运输)的简写。 二、传送指令的格式 “比较指令的指令格式”如下: 其中: 是传送源;是传送目标。 指令规定: 传送源:可以是字元件,如T、C、D、V/Z,也可以是位组合的字元件KnX,KnY,KnM,KnS,当然可以是十进制数K、十六进制数H。 是传送目标:必须是字元件,如T、C、D、V/Z,也可以是位组合的字元件KnY,KnM,KnS。 操作数格式如下所示:

关于第十讲控制转移类指令

第九讲控制转移类指令 教学方法: 讲授法 教学目的: 1、了解控制转移类指令的种类 2、掌握无条件转移指令的特点及应用 3、掌握调用指令的特点及应用 教学重点、难点: 各类指令操作功能循环、移位指令 条件转移指令的特点及应用 主要教学内容(提纲): 一、控制转移类指令的种类 二、无条件转移指令的特点及应用 三、调用指令的特点及应用 复习:逻辑操作指令,单字节:CLR,CPL,RL,RLC,RR,RRC 双字节:ANL,ORL,XRL。 讲授要点 §3-5 控制转移类指令 作用:改变程序计数器PC的值,从而改变程序执行方向。 分为四大类:无条件转移指令;条件转移指令;调用指令;返回指令。 一、无条件转移指令 LJMP addr16 AJMP addr11 SJMP rel JMP @A + DPTR LJMP addr16 ;长跳转 转移目的地址addr16 (PC);0000H ~ FFFFH,64KB AJMP addr11 ;绝对转移 转移目的地址的形成:先(PC)(PC)+ 2; 后PC15 ~ 11不变,PC10 ~ 0 addr10 ~ 0 64KB = 216 =25×211 = 32×2KB 转移目的地址与(PC)+ 2在同一个2KB范围内。

SJMP rel ;短转移,相对寻址。 转移目的地址= (PC)+ 2 + rel, 所以rel = 转移目的地址-(PC)-2 但,实际使用中常写成SJMP addr16,汇编时会自动转换出rel。 JMP @A + DPTR ;间接转移,散转移指令。 转移目的地址= (@A)+ (DPTR) 本指令不影响标志位,不改变@ A 及DPTR中的内容。常用于多分支程序结构中,可在程序运行过程中动态地决定程序分支走向。 例1、设A中为键值,试编写按键值处理相应事件的程序段。 解:MOV DPTR,#KYEG MOV B,#03H MUL AB JMP @A + DPTR · KYEG:LJMP KYEG0 LJMP KYEG1 · 画图比较LJMP、AJMP、SJMP、JMP转移的起点和范围。 二、调用指令 LCALL addr16 ;长调用 ACALL addr11 ;绝对调用 LCALL addr16 ;转移范围64KB,不影响标志位。执行中自动完成如下过程:(PC)(PC)+ 3 (SP)(SP)+ 1 ((SP))(PC7 ~ 0),保护断点地址低字节; (SP)(SP)+ 2 ((SP))(PC15 ~ 8),保存断点地址高字节; (PC)addr16 ,目的地址送PC,转子程序。 例2、设(SP)= 07H,(PC)= 2100H,子程序首地址为3456H,执行: LCALL 3456H MOV A,20H ······ 画出执行过程示意图。 执行结果:(SP)= 09H,(09H)= 21H,(08H)= 03H,(PC)= 3456H

第11讲 控制转移类指令(二)教案

第十一讲控制转移类指令 二、条件转移指令 实现按照一定条件决定转移的方向。分三类。 1、判零转移 JZ rel JNZ rel JZ rel ;若(A)= 0 ,则转移,否则顺序执行。 JNZ rel ;若(A)≠0,则转移,否则顺序执行。 转移目的地址= (PC)+ 2 + rel 不影响任何标志位。 例1、将外RAM的一个数据块(首地址为DATA1)传送到内部数据RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。 解:MOV R0,#DATA2 MOV DPTR,#DATA1 LOOP1:MOVX A,@DPTR JZ LOOP2 MOV @R0,A INC R0 INC DPTR SJMP LOOP1 LOOP2:SJMP LOOP2 2、比较转移指令 功能:比较二个字节中的值,若不等,则转移。 CINE A,#data,rel CJNE A,direct,rel CJNE @Ri,#data,rel CJNE Rn,#data,rel 该类指令具有比较和判断双重功能,比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。 转移目的地址= (PC)+ 3 + rel

若第一操作数内容小于第二操作数内容,则(C)= 1,否则(C)= 0。 该类指令可产生三分支程序: 即,相等分支;大于分支;小于分支。 例2、设P1口的P1.0 ~ P1.3为准备就绪信号输入端,当该四位为全1时,说明各项工作已准备好,单片机可顺序执行,否则,循环等待。 解:MOV A,P1 ANL A,#0FH CJNE A,#0FH,WAIT ;P1.0 ~ P1.3不为全1时,返回WAIT MOV A,R2 ······ 3、循环转移指令 DJNZ Rn,rel ;(二字节指令) DINZ direct,rel ;(三字节指令) 本指令也为双功能指令,即减1操作和判断转移操作。 第一操作数内容减1后,若差值不为零,则转移;否则顺序执行。 转移目的地址= (PC)+ 2或3 + rel 例3、将8031内部RAM的40H ~ 4FH单元置初值#A0H ~ #AFH。 解:MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP:MOV @R0,A INC R0 INC A DJNZ R2,LOOP ······ 小结:1、无条件转移指令共有几条? 2、CJNE指令与DJNZ指令有何区别?

控制转移类指令

控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 [1]. 无条件转移指令(4条) 这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令访问的程序存储器空间为11位地址2kB空间。 LJMP addr16 ;addr16→(PC),给程序计数器赋予新值(16位地址) AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变 SJMP rel ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值 JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值 这几条指令,如果要他细分析的话,区别较大,但初学者时,可以不理会那么多,统统理解成LJMP标号,也就是跳转到一个标号处,但事实上,JMP标号,在前面的例程中我们已接触过,并且也知道如何来使用了,AJMP和SJMP也是一样,那么这几条指令它们的区别何在呢?在于跳转的范围不一样。好比跳远,LJMP一下就能跳64K那么远(当然近了就更没关系了)。而AJMP最多只能跳2K距离,而SJMP则最多只能跳256这么远,原则上,所有用AJMP或SJMP的地方都可以用LJMP来替代。因此在初学者时,需要跳转时可以全用LJMP。 但是在查表时要注意会出错,因为他们的机器周期不一样,取得的数也不一样。

控制转移类指令分析

控制转移类指令分析 控制转移类指令分析 控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,MCS-51系列单片机的控制转移指令相对丰富,有可对64kB程序空间地址单元进行访问的长调用、长转移指令,也有可对2kB字节进行访问的绝对调用和绝对转移指令,还有在一页范围内短相对转移及其它无条件转移指令,这些指令的执行一般都不会对标志位有影响。 [1].无条件转移指令(4条) 这组指令执行完后,程序就会无条件转移到指令所指向的地址上去。长转移指令访问的程序存储器空间为16地址64kB,绝对转移指令访问的程序存储器空间为11位地址2kB空间。 LJMP addr16 ;addr16→(PC),给程序计数器赋予新值(16位地址) AJMP addr11 ;(PC)+2→(PC),addr11→(PC10-0)程序计数器赋予新值(11位地址),(PC15-11)不改变 SJMP rel ;(PC)+ 2 + rel→(PC)当前程序计数器先加上2再加上偏移量给程序计数器赋予新值 JMP @A+DPTR ;(A)+ (DPTR)→(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值 这几条指令,如果要他细分析的话,区别较大,但初学者时,可以不理会那么多,统统理解成LJMP标号,也就是跳转到一个标号处,但事实上,JMP标号,在前面的例程中我们已接触过,并且也知道如何来使用了,AJMP和SJMP也是一样,那么这几条指令它们的区别何在呢?在于跳转的范围不一样。好比跳远,LJMP一下就能跳64K那么远(当然近了就更没关系了)。而AJMP最多只能跳2K距离,而SJMP则最多只

《传送门2》常用控制台指令

《传送门2》常?控制台指令 说明: ??(需要开启"启?作弊"模式) 蓝?(不需要开启"启?作弊"模式) 灰?(鸡肋功能) 1.控制台开启?法: 进?游戏,设置-?标/键盘-启?开发者控制台 2."启?作弊"命令开启?法 打开控制台"~"(?般键盘是e s c下?的按键)输?s v_c h e a t s1 正版?户注意:在"启?作弊"模式下不可解锁成就 3.如何使?启动选项 正版?户:游戏库-右键p o r t a l-属性-设置启动选项 盗版:建?p o r t a l2.e x e的快捷?式-右键快捷?式-属性-?标 作弊策略类 g o d?敌模式 n o c l i p穿墙模式 n o t a r g e t敌?停?进攻(其本质就是隐?) b u d d h a类似于?敌模式,会受伤但不会死亡 k i l l?杀 ?y飞?模式(鸡肋命令还不如?穿墙) i m p u l s e100打开?电筒(重新输?则关闭) i m p u l s e101获得所有武器(仅适?于p o r t a l不适?于p o r t a l2) i m p u l s e102?底下产??些碎?(其实是彩蛋)(包括?头,?脏,肺部,肌?,甚?是头盖?)(承受能?差的?请别试) s v_p o r t a l_p l a c e m e n t_n e v e r_f a i l1可以把传送门放在任何地?(0为默认值)强?推荐 s v_g r a v i t y600改变重?(600为默认值) p o r t a l_d r a w_g h o s t i n g0关闭穿墙显?传送门位置功能

微机原理练习-控制转移类指令

微机原理练习 - 控制转移类指令 一、低难度: 等待P1.0出现低电平 JNB P1.0,$ JB P1.0,$ 原地等待 SJMP $ A减一非0转到L,否则转到L0 DJNZ A,L SJMP L0 If A>0 then goto L else goto L1 JZ L1 JB ACC.0,L1 SJMP L If A>=0 then goto L else goto L1 JB ACC.7,L1 SJMP L If A<0 then goto L else goto L1 JB ACC.7,L SJMP L1 If A<=0 then goto L else goto L1 JZ L JB ACC.0,L SJMP L1 If A=0 then goto L else goto L1 JZ L SJMP L1

If A<>0(<>为不等) then goto L else goto L1 JZ L1 SJMP L 二、中难度: 用判断进位方法处理高字节,进行@R0(2):=@R0(2)+@R1(2) 当标志Flag=1时执行一次子程序Sub A取绝对值 JNB ACC.7,L CPL A INC A 如果A>=数80H则减去数80H CLR ACC.7 将RAM00H~FFH清为0 MOV R0,#0 L:MOV @R0,#0 INC R0 CJNE R0,#00H,L RAM30H~3FH->RAM20H~2FH Dec Dptr MOV A,DPL JNZ L DEC DPH L:DEC DPL Inc R67 CJNE R7,#0FFH,L INC R6 L:INC R7

输入输出数据传送控制方式

第8章输入输出数据传送控制方式8.1学习要求 I/O系统对整个计算机系统的可扩展性、兼容性和性价比都有着重要的影响。本章重点介绍程序查询方式、程序中断方式、DMA方式、通道方式,并介绍了通用的并行I/O标准接口和串行I/O标准接口。 主机与外设的连接 程序查询方式及其接口 中断系统和程序中断方式 DMA方式 通道控制方式 8.2典型例题解析 1.如果认为CPU等待设备的状态信号是处于非工作状态(即踏步等待),那么在下面几种主机与设备之间的数据传送中:主机与设备是串行工作的; 主机与设备是并行工作的,主程序与设备是并行运行的。 A.程序查询方式B.程序中断方式C.DMA方式 答:A,B,C 2.中断向量地址是。 A.子程序入口地址B.中断服务程序入口地址 C.中断服务程序入口地址指示器D.例行程序入口地址 答:B 3.利用微型机制作了对输入数据进行采样处理的系统。在该系统中,每抽取一个输入数据就要中断CPU一次,中断处理程序接收采样的数据,将其放到主存的缓冲区内。该中断处理需时x秒,另一方面缓冲区内每存储n个数据,主程序就将其取出进行处理,这种处理需时y秒。因此该系统可以跟踪到每秒次的中断请求。 A.n/(n*x+y) B.n/(x+y)·n C.min(1/x,n/y) 答:A 4.采用DMA方式传送数据时,每传送一个数据就要占用一个的时间。 A.指令周期B.机器周期C.存储周期D.总线周期答:C

5.通道的功能是:(1) ,(2) 。按通道的工作方式分,通道有通道、通道和通道三种类型。 答:组织外围设备和内存进行数据传输;控制外围设备;选择;数组多路;字节多路 6.在图8.7中,当CPU对设备B的中断请求进行服务时,如设备A提出请求,CPU 能够响应吗?为什么?如果设备B一提出请求总能立即得到服务,问怎样调整才能满足此要求? 答:能响应,因为设备A的优先级比设备B高。若要设备B总能立即得到服务,可将设备B从第二级取出来,单独放在第三级上,使第三级的优先级最高,即令IM3 = 0。 7.设某机有5级中断;L0,L1,L2,L3,L4,其中断响应优先次序为:L。最高,L1次之,L4最低。现在要求将中断处理次序改为L1->L3->L0->L4->L2,试问:表8.1中各级中断处理程序的各中断级屏蔽值如何设置(每级对应一位,该位为“0”表示允许中断,该位为“1”表示中断屏蔽)? 若这5级中断同时都发出中断请求,按更改后的次序画出进入各级中断处理程序的过程示意图。 解: ⑴ ⑵若这5级中断同时都发出中断请求,按更改后的次序画出进入各级中断处理程序的过程示意图如下:

控制转移类指令

控制转移类指令 ?用于实现分支、循环、过程等程序结构,是仅次于传送指令的最常用指令. ?控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变 说明 ?只有中断返回指令(IRET)改变控制标志位 ?许多转移指令受状态标志位的影响 1.无条件转移指令(JMP 操作数;程序转向label标号指定的地址) ◆寻址方式: 直接寻址方式 转移地址象立即数一样,直接在指令的机器代码中,就是直接寻址方式 间接寻址方式 转移地址在寄存器或主存单元中,就是通过寄存器或存储器的间接寻址方式 ◆目标地址范围 ?段内(注意转移范围是+ -,即前后都可以转移!当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负) ?段内转移——近转移(near) ?转移范围用二个字节表达,在当前代码段64KB范围内转移(±32KB范围) ?不需要更改CS段地址,只要改变IP偏移地址,由16位带符号数给出。 ?段内转移——短转移(short) ?转移范围用一个字节表达,在当前代码段256B范围内转移(-128~+127范围), 只改变IP的值,由8位带符号数给出。 ?段间 段间转移——远转移(far) 从当前代码段跳转到另一个代码段,可以在1MB范围 需要更改CS段地址和IP偏移地址 目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址。段间间接转移指令中,目的地址存放在连续4个存储单元字节中,低字节两个单元的内容代替IP,高字节两个单元的内容代替CS。 注:实际编程时,汇编程序会根据目标地址的距离,自动处理成短转移、近转移或远转移程序员可用操作符short、near ptr或far ptr强制. ?思考: 如果转移超过16BIT,怎么办? 答:变成段间转移。 JMP 1234H 这个指令对否?JMP 12345678H呢? 2、条件转移指令(Jcclable;条件满足,发生转移:IP←IP+8位位移量;条件不满足,顺序执行) 注意:1.Jcc本身不是一条指令,它是条件转移指令的统称。 2.操作数label是采用短转移,条件转移只能是短转移。 3.8位位移量是相对于当前IP的,相对寻址方式。 4.Jcc指令为2个字节,条件不满足时的顺序执行,就是当前指令偏移指针IP加。 5.不影响标志,但要利用标。 16条指令分成4种情况: ⑴判断单个标志位状态 ⑵比较无符号数高低

条件转移类指令范例

条件转移类指令范例——方案 将00H~0FH这16个数顺序地置入片内RAM20H~2FH单元中。 一、MOV R0,#20H CLR A LOOP:MOV @R0,A INC A INC R0 DJNZ R7,LOOP SJMP $ 三、MOV R0,#20H MOV A,#0FH MOV 30H,#00H LOOP:MOV @R0,30H INC 30H INC R0 DEC A JNZ LOOP SJMP $ 四、MOV R0,#20H MOV A,#0FH MOV 30H,#00H LOOP:MOV @R0,30H INC 30H INC R0 SUBB A,#01H JNC LOOP SJMP 【例】设(SP)=30H,符号地址PROG1指向程序存储器的5678H单元,当前PC值为0123H。从0123H处执行指令“LCALL PROG1”,分析执行后PC、SP的值和相关存储器的内容。 解:执行过程为: (PC)+3=0123H+3=0126H。 将PC内容压入堆栈:向(SP)+1=31H中压入26H,向(SP)+1=32H中压入01H,(SP)=33H。 将PROG1=5678H送入PC,即(PC)=5678H。程序转向以5678H为首地址的子程序执行。最终执行结果是:(PC)=5678H、(SP)=33H、(31H)=26H、(32H)=01H。 【例】利用DJNZ指令和NOP指令编写一循环程序,实现延时1ms(晶振频率为12MHz)。解:程序如下: DELAY: MOV R1,#0AH ;1μs LOOP: MOV R2,#30H ;1μs DJNZ R2,$ ;2×48μs DJNZ R1,LOOP ;1μs×(1+2×48+2)×10 NOP ;1μs NOP ;1μs NOP ;1μs

基于传送MOV指令在PLC程序设计中的应用

摘要:本文研究的基于三菱plc的mov传送指令在实际编程中的应用。三菱plc的内部除了有很多基本指令外,还有大量的功能指令(应用指令),用于数据的传送、运算、变换及程序控制等应用,这使得plc成了真正意义上的计算机。它大大扩展了plc的功能及应用范围。 关键词:plc;mov;梯形图;程序设计 1.引言 三菱plc指令功能强大,易于掌握应用,深受广大编程爱好者喜爱,尤其是它的功能指令,只要正确合理的使用将会产生事半功倍的效果,在此特举出实例,使广大初学者能够深刻领悟其使用方法与技巧,进一步简化程序。特别是近年来,功能指令又向综合性方向迈进了一大步,出现了许多一条指令即能实现以往需要大段程序才能完成的某种任务的指令,如pid应用、表应用等。这类指令实际上就是一个个应用完整的子程序,使编程更加精炼,从而大大提高了plc的实用价值和普及率。 2.三菱plc的mov传送指令 传送指令mov是将源操作数[s.]中的数据送到指定的目标操作数[d.]中,源操作数内的数据不变。源操作数类型有k、h、knx、kny、knm、kns、t、c、d、v、和z,目标操作数包括k、h、kny、knm、kns、t、c、d、v、和z,有16位和32位两种数据长度。指令可以连续执行,也可以脉冲方式执行。mov指令应用简单,但必须保证源操作数和目标操作数长度一致。传送指令的表现形式有mov、movp、dmov和dmovp,16位指令占用5步,32位指令占用9步。 mov指令的使用说明如图1所示: 常数可以传送到数据寄存器,寄存器与寄存器之间也可以传送。此外,定时器、计数器的当前值也可以被传送到寄存器,如图2所示 上述程序的功能是:当x1变为on时,t0的当前值被传送到d20中。 mov指令除了进行16位数据传送外,还可以进行32位数据传送,但必须在mov指令前加d。 3.mov指令的应用 3.1mov指令在y-δ降压启动中的应用 任务描述:采用mov指令实现电动机y-δ降压启动控制,当启动按钮闭合(x0=on)时,6秒钟后,电机转速已上升至接近额定转速时,转为δ形连接运行,当闭合停止按钮x1或超载x2时,电机停止。 从上述要求分析,利用传送指令较为简单,x0=on,将k9(1001)传送到输出端y3y2y1y0,由于y3=y0=on,所以km1和km4得电,电动机绕组按y形连接且接通电源启动运行,定时6秒时间到,将k5(0101)传送到输出端y3y2y1y0,由于y2=y0=on,所以km1和km3得电。当x2为on,将k0(0000)传送到输出端y3y2y1y0,由于y3=y2=y1=y0=off,电机停止运行。 首先进行i/o口分配,i/o分配如下: 3.2 mov指令在流水灯的plc控制中的应用 问题描述:有8个霓虹灯,有y000----y007控制,按下启动按钮,要求这8个霓虹灯每隔1秒间隔交替闪烁。当按下停止按钮灯全部熄灭。 首先分配i/o地址: 通过分析控制要求可知,该控制系统有2个输入:起动按钮sb1――x1、停止按钮sb――x0;输出有8个:8盏灯――y0----y7,其i/o接线图如图4所示. 本例中涉及到了传送的另外一种方式:取反传送cml指令,它是将源操作数的内容按位依次取反后再传送到目标操作数中。 3.3 mov指令在led数码显示中的应用

控制转移类指令和位操作指令

控制转移类指令和位操作指令 (一).控制转移类指令 计算机运行过程中,有时因为操作的需要,程序不能按顺序逐条执行指令,需要改变程序运行方向,即将程序跳转到某个指定的地址再顺序执行下去。 控制转移类指令的功能就是根据要求修改程序计数器PC的内容,以改变程序运行方向,实现转移。 控制转移类指令可分为:无条件转移、条件转移、绝对转移、相对转移和调用、返回指令。下面我们将分类介绍。 1.无条件转移指令(4条) LJMP add16 ;add16→PC,无条件跳转到add16地址,可在64KB范围内 转移,称为长转移指令 AJMP add11 ;add11→PC,无条件转向add11地址,在2KB范围内转移 SJMP rel ;PC+2+rel→PC,相对转移,rel是偏移量,8 位有符号 数,范围-128~127,即可向后跳转128,向前可跳转 127 JMP @A+DPTR ;A+DPTR→PC ,属散转指令,无条件转向A与DPTR内容 相 加后形成的新地址 例执行指令 LJMP 9100H 不管这条指令存放在哪里,执行时将使程序转移到9100H,和AJMP,SJMP指令是有差别的。 例程序 2000H MOV R0 , #10H ;10H→PC 2002H SJMP 03H ;PC+2+rel=2002H+2+03H=2007H→PC ┇┇ 2006H ┇ 2007H ┇ 从说明中可见,执行SJMP 03H 指令后,马上跳转到2007H地址执行程序。 2.条件转移指令(8条) 条件转移指令是根据某种特定条件转移的指令。条件满足时转移,条件不满足时则顺序 执行下面的指令。 JZ rel ;A=0转向PC+2+rel→PC,A≠0顺序执行 JNZ rel ;A≠转向PC+2+rel→PC ,A=0顺序执行

第11讲 控制转移类指令(二)

第十一讲控制转移类指令 教学方法: 讲授法 教学目的: 1、了解控制转移类指令的分类 2、掌握条件转移指令的特点及应用 教学重点: 条件转移指令的特点及应用 教学难点: 条件转移指令的特点及应用 教学环节 组织教学:(2分钟)检查学生人数,强调作业要求。 复习提问:1、控制转移指令是如何分类的? 2、无条件转移指令、调用指令分是哪几个? 引入新课: 二、条件转移指令 实现按照一定条件决定转移的方向。分三类。 1、判零转移 JZ rel JNZ rel JZ rel ;若(A)= 0 ,则转移,否则顺序执行。 JNZ rel ;若(A)≠0,则转移,否则顺序执行。 转移目的地址= (PC)+ 2 + rel 不影响任何标志位。 例1、将外RAM的一个数据块(首地址为DATA1)传送到内部数据RAM(首地址为DATA2),遇到传送的数据为零时停止传送,试编程。 解:MOV R0,#DATA2 MOV DPTR,#DATA1 LOOP1:MOVX A,@DPTR JZ LOOP2 MOV @R0,A INC R0 INC DPTR SJMP LOOP1 LOOP2:SJMP LOOP2 2、比较转移指令 功能:比较二个字节中的值,若不等,则转移。

CINE A,#data,rel CJNE A,direct,rel CJNE @Ri,#data,rel CJNE Rn,#data,rel 该类指令具有比较和判断双重功能,比较的本质是做减法运算,用第一操作数内容减去第二操作数内容,但差值不回存。 转移目的地址= (PC)+ 3 + rel 若第一操作数内容小于第二操作数内容,则(C)= 1,否则(C)= 0。 该类指令可产生三分支程序: 即,相等分支;大于分支;小于分支。 例2、设P1口的P1.0 ~ P1.3为准备就绪信号输入端,当该四位为全1时,说明各项工作已准备好,单片机可顺序执行,否则,循环等待。 解:MOV A,P1 ANL A,#0FH CJNE A,#0FH,WAIT ;P1.0 ~ P1.3不为全1时,返回WAIT MOV A,R2 ······ 3、循环转移指令 DJNZ Rn,rel ;(二字节指令) DINZ direct,rel ;(三字节指令) 本指令也为双功能指令,即减1操作和判断转移操作。 第一操作数内容减1后,若差值不为零,则转移;否则顺序执行。 转移目的地址= (PC)+ 2或3 + rel 例3、将8031内部RAM的40H ~ 4FH单元置初值#A0H ~ #AFH。 解:MOV R0,#40H MOV R2,#10H MOV A,#0A0H LOOP:MOV @R0,A INC R0 INC A DJNZ R2,LOOP ······ 小结:1、无条件转移指令共有几条? 2、CJNE指令与DJNZ指令有何区别?

汇编(十五)控制转移类指令一

汇编(十五)——控制转移类指令一 Intel 8086中,程序的执行序列是由代码段寄存器CS 和指令指针IP确定的。CS包含当前指令所在代码段的段地址,IP则是要执行的下一条指令的偏移地址。程序的执行一般是依指令序列顺序执行,但有时候需要改变程序的流程,实现分支程序。控制转移类指令通过修改CS和IP的值改变程序的执行顺序,实现分支。分支程序有时根据某个条件转移执行,有时无条件条转到某条指令执行,转移指令的目标地址是代码段中某个指令的位移量,这个位移量是用标号来指出的。一、标号 标号(过程名亦视为标号)用来说明可执行指令在汇编语言程序中的位置(从这个角度来说,变量应用于说明伪指令的位置)。标号可以作为转移指令(或调用指令CALL)的操作数。和变量类似,标号有三种属性:段(SEGMENT)、位移量(OFFSET)和距离(DISTANCE)。段和位移量属性就是在哪个段、什么位置上定义的标号。标号只要有了定义,这两个属性就自然的产生。如果标号只能在本段中(即标号所定义的段中)用JMP或条件转移指令(或CALL)进行访问,那么必须将这个标号的距离属性定义为NEAR;如果标号能为其他段中的JNMP(或CALL)指令访问,则需将标号的距离属性定义为FAR。标号的距离属性需要再定义标号

时指出。 1、标号的定义 (1)定义距离属性为NEAR的标号 1)距离属性为NEAR的标号可以用隐含的说明,即在标号名后面加上冒号,放在指令前面。如: L1: MOV AX,BX @: ADD AX,100 2)距离属性为NEAR的标号也可以用现实说明,即用LABEL 位指令明显说明,或在EQU位指令中用THIS操作符明显的指出。如: L2 LABEL NEAR MOV CX,5 L3 EQU THIS NEAR AND AX,0FFH (2)定义距离属性为FAR的标号 距离属性为FAR的标号只能显示说明 L4 LABEL FAR MOV AX,DX L5 EQU THIS FAR OR AL,30H (3)同一条指令处可以定义两个距离属性不同的标号,以提高访问标号的灵活性。

CP1H型PLC数据传送指令的使用

PLC知识 CP1H型PLC的指令非常丰富,达到几百条,目前指令功能号范围为000~891,丰富的指令使PLC具有更多的功能。在前面的章节已介绍了一些指令的使用,本章再介绍余下的大部分指令。由于本文介绍的指令很多,虽然讲解时力争通俗易懂,但在学习时也可能会枯燥无味,读者可先花少量时间粗略了解这些指令,待以后需要用到时再认真研读。 指令名称 助记符 功能号 传送 MOV 021 倍长传送 MOVL 498 否定传送 MVN 022 否定倍长传送 MVNL 499 位传送 MOVB 082 数字传送 MOVD

Domain:https://www.sodocs.net/doc/b311969589.html,/低压配电柜Mo re:kflwwk 多位传送 XFRB 062 块传送 XFER 070 块设定 BSET 071 数据交换 XCHG 073 数据倍长交换 XCGL 562 数据分配 DIST 080 数据抽取 COLL 081 变址寄存器设定 MOVR 560 变址寄存器设定 MOVRW

可变程序控制器(PLC)是从早期的继电器逻辑控制系统发展而来的。自20世纪60年代问世以来,PLC得到了突飞猛进的发展,尤其在数据处理、络通信及与DCS等集散系统融合方面有了很大的进展,可变程序控制器已经成为工业自动化强有力的工具,得到了广泛的普及和推广应用。本文以四层教学仿真电梯系统为例,着重讲述可变程序控制器(PLC)与上位计算机工控组态软件组态王之间的通信。 2 SIMATIC S7-200系列PLC及其编程软件STEP 7-Micro/WIN 32 SIMATIC 小型S7-200系列PLC适用于各行各业,各种场合中的检测、监测及控制的自动化。S7-200系列的强大功能使其无论在独立运行中,或相连成络皆能实现复杂控制功能。S7-200系列出色表现在以下几个方面:极高的可靠性;极丰富的指令集;易于掌握;便捷的操作;丰富的内置集成功能;实时特性;强劲的通讯能力;丰富的扩展模块等。S7-200系列在集散自动化系统中充分发挥其强大功能。使用范围可覆盖从替代继电器的简单控制到更复杂的自动化控制。应用领域极为广泛,覆盖所有与自动检测,自动化控制有关的工业及民用领域,包括各种机床、机械、电力设施、民用设施、环境保护设备等等。 STEP 7-Micro/WIN 32是西门子公司专门为S7-200系列PLC设计在个人计算机Windows操作系统下运行的编程软件,它的功能强大,使用方便,简单易学,可用梯形图(LAD)、语句表(STL)和功能块图三种编程语言编制程序,不同的编程语言编制的程序可以相互转换。STEP 7-Micro/WIN 32提供两套指令集,即SIMATIC指令集(S7-200方式)和国际标准指

数据传送的控制方式

数据传送的控制方式 程序控制的数据传送分为无条件传送、查询传送和中断传送,这类传送方式的特点是以CPU为中心,数据传送的控制来自CPU,通过预先编制好的输入或输出程序(传送指令和I/O指令)实现数据的传送。这种传送方式的数据传送速度较低,传送路径要经过CPU内部的寄存器,同时数据的输入输出的响应也较慢。 一、无条件传送方式 又称“同步传送方式”。主要用于外设的定时是固定的并且是已知的场合,外设必须在微处理器限定的指令时间内准备就绪,并完成数据的接收或发送。 通常采用的办法是:把I/O指令插入到程序中,当程序执行到该I/O指令时,外设必定已为传送数据作好准备,于是在此指令时间内完成数据传送任务。无条件传送是最简便的传送方式,它所需的硬件和软件都较少。 二、查询传送方式 无条件传送对于那些总是准备好的外设来说是比较适用的,但是,还有许多外设并不是总是准备好的。当CPU与这类外设进行数据交换,经常采用程序查询方式。查询方式传送数据的过程如下: 1、如果CPU要从外设接收一个数据,CPU首先查询外设的状态,看外设数据是否准备好,若没有准备好,则等待;若外设已将数据准备好,则CPU由外设读取数据。 2、接收数据后,CPU向外设发响应信号,表示数据已被接收。外设收到响应信号之后,即可开始下一个数据的准备工作。 3、当CPU需要向外设输出一个数据,同样,CPU首先查询外设的状态,看其是否空闲。若正忙,则等待;若外设准备就绪,处于空闲状态,则CPU向外设送出数据和输出就绪信号,外设接收数据后,向CPU发出数据已收到的状态信息,这样,就完成了一个数据的输出过程。 在条件查询方式下,CPU在与外设打交道时,必须采样READY信号。 (1)查询方式 ◆从硬件上来说,必须有两个端口,状态端口,数据端口。 ◆从软件上来说,必须有查询循环。 (2)查询传送的缺点 不能对外设进行及时的数据交换,这对许多实时性要求较高的外设来说,就可能造成丢

控制转移指令

控制转移指令 通常,程序中的指令都是顺序地逐条进行的,在8086中,指令的执行顺序由CS和IP 决出,每取出一条指令,指令指针IP自动进行调整,一条指令执行完成后,就从该指令之后的下一个存储单元中取出一条指令来执行。利用控制转移指令可以改变CS和IP的值,从而改变指令的执行顺序。为满足程序转移的不同要求,8086提供了无条件转移和过程调用、条件转移、循环控制以及中断指令等几类指令。 无条件转移指令和过程调用指令:JMP—无条件转移、CALL—过程调用、RET—过程返回条件转移:JZ\JE等十条指令—直接标志转移、JA\JNBE等8条指令—间接标志转移 条件循环控制:LOOP—CX≠0则循环、LOOPE和LOOPZ—CX≠0和ZF=1则循环、LOOPNE 和LOOPNE—CX≠0和ZF=0则循环、JCXZ—CX=0则循环 中断:INT—中断、INTO—溢出中断、IRET—中断返回 1、无条件转移和过程调用指令 1)JMP 无条件转移指令 指令格式:JMP 目的 指令功能:使程序无条件转移到指令中指定的目的地址去执行。 这类指令又分为两种类型: 第一种类型:段内转移或近(NEAR)转移,转移指令目的地址和JMP指令在同一代码段中,转移时仅改变IP寄存器的内容,段地址CS的值不变。 第二种类型:段间转移,又被称之为远(FAR)转移,转移指令的目的地址和JMP指令不在同一代码段中,发生转移时,CS和IP 的值都要改变也就是说,程序要转移到另一个代码段中去执行。 不论是段内还是段间转移,就转移地址提供的方式而言,又可分为两种方式: 第一种方式:直接转移,在指令码中直接给出转移的目的地址,目的操作数用一个标号来表示,它又分为段内直接转移和段间直接转移。 第二种方式:间接转移,目的地址包含在某个16位寄存器或存储单元中,CPU必须根据寄存器或存储器的寻址方式,间接地求出转移地址。同样,这类转移也可分为段内间接转移和段间间接转移。 所以无条件转移指令可分为段内直接转移、段内间接转移、段间直接转移、段间间接转移这四种不同类型和方式。 段内直接转移指令 指令格式:JMP SHORT 标号 JMP NEAR PTR 标号(或JMP 标号) 这是一种段内相对转移指令,目的操作数均用标号表示,程序转向的有效地址等于当前IP 寄存器内容加上8位或者16位位移量(DISP).如果位移量位是16位,那么表示近转移,说

相关主题