5控制转移指令实验
控制状态图或顺控图

亮
Ø按下停车按钮SB2后则立即停止运行
你现在浏览的是第六页,共60页
图5.2 运料小车的控制
你现在浏览的是第七页,共60页
运料小车控制状态转移图
你现在浏览的是第八页,共60页
图5.3 运料小车控制状态转移图
你现在浏览的是第九页,共60页
5.2 步进梯形图及步进指令 5.2.1 步进梯形图 Ø图5.4是将图5.3的状态转移图(SFC图)改画成步进梯
STL
步进指令
在顺控程序上面进行工序步进型控制的指令
RET
步进复位指令 表示状态流程的结束,返回主程序(母线)的指令
2. 指令功能及说明
(1)主控功能
ØSTL指令仅仅对状态器S有效 ØSTL指令将状态器S的触点与主母线相连并提供主控功能
Ø使用STL指令后,触点的右侧起点处要使用LD (LDI)指令 ,步进复位指令RET使LD点返回主母线
驱动该继电器,则禁止在所有状态之间转移。然而,即使 在禁止状态转移下,由于状态内的程序仍然动作,因此, 输出线圈等不会自动断开。
STL动作
任一状态接通时,M8046自动接通。用于避免与其他流程 同时启动或用作工序的动作标志。
STL监视有效
驱动该继电器,则编程功能可自动读出正在动作中的状态 并加以显示。详细事项请参考各外围设备的手册。
Ø步与步(状态与状态)之间用有向线段来连接,如果进行方向是 从上到下或从左到右,则线段上的箭头可以不画,状态转移图中, 会发生步的活动状态的进展,该进展按有向连续规定的线路进行, 这种进展是由转换条件的实现来完成的
《单片机应用系统设计》教学大纲及知识点

《单片机应用系统设计》课程教学大纲一、本课程的地位、作用和任务本课程是在学生学完电子技术类基础课程和微机应用类基础课程之后,为加强对学生技术应用能力的培养而开设的体现电子技术、计算机技术综合应用的综合性课程。
本课程的任务是使学生获得单片机应用系统设计的基本理论、基本知识与基本技能,掌握单片机应用系统各主要环节的设计、调试方法,并了解单片机在测量、控制等电子技术应用领域的应用。
初步具备应用单片机进行设备技术改造、产品开发的能力。
二、理论教学内容绪论单片机概述0.1 引言0.2 单片机的特点0.3 单片机的发展0.4 MCS-51单片机系列简介第一章MCS–51单片机的结构和原理1. 1 单片机的内部结构1. 2 MCS–51的外部引脚及功能1. 3 MCS–51的存储器配置1. 4 并行输入/输出接口电路1. 5 时钟电路与时序1. 6 MCS –51最小系统设计第二章MCS-51的指令系统2.1 MCS-51指令系统概述2.2 数据传送类指令2.3 算术运算类指令2.4逻辑运算及移位类指令2.5 控制转移类指令2.6 布尔变量操作类指令第三章汇编语言程序设计3.1 汇编语言源程序的格式3.2 伪指令3.3 汇编语言程序举例第四章MCS—51的中断与定时4.1 MCS—51单片机的中断系统4.2 MCS–51的定时/计数器第五章存储器扩展技术5.1 概述5.2 程序存储器的扩展5.3 数据存储器的扩展5.4 PROME2及其扩展第六章I/O扩展技术6.1 I/O接口概述6.2 MCS-51并行I/O口的直接使用6.3 简单I/O扩展6.4 8255并行I/O口6.5 8155简介第七章键盘/显示器扩展技术7.1 单片机应用系统中的人机通道7.2 键盘及其接口7. 3 显示器及接口7.4 专用的8279键盘/显示器接口第八章模拟量输入/输出通道8.1 模拟量输入通道8.2 模拟量输出通道第九章MCS-51的串行通信9.1 串行通信基础9.2 串行接口的构成与工作方式9.3 串行口的典型应用9.4 单片机的多机通信9.5 RS-232C串行总线第十章应用程序设计技术10.1 智能仪表的一般结构10.2 单片机应用系统设计举例第十一章高性能单片机PIC16F8XX介绍11.1 PIC16F87X的特点11.2 PIC16F87X的结构与配置11.3 PIC16F87X的功能部件11.4 PIC16F87X的应用举例三、实践教学的内容和要求实验一联机仿真操作练习实验目的:进一步掌握开发工具的应用实验内容:学习PC机与开发机联机仿真的操作方法实验二指令系统和编程练习实验目的:掌握8051单片机常用指令的使用和编程实验内容:用8051单片机的常见指令编写简单的多字节加减法程序。
计算机组成原理实验报告微程序控制器实验

实验三微程序控制器实验一. 实验目的与要求:实验目的:1.理解时序产生器的原理,了解时钟和时序信号的波形;2.掌握微程序控制器的功能,组成知识;3.掌握微指令格式和各字段功能;4.掌握微程序的编制,写入,观察微程序的运行,学习基本指令的执行流程。
实验要求:1.实验前,要求做好实验预习,并复习已经学过的控制信号的作用;2.按练习一要求完成测量波形的操作,画出TS1,TS2,TS3,TS4的波形,并测出所用的脉冲Ф周期。
按练习二的要求输入微指令的二进制代码表,并单步运行五条机器指令。
二. 实验方案:按实验图在实验仪上接好线后,仔细检查无误后可接通电源。
1.练习一:用联机软件的逻辑示波器观测时序信号,测量Ф,TS1,TS2,TS3,TS4信号的方法如下:(1) TATE UNIT 中STOP开关置为“RUN”状态(向上拨),STEP开关置为“EXEC”状态(向上拨)。
(2) 将SWITCH UNIT 中右下角CLR开关置为“1”(向上拨)。
(3) 按动“START”按钮,即可产生连续脉冲。
(4)调试”菜单下的“显示逻辑示波器窗口,即可出现测量波形的画面。
(5)探头一端接实验仪左上角的CH1,另一端接STATE UNIT中的Ф插座,即可测出时钟Ф的波形。
(6)探头一端接实验仪左上角的CH2,另一端接STATE UNIT中的TS1插座,即可测出TS1的波形;(7)探头一端接实验仪左上角的CH1,另一端接STATE UNIT中的TS2插座,即可测出TS2的波形。
(8)将红色探头一端接实验仪左上角的CH1,另一端接STATE UNIT中的TS3插座,即可测出TS3的波形。
(9)将红色探头一端接实验仪左上角的CH1,另一端接STATE UNIT中的TS4插座,即可测出TS4的波形。
2.观察微程序控制器的工作原理:①关掉实验仪电源,拔掉前面测时序信号的接线;②编程写入E2PROM 2816A.将编程开关(MJ20)置为PROM(编程)状态;B.将实验板上STATE UNIT 中的STEP置为STEP状态,STOP置为RUN状态,SWITCH UNIT中CLR开关置为1状态;C.在右上角的SWITCH UNIT中UA5-UA0开关上置表3.2中某个要写的微地址;D.在MK24-MK1开关上置表3.2中要写的微地址后面的24位微代码,24位开关对应24位显示灯,开关置为1时灯亮,为0时灯灭;E.启动时序电路,即将微代码写入到E2PROM 2816的相应地址对应的单元中;F.重复C-E步骤,将表3.2的每一行写入E2PROM 2816。
单片机实验

实验一数据传送指令的使用及编程方法1.片内RAM的数据传送【实验程序】源程序单元内容ORG 0000HLJMP MAINORG 0030HMAIN:MOV R0,#40H R0MOV R1,#41H R1MOV A,R0 AMOV 30H,A 30HMOV 20H,30H 20HMOV A,#30H AMOV @R0,A 40HMOV A,30H AMOV R7, A R7MOV A,@R0 AMOV R7,A R7MOV DPTR,#0A702H DPTRMOV 30H,R7 30HMOV 20H,@R0 20HMOV 21H,#10H 21HMOV @R0,21H 10HMOV @R1,#01H 41HSJMP $END【实验要求】(1)理解源程序中每条数据传送指令的操作含义,将结果填入每个单元的相应“内容”中。
(2)单步运行源程序,逐条检查“内容”是否正确。
2.外部RAM的数据传送。
【实验程序】源程序单元内容ORG 0000HLJMP MAINORG 0030HMAIN:MOV DPTR,#1A33H DPTRMOV A,#80H AMOVX @DPTR,A 1A33HMOV A,#00H AMOV P2,#1AH P2MOV R0,#34H R0MOV R1,#35H R1MOVX @R0,A 1A34HMOVX A,@DPTR AMOVX @R1,A 1A35HMOVX A,@R0 AMOVX A,@R1 ASJMP $END【实验要求】(1)理解源程序指令含义,指出各存储单元的内容,写在右边的“内容”中。
(2)单步运行源程序,逐条验证分析结果。
3.片内特殊功能寄存器(SFR)的数据传送【实验程序】源程序ORG 0000HLJMP MAINORG 0030HMAIN:MOV SP,#60H ;设栈指针MOV R0,#30H ;#30H送R0(0区)MOV P1,#0EFH ;#EFH送P1口(直接地址为90H)MOV @R0,P1 ;将P1内容送R0所指单元MOV C,P1. 1 ;将P1口的D1位内容送CMOV P1. 7,C ;将CY的内容送P1. 7PUSH PSW ;保护0区寄存器MOV PSW,#08H ;选择1区寄存器MOV R0,#40H ;#40H送1区寄存器R0(08H)MOV @R0,P1 ;P1口内容送1区R0所指单元POP PSW ;恢复0区寄存器SJMP $END【实验要求】(1)理解源程序指令含义,并参照注释写出结果。
微机原理2007年-第三章-指令系统第五节控制转移

③ 段间直接转移 段间直接转移
指令中给出的16位的段和 位的偏移地址送到CS和IP。 指令中给出的16位的段和16位的偏移地址送到CS和IP。 位的段和16位的偏移地址送到
④ 段间间接转移 段间间接转移
MEM中给出的 位的段和 位的偏移地址送到CS和IP。 MEM中给出的16位的段和16位的偏移地址送到CS和IP。 中给出的16位的段和16位的偏移地址送到
6
例:代码段内有一条无条件转移指令
JMP SHORT NEXT 指令本身占有两个字节 操作码占一个字节; 位位移量占有一个字节 操作码占一个字节;8位位移量占有一个字节
内存
... 源程序 : 条件转移指令: 条件转移指令:JMP SHORT next qqq: ... ... next: MOV AL,03H
5
① 段内直接转移 转移的目标地址由指令直接给出。 段内转移,故转移后CS内容保持不变, 段内转移,故转移后CS内容保持不变,只改 变IP的值。 IP的值。
汇编语言中格式 JMP SHORT OPRD JMP NEAR PTR OPRD 位移量 转移范围 8位 -128~+127 128~ 16位 16位 -32768~+32767 32768~
13
JMP DWORD PTR [SI]的机器码 11111111 11101100 DS:[SI]
4000 DS +) 1212 SI 41212 41212 41213 41214 41215
00 10 00 4A
1000 4A00
IP CS
段间间接转移操作示意图
14
(2)条件转移指令 (2)条件转移指令 - JXX 条件转移指令可实现程序的条件分支。 条件转移指令根据标志位的状态来决定是 否进行分支转移。(判位转移) 格式: JXX label xx为条件名称缩写 ;xx为条件名称缩写 指令的转移范围为-128~+127字节。 指令的转移范围为-128~+127字节。
控制转移类指令ppt课件(全)

(4)CJNE @Ri,#data,rel 该指令功能:若(( Ri ))≥ data,(CY)=0; 若(( Ri ))<data ,CY=1; 若(( Ri ))≠ data,则PC←(PC)+rel,转移; 若(( Ri ))=data,则程序顺序执行.
例:如果(A) ≠ 00H,转移到CX1;如果(R1) ≠ 10H, 转移到CX2;如果(A) ≠(60H),转移到CX3。程序段 如下:
(2)指令长短不一样。LJMP是3字节指令;AJMP、 SJMP是2字节指令;JMP是1字节指令。
(3)指令机器码构成不同。AJMP、LJMP、JMP后跟 的是绝对地址,而SJMP后跟的是相对地址。
(4)地址特点不同。LJMP、AJMP、SJMP的转移目标 地址是固定的,程序执行过程中不变;JMP的转移目 标地址随程序的执行是动态变化的。
1. 长跳转指令 LJMP (3字节) LJMP addr16 ; PC addr16
•执行该指令时, 将目标语句的16位地址addr16装入 PC, 程序无条件转向指定的目标语句执行。 •由于长跳转指令提供的是16位地址,对应64KB的程 序存储器地址空间,所以可跳转到64KB程序存储器 地址空间的任何地方。 •实际应用中长跳转汇编指令写作“LJMP 目标语句 标号”的形式,如“LJMP LOOP”。
• 指令对A、DPTR和标志位均无影响。
注意:以上四条指令结果均不影响程序状态 字寄存器 PSW 。
5.LJMP、AJMP、SJMP、JMP四条无条件转移指令的 区别:
(1)转移范围不一样。LJMP、JMP转移范围是64KB; AJMP转移范围是与当前PC值同一个2KB区间;SJMP 转移范围是相对当前PC值的-128B~+127B范围内。
微机原理6_控制转移类指令

还可用SAR、ROR和RCR指令
;将AX的最低位D0移进CF
jnc even
;标志CF=0,即D0=0:AX内是偶数,程序转移
add ax,1
;标志CF=1,即D0=1:AX内的奇数,加1
even: shr ax,1
;AX←AX÷2
第2章:例题2.22解答3 用JNS指令实现
mov bx,ax
ror bx,1
done: ……
第2章:例2.24 偶校验
;对DL寄存器中8位数据进行偶校验 ;校验位存入CF标志
2:将最低位用移位指令移至进位标志,判断进位标志是0, AX就是偶数;否则,为奇数
3:将最低位用移位指令移至最高位(符号位),判断符号 标志是0,AX就是偶数;否则,为奇数
第2章:例题2.22解答1 用JZ指令实现
test ax,01h
;测试AX的最低位D0(不用AND指令,以免改变AX)
jz even
第2章:无条件转移指令JMP(jump)
JMP label
;段内转移、相对寻址
;IP←IP+位移量
演示
JMP r16/m16
;段内转移、间接寻址
;IP←r16/m16
演示 演示
JMP far ptr label ;段间转移、直接寻址
;IP←偏移地址,CS←段地址
演示
JMP far ptr mem ;段间转移,间接寻址
第2章:例题2.22
题目:将AX中存放的无符号数除以2,如果是奇 数则加1后除以2 问题:如何判断AX中的数据是奇数还是偶数? 解答:判断AX最低位是“0”(偶数),还是“1” (奇数)。可以用位操作类指令
1:用逻辑与指令将除最低位外的其他位变成0,保留最低位 不变。判断这个数据是0,AX就是偶数;否则,为奇数
PLC5章状态转移图及编程方法

(2) 台车后退碰到限位开关SQ2后,台车电机M停转,台车停 车,停5 s,第二次前进,碰到限位开关SQ3,再次后退。
(3) 当后退再次碰到限位开关SQ2时,台车停止(或者 继续下一个循环)。
5.1 状态转移图及状态功能
PLC程序设计步骤
• 根据可编程序控制器系统硬件结构和生产工艺要求,在软件规格说 明书的基础上,用相应的编程语言指令,编制实际应用程序并形成 程序说明书的过程就是程序设计。
• PLC程序设计一般分为以下几个步骤: • 程序设计前的准备工作。 • 程序框图设计。 • 程序测试。 • 编写程序说明书。
1.程序设计前的准备工作
• 在熟悉被控对象的同时,还要认真借鉴前人在程 序设计中的经验和教训,总结各种问题的解决方 法——哪些是成功的,哪些是失败的,为什么。 总之,在程序设计之前,掌握东西越多,对问题 思考得越深入,程序设计就会越得应手。
• 3)充分利用手头的硬件和软件工具例如, 硬件工具有:编程器、GPC(图形编程器)、 FIT(工厂智能终端);编程软件有:LSS、 SSS、CPT、CX—ProgTammer、西门子STEP7 如果是利用计算机编程,可以大大提高编 程的效率和质量。
(3) 只要在不相邻的步进段内,则可重复使用同一编号的 计时器。这样,在一般的步进控制中只需使用2~3个计时器 就够了,可以节省很多计时器。
(4) 状态也可以作为一般中间继电器使用,其功能与M一 样,但作一般中间继电器使用时就不能再提供STL触点了。
5.2 单流程状态转移图的编程
第三步:设计步进梯形图
状态的转移条件可以是单一的,也可以是多个元件的串、 并联组合,如图所示。
微机原理软件实验报告

实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。
2. 掌握汇编语言程序设计的基本方法。
3. 通过实验,加深对微机原理的理解。
二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。
2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。
四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。
控制转移类指令

时,计算前应加上FF,即rel=FF90H(带符号扩展)
( 3)形成转移目标地址,
PC=PC+rel=2002+FF90H
=1F92H,向2000H前转移
解 6: (1)产生当前PC,PC=PC+2=2002H (2)形成转移目标地址,
PC=PC+rel=2002+FFFEH=2000H,
程序在原地踏步。 常写为:SJMP $; $表示0FEH
第3章 MCS-51指令系统
实训3 指令的应用 3.1 简介
3.2 寻址方式
3.3 指令系统
本章小结
习题3
⒌ 循环移位指令(4条)
① 循环左移:RL A 不影响标志位 ② 带Cy循环左移:RLC 影响Cy,P
A
③ 循环右移:RR A 不影响标志位 ④ 带Cy循环右移:RRC 影响Cy,P A
二进制数的特点:左移一位增大一倍,右移一 位减少一半。 在汇编语言程序中,通常用带CY(CY=0)循环 左移实现乘2操作,通常用带CY(CY=0)循环右移 实现除以2操作。
例3 某已知数存在R4中,试将其乘以2存在R3 中,除以2存在R2中。
编程如下:
CLR C MOV RLC MOV CLR MOV RRC A MOV R2,A A,R4 A R3,A C A,R4
3.3.5 控制转移类指令 控制转移类指令的本质是改变程序计数器PC的内容, 从而改变程序的执行方向。控制转移类指令分为:无条 件转移指令、条件转移指令及调用和返回指令。
四、控制转移类指令
长转移指令(1 条):LJMP 无条件转 移指令 绝对转移指令(1 条):AJMP 相对转移指令(1 条):SJMP 间接寻址的无条件转移指令(1 条):JMP 控制转移 类指令 累加器 A 判 0 指令(2 条):JZ、JNZ 条件转移 比较转移指令(4 条):CJNE 减 1 非零转移指令(2 条):DJNZ 长调用指令(1 条):LCALL 调用和返 回指令 绝对调用指令(1 条):ACALL 返回指令(2 条):RET、RETI 空操作指令(1 条):NOP
3.5 控制转移和位操作指令(8)

2、条件转移指令 条件转移就是程序转移是有条件的。执行条件转移指 令时,如指令中规定的条件满足,则进行程序转移,否则 程序顺序执行。条件转移有如下指令: (1)累加器判零转移指令:JZ rel和 JNZ rel指令 这两条指令都是二字节指令,是有条件的相对转移指令, 以rel为偏移量。 (2)数值比较条件转移指令 数值比较条件转移指令把两个操作数进行比较,比较 结果作为条件来控制程序转移。共有四条指令: CJNE A,#data,rel;累加器内容与立即数不等转移 CJNE A,direct,rn ,#data,rel ;寄存器内容与立即数不等转移 CJNE @Ri,#data,rel ;内部RAM前128单元内容与立 即数不等转移。
汇编语言程序中,为等待中断或程序结束,常使程 序“原地踏步” ,对此可使用SJMP指令完成:HERE: SJMP HERE 或 HERE:SJMP $指令机器码为 80FEH。在汇编语言中,以“$”代表PC的当前值。 执行指令:L00P:SJMP L00P1,如果L00P的标 号值为0100H(即SJMP这条指令的机器码存于0100H 和0101H两个单元之中),标号L00P1值为0123H,即 跳转的目标地址为0123H,则指令的第二个字节(相对 偏移量)应为:rel=0123H一0102H=21H 。 (4)基址加变址寻址转移(变址转移)指令: JMP @A+DPTR ; (PC)←(A)+(DPTR) 这是一条一字节转移指令,转移的目的地址=(A) +(DPTR)。指令以DPTR内容为基址,而以A的内容 作变址。只要把DPTR的值固定,而给A赋以不同的值, 即可实现程序的多分支转移。键盘译码程序就是本指令 的一个典型应用。 (如P113例3.30)
2、位置位、复位指令 SETB C ; (Cy)←l SETB bit ; (bit)←1 CLR C ; (Cy)←0 CLR bit ; (bit)←0 3、位运算指令 ANL C,bit ; (Cy)←(Cy)∧(bit) ANL C,/ bit ; (Cy)←(Cy)∧/( bit ) ORL C,bit ; (Cy)←(Cy)∨(bit) ORL C,/ bit ; (Cy)←(Cy)∨/( bit ) CPL C ; (Cy)←/(Cy) CPL bit ; (bit)←/(bit)(P120例3.37) 4、位控制转移指令 位控制转移指令就是以位的状态作为实现程序转移的 判断条件。
控制转移类指令

MOV A,R7
RL A ;键值2倍,AJMP指令为双字节指令
MOV DPTR,#KEYG
JMP @A+DPTR
•••
KEYG: AJMP KEY0
KEYG+2: AJMP KEY1
•••
KEYG+30: AJMP KEY15
2.条件转移指令
条件转移指令是当满足给定条件时,程序转移到 目标地址去执行;条件不满足则顺序执行下一条 指令
用在中断服务程序的末尾 RETI与RET指令区别: RETI在返回的同
时同时释放中断逻辑
CJNE @Ri,#data,rel;
(PC)←(PC)+3 若data<((Ri)),(PC)←(PC)+rel且Cy←0; 若data>((Ri)),(PC)←(PC)+rel且Cy←1; 若data=((Ri)),顺序执行且Cy←0
例: MOV A, #40H
MOV R0,#10H
DJNZ direct,rel ;
(PC)←(PC)+3,(direct)←(direct)-1 当(diect)≠0时,(PC)←(PC)+rel; 当(direct)=0时,程序顺序执行。
注:操作数的内容先减1再判零,不等于0时转移
3.子程序调用
本指令完成两项操作:①把PC当前值压入堆栈;② 把子程序入口地址送PC。
⑴长调用指令 LCALL addr16 ;
(PC)←(PC)+3
(SP)←(SP)+1,((SP))←(PC)7~0;
(SP)←(SP)+1,((SP))←(PC)15~8;Biblioteka PC15~0←addr16
控制转移类指令和位操作指令

控制转移类指令和位操作指令(一).控制转移类指令计算机运行过程中,有时因为操作的需要,程序不能按顺序逐条执行指令,需要改变程序运行方向,即将程序跳转到某个指定的地址再顺序执行下去。
控制转移类指令的功能就是根据要求修改程序计数器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,向前可跳转127JMP @A+DPTR ;A+DPTR→PC ,属散转指令,无条件转向A与DPTR内容相加后形成的新地址例执行指令LJMP 9100H不管这条指令存放在哪里,执行时将使程序转移到9100H,和AJMP,SJMP指令是有差别的。
例程序2000H MOV R0 , #10H ;10H→PC2002H 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顺序执行CJNE A, direct, rel ;A≠ (direct)转向PC+3+rel→PC且当A>(direct),Cy=0;当A<(direct),Cy=1;否则A=(direct),PC+3→PC即顺序执行CJNE A, #data, rel ;A data P转向PC+3+rel→PC且当A >data,Cy=0;当A <data,Cy=1,;A=data,PC+3→PC顺序执行CJNZ Rn, #data, rel ;Rn≠data转向PC+3+rel→PC;且当Rn>data,Cy=0,当Rn<data,Cy=1;Rn=data,PC+3→PC顺序执行CJNE @Ri,#data, rel ;(Ri) ≠data ,PC+3+rel→PC;且当(Ri)>data ,Cy=0,当(Ri)<data,Cy=1;(Ri)=data, PC+3→PC顺序执行DJNZ Rn, rel ;Rn-1→Rn ,Rn ≠0转向PC+2+rel→PC;Rn=0,PC+2→PC顺序执行DJNZ direct, rel ;(direct)-1→(direct),(direct) ≠0转向 PC+2+rel→PC;(direct)=0 ,PC+2→PC顺序执行注意:1)CJNE类指令借用进位标志Cy作为比较结果的标志位。
2.3.5控制转移指令

例:某温度控制系 统,采集的温度值 (Ta)放在累加器A 中,在内部RAM54H单 元存放温度下限值 (T54),在55H单元 存放温度上限值 (T55)。若Ta>T55, 程序转向JW(降温 处理程序);若 Ta<T54,则程序转向 SW(升温处理程序); 若T55≥Ta≥T54,则 程序转向FH(返回 主程序)。
在指令中提供了子程序入口地址的低11位,这 11位地址的a7~a0在指令的第二字节中,a10~a8 则占据第一字节的高3位。 为了实现子程序调用,该指令共完成两项操作: 断点保护 断点保护是通过自动方式的堆栈操作来实现的, 即把PC值自动送堆栈保存起来,待子程序返回时再送 回该PC值。 构造目的地址 目的地址的构造是在PC当前值的基础上以指令提 供的11位地址取代PC的低11位,而PC的高5位不变。
二、条件转移指令
条件所谓条件转移就是指程序转移是有条件的。 执行条件转移指令时,如指令中规定的条件满足, 则进行程序转移,否则程序顺序执行。 1、累加器判零转移指令
JZ rel ; 若(A)=0,则PC←(PC)+2+rel
若(A)≠0,则PC←(PC) +2 JNZ rel ; 若(A)≠0,则PC←(PC)+2+rel 若(A)=0,则PC←(PC)+2 这两条指令都是二字节指令,是有条件的相对转
(2) 长调用指令
LCALL addr16
给 出。指令执行后,断点进栈保存,调用addr16地址 的子程序。因此本指令的操作内容可表出为: PC←(PC)+3 SP←(SP)+1,(SP)←(PC)7-0 SP←(SP)+1,(SP)←(PC)15-8 PC15~0←addr16 本指令是三字节指令,调用地址在指令中直接
微机原理与应用:第十四讲 控制转移指令

JMP @A+DPTR的跳转范围是以DPTR内容为起始点,向 下跳转255个单元。
2K页内跳转指令AJMP addr11,跳转范围是存储器 某一页面内。
13
转移指令的比较续
FFFFH FFFEH
┆
a7…a0 a15…a8
解: 由于指令执行前(TI)=1,则该指令条件满足, 转移地址=8053H+3+93H=8056H+FF93H=7FE9H, 指令执行后(PC)=7FE9H,
根据该指令的功能,当该指令发生转移时,TI清零,即TI=0。
22
二、比较不相等转移指令
(1)CJNE
A,
direct, rel
指令功能:如果(A)≠(direct),条件满足转移。
rel 是带符号补码的偏移量,它的值可正可负。
5
相对转移指令续
❖ 从以上转移地址形成的公式可知,转移地址是相对于当 前PC值作相对偏移。
❖ 如果偏移量为正,程序就往下跳;如果偏移量为负,程 序就往上跳
6
例3-45
若执行的相对转移指令的地址为8123H,其偏移量 为04H,请问该指令执行的结果,即转移地址为多少?
这组转移指令有一个共性,就是其转移地址的形成 都是按相对寻址的方式来形成的。
本组指令有测试条件符合转移指令、比较不相等转 移指令和减1不为零转移指令。
17
一、测试条件符合转移指令
(1)累加器ACC内容是否为零条件转移指令
JZ 转移地址; 01100000
rel
JNZ 转移地址; 01110000
rel
解: LOOP: NEXT: STOP:
控制转移指令

2.条件转移指令 条件转移指令 A判零转移指令(2字节) 判零转移指令( 字节 字节) 判零转移指令 • JZ rel (A)=0,转移;(PC)+2+rel PC ) ,转移; ) (A)≠0,则顺序执行 ) ,则顺序执行;(PC)+2 PC 。 • JNZ rel (A)≠0,转移;(PC)+2+rel PC ) ,转移; ) (A)=0,则顺序执行 ) ,则顺序执行;(PC)+2 PC
变址寻址转移指令: 字节) 变址寻址转移指令: (1字节) 字节 JMP @A+DPTR 根据A中数值的不同 中数值的不同,转向不同的子 根据 中数值的不同 转向不同的子 程序入口. 程序入口
(A)+(DPTR) PC
的值( ),转向相应的处理 例:根据A的值(0~3),转向相应的处理 根据 的值 ), 程序。( 。(LJMP指令 字节) 指令3字节 程序。( 指令 字节) MOV R1,A , RL A ;(A) ;( )*2 ADD A,R1 ;(A) , ;( )*3 MOV DPTR,#TABLE , JMP @A+DPTR TABLE: LJMP LOOP0;转0处理程序 : ; 处理程序 LJMP LOOP1 ; 转1处理程序 处理程序 LJMP LOOP2 ;转2处理程序 处理程序 LJMP LOOP3 ;转3处理程序 处理程序
短转移指令: 字节) 短转移指令: (2字节) 字节 SJMP rel (PC)+2+rel (PC) rel: 8位带符号数补码 位带符号数补码 转移范围: 转移范围 -128(-80H)~+127(7FH)(256B) ( ) ( ) 当前地址(PC)=2000H 例:当前地址 当前地址 执行 SJMP 56H 结果:目标地址 目标地址(PC)=2058H 结果 目标地址
C51控制转移类指令及位操作指令

采用助记符有:AJMP、LJMP、SJMP、JZ、 JNZ、CJNE、DJNZ、ACALL、LCALL、RET、 RETI、NOP等13种。
2
整理课件
条件转移指令
条件转移指令仅仅在满足指令中规定的条件(如累 加器内容是否为零,两个操作数是否相等) 时才执行无 条件转移,否则程序顺序执行。
•所调用的子程序的首地址必须与ACALL后面指令的 第一个字节在同一个2 KB区域内。
19
整理课件
例 : 设 ( SP ) = 60H , ( PC ) = 0123H , 子 程 序 SUBRTN的首地址为0456H。 执行指令为ACALL SUBRTN 执行结果为(PC)+2=0123H+2=0125H→(PC), 将(PC)=0125H压入堆栈:25H压入(SP)+1=61H, 01H压入(SP)十l=62H,此时(SP)=62H。 addr11 PC10–0 , PC=0456H
若(操作数1) >(操作数2),清进位标志(CY)。 若(操作数1) <(操作数2),则置位进位标志(CY)。 • 值相等,程序继续执行。 程序转移的范围是从(PC)+3为起始的+127~一128B 的单元地址。
6
整理课件
例:温度控制程序
某温度控制系统,A中存温度采样值Ta,(20H)=温度下限 值T20,(30H)=温度上限值T30。若Ta>T30,程序转降温JW, 若Ta<T20,程序转升温SW,若T30≥Ta≥T20程序转FH返回主程 序。
;5个方波,10个状态
LOP:
CPL P1.7
;P1.7状态变反
基本指令的应用实验原理

基本指令的应用实验原理1. 引言在计算机科学中,指令是计算机执行特定操作的一组指示。
指令是计算机程序的基本构建模块,通过组合不同的指令,可以完成各种复杂的任务。
在本文中,我们将探讨基本指令的应用实验原理。
2. 实验目的本实验的目的是了解基本指令的应用,并通过实际操作来加深对指令的理解。
通过这些实验,我们可以掌握如何编写和执行基本指令,从而为进一步学习计算机科学打下坚实的基础。
3. 实验步骤以下是实验中常用的基本指令及其应用实验原理的一些列点:•加载指令:用于将数据从存储器加载到寄存器中,以供后续指令使用。
加载指令的原理是通过地址寻址将数据从存储器读取到寄存器中。
•存储指令:用于将数据从寄存器存储到存储器中,以便后续操作使用。
存储指令的原理是通过地址寻址将数据从寄存器写入到存储器中。
•算术指令:用于进行基本的算术运算,例如加法、减法、乘法和除法等。
算术指令的原理是通过执行特定的算术运算来得到结果。
•逻辑指令:用于进行逻辑运算,例如与、或、非、异或等。
逻辑指令的原理是通过执行特定的逻辑运算来得到结果。
•转移指令:用于改变程序的控制流程,例如无条件跳转、条件跳转和循环等。
转移指令的原理是通过改变指令的执行顺序来实现程序的分支和循环。
4. 实验原理基本指令的实验原理是通过编写和执行特定的指令来实现特定的操作。
在计算机中,指令通常是以二进制形式表示的。
计算机通过解码和执行这些二进制指令来完成各种任务。
指令的编写通常是由程序员完成的。
程序员使用特定的程序设计语言来编写指令,然后将程序翻译成计算机可以执行的机器代码。
编写指令需要考虑指令的格式、操作数的类型和寻址方式等。
指令的执行是由计算机硬件完成的。
计算机根据当前指令的二进制编码来执行相应的操作,并更新寄存器和存储器中的数据。
执行指令需要考虑指令的时序、数据的传输和运算等。
5. 实验结果通过实验,我们可以获得以下结果: - 加载指令可以成功将数据从存储器加载到寄存器中。
计算机组成原理微程序控制器实验报告

计算机组成原理实验报告三:微程序控制器实验2011-05-06 01:00:09|分类:实验报告| 标签:实验微程序字段微指令信号|字号大中小订阅实验三:微程序控制器实验一、实验目的与要求:实验目的:1、掌握时序产生器的原理和具体操作。
2、掌握微程序控制器的功能、组成知识。
3、掌握微程序的编制、写入、观察微程序的运行,学习基本指令的执行流程。
要求:做好实验预习,掌握进位控制运算器的原理。
实验之前,应认真准备,写出实验步骤和具体分析内容,否则实验效率会特别低,一次实验时间根本无法完成实验任务,即使基本做对了,也很难说学懂了些什么重要教学内容。
二、实验方案:【1】、连接好实验线路,检查无误后接通电源。
【2】、编程:(1)将编程开关(MJ20)置为PROM(编程)状态;(2)将STATE UNIT中的STEP置为"STEP"状态,STOP置为"RUN"状态;(3)在UA5-UA0开关上置要写的某个微地址(八进制);(4)在MK24-MK1开关上置要写的微地址相应的24位微代码,24位开关对应24位显示灯,开关量为"1"灯亮,为"0"灯灭;(5)启动时序电路(按动启动按钮START),即将微代码写入到E2PROM2816的相应地址对应的单元中;(6)重复(3)~(5)步骤将每一条微指令写入E2PROM2816。
【3】、校验:(1)将编程开关置为READ状态;(2)将STEP开关置为"STEP"状态,STOP开关置为"RUN"状态;(3)在开关UA5~UA0上置好要读的某个微地址;(4)按动START键,启动时序电路,观察显示灯MD24-MD1的状态,检查读出的微代码是否已写入的相同。
如果不同在将开关置于PROM编程状态,重新执行编程步骤;(5)重复(3)、(4)步骤将每一条微指令从E2PROM2816中读出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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单元中。
四、买验参考程序
参考程序l:累加器A判零转移指令和无条件转移指令
参考程序2:减1非零转移指令、调用指令和返回指令
五、实验步骤
1.用实验系统完成实验的步骤
(1)输入源程序。
按第1.2.2节单片机实验系统的使用方法进行操作。
(2)单步运行程序。
即每按一次单步运行键,只执行一条指令。
(3)每执行一条指令后,根据参考程序检查数据栏要求检查每条指令的执行结果,以加深对控制转移指令的理解。
2.用Keil软件完成实验的步骤
(1)建立工程文件,选择单片机。
工程文件名为“jump”,选择单片机型号为Atmel的89C51。
(2)建立源文件,加载源文件。
源文件名为“jump. ASM”。
(3)设置工程的配置参数。
“目标”标签页的晶振频率栏设为12MHz,“输出”标签页的生成HEX文件选择框选中。
(4)进行编译和连接。
(5)进入调试模式,打开存储器窗口。
存储器#1窗口显示以地址OOH开始的片内j
RAM各个存储单元。
(6)单步运行程序。
单击“调试”一“单步”或调试工具栏的单步按按钮,通过存储器窗口和工程窗口的寄存器标签页观察每条指令执行后数据处理的结果,以加深对控制转移指令的理解。
程序调试窗口如图2-6所示。
3.用Proteus软件完成实验的步骤
(1)新建设计文件、设置图纸尺寸、设置网格、保存设计文件。
文件名为“jump”。
(2)选取元器件。
从Proteus元器件库中选取元器件AT89C51(单片机)。
(3)放置元器件、编辑元器件、放置终端、连线。
按图2-8所示放置元器件并连线。
(4)添加源程序、编辑源程序、编译源程序。
源文件名为“jump. ASM”。
(5)加载目标代码文件。
“Clock Frequency”栏中的频率要设为12MHz。
(6)仿真。
单击仿真工具栏“单步运行”按钮》,进入单步运行状态。
分别打开工作寄存器窗口、特殊功能寄存器窗口、片内数据存储器窗口和源代码调试窗口。
单击源代码调试窗口“单步执行”按按钮一次,执行一条指令,通过各调试窗口观察每条指令执行后数据处理的结果,以加深对控制转移指令的理解。
程序调试窗口如图2-8所示。
六、实验分析
1.分析参考程序1中实现无限循环的原因。
2.分析两个参考程序中的累加器A判零转移指令和减1非零转移指令的偏移量的区别。
七、实验思考
1、若将参考程序1中的指令JNZ L2改为CJNE A,#OOH,L2,参考程序1的执行结果如何?
2、若将参考程序2中的指令LCALL L1改为ACCALL L1,该指令的机器码如何翻译?。