文档库 最新最全的文档下载
当前位置:文档库 › 条件跳转指令

条件跳转指令

条件跳转指令
条件跳转指令

条件跳转指令CJ(P)的编号为FNC00

条件跳转指令CJ(P)的编号为FNC00,操作数为指针标号P0~P127,其中P63为END所在步序,不需标记。指针标号允许用变址寄存器修改。CJ和CJP都占3个程序步,指针标号占1步。

如图3-28所示,当X20接通时,则由CJ P9指令跳到标号为P9的指令处开始执行,跳过了程序的一部分,减少了扫描周期。如果X20断开,跳转不会执行,则程序按原顺序执行。

图1 跳转指令的使用

使用跳转指令时应注意:

1)CJP指令表示为脉冲执行方式;

2)在一个程序中一个标号只能出现一次,否则将出错;

3)在跳转执行期间,即使被跳过程序的驱动条件改变,但其线圈(或结果)仍保持跳转前的状态,因为跳转期间根本没有执行这段程序。

4)如果在跳转开始时定时器和计数器已在工作,则在跳转执行期间它们将停止工作,到跳转条件不满足后又继续工作。但对于正在工作的定时器T192~T199和高速计数器C235~C255不管有无跳转仍连续工作。

5)若积算定时器和计数器的复位(RST)指令在跳转区外,即使它们的线圈被跳转,但对它们的复位仍然

有效。

加减法指令的实现

课程设计任务书 学生姓名:专业班级:计算机 指导教师:工作单位:计算机科学与技术学院 题目: 基本模型机的设计——加减法指令的实现 初始条件: 理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数 据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。周二:系统分析,设计程序。 周三、四:编程并上实验平台调试周五:撰写课程设计报告。 指导教师签名:年月日

系主任(或责任教师)签名:年月日 实现普通的加、减法指令 一、设计目的与原理 1、实验目的 本实验,通过掌握各个单元模块的工作原理,进一步将其组成完整的系统,构造成1台基本的模型计算机。并通过这台模型计算机,对计算机的基本组成、部件的设计、部件间的连接、微程序控制器的设计、微指令和微程序的编制等过程有更深的了解,加深对理论课程的理解。 在本试验中,我们将规划读写内存、寄存器、数值计算等功能,并且编写相应的微程序。具体上机调试各个模块单元以进一步掌握整机的概念。 2、实验原理 在本设计中,数据通路的控制将由微程序控制器来完成。在各个模块实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的实验系统中,模型机的运行是在微程序的控制下,实现特定指令的功能。计算机从内存取出一条机器指令到指令执行结束的一个指令周期,全部由微指令和与之相匹配的序列来完成,即1条机器指令对应一个微程序。 二、总体设计 1.模型机逻辑框图 简单的模型计算机由算术逻辑运算单元、微程序单元、堆栈寄存器单元、累加器、启停、时序单元、总线和存储器单元组成。 下图为较典型的实验计算机整体逻辑框图:

汇编实验五条件转移指令

汇编实验五条件转移指令

————————————————————————————————作者:————————————————————————————————日期: 1

实 验 报 告 ── 学年 第 学期 实 验 课 程 汇编语言 学 生 姓 名 123 实 验 项 目 条件转移指令 学 院 计算机科学技术 实 验 性 质 专业选修课 班 级 学 号 实 验 地 点 同 组 人 数 1 第 组 实 验 日 期 第周 星期 第 节 成 绩 5 环 境 参 数 Dosbox-0.74 Masm 5.0 一、实验目的及要求 二、实验原理、实验内容 三、实验仪器设备及材料 四、操作方法与实验步骤 五、实验数据记录及处理 六、实验结果分析及讨论 一、实验目的: 1.8088指令:JZ,JNZ,JC,JNC,CMP,SHR 。 2.程序:用字符搜索法确定字符串长度。 3.程序:16进制数化为ASCII 码的一般方法。 二:实验任务 1.自编程序:修改实验准备程序(二),使除了以16进制数形式显示内存内容外,还能在其右边显示该16进制码所对应的ASCII 字符,07-0D 的控制字符用'.'代替。 源代码:

DATA SEGMENT DATA ENDS STACKS SEGMENT STACK STACKS ENDS CODE SEGMENT 'code' ASSUME CS:CODE,DS:DATA,SS:STACKS START: MOV AX,DATA MOV DS,AX MOV SI,0H MOV BL,10H LOP:MOV DL,[SI] ;先处理高四位 MOV CL,4H SHR DL,CL ;右移四位 CMP DL,0AH ;判断是‘0’-‘9’还是‘a'-’f‘ JC J1 ;是0-9 跳转 ADD DL,7H ;是a-f 要多加7 因为‘9’为 390h ‘A' 为41h 相差7h J1: ADD DL,30H ;以'0'为基址 MOV AH,2H ;输出高四位的ASCII码 INT 21H MOV DL,[SI] ;处理第四位 AND DL,0FH CMP DL,0AH ;同上

实训六、循环指令、跳转指令、顺控继电器(SCR)指令应用

课题 实训六、循环指令、跳转指令、顺控继电器(SCR)指令应用 6课时 教学要求知识目标能力目标情感目标 教材 分析 重点 难点 教具与设备 教法教授法、演示法、实验法 板书 设计 教学内容 复习: 定时器有哪些? 增减计数器指令的应用? 字、字节、双数、实数是什么? 新课教学: (一)循环指令基本知识 1.循环指令格式及功能 西门子S7-200 PLC循环制指令用于控制一段程序的重复执行。它是由FOR和NEXT两部分指令构成循环体系。FOR/NEXT必须成对使用。循环其格式及功能如下表。

梯形图 参数功能 指令功能 EN 使能位 当EN 使能有效时,自动将各参数复位,循环体开始执行,执行到NEXT 指令时返回。每执行一次循环体,当前计数器INDX 增1,达到终值FINAL ,循环结束。 INDX 当前循环次数 INIT 初始值 FINAL 终止值 ENO 电流输出 循环返回,循环体结束指令 FOR 和NEXT 指令可以描述需重复进行一定次数的循环体。每条FOR 指令必须对应一条NEXT 指 令。 FOR 和NEXT 指令执行FOR 指令和NEXT 指令之间的指令。必须指定计数值或者当前循环次数INDX 、初始值(INIT )和终止值(FINAL )。 如果允许FOR/NEXT 循环,除非在循环内部修改了终值,循环体就一直循环执行直到循环结束。当FOR/NEXT 循环执行的过程中可以修改这些值。当循环再次允许时,它把初始值拷贝到INDX 中(当前循环次数)。 如果初值大于终值,那么循环体不被执行。每执行一次循环体,当前计数值增加1,并且将其结果同终值作比较,如果大于终值,那么终止循环 2. FOR-NEXT 指令的有效操作数 输入/输出 数据类型 操作数 INDX INT IW 、QW 、VW 、MW 、SMW 、SW 、T 、C 、LW 、AC 、*VD 、*LD 、*AC INIT 、FINAL INT VW 、IW 、QW 、MW 、SMW 、SW 、T 、C 、LW 、AC 、AIW 、*VD 、*AC 、常数 3. 循环指令应用示例 网络1 当输入I0.0为“1”时执行循环,INDX 从1开始计数。每执行一次循环体,INDX 当前值加1执行到第6次时循环结束。 网络2 当VW10计数为6时Q0.0得电 网络3 循环返回 提问:在plc 编程控制中循环指令应用的具体现象。 (二) 跳转指令指令基本知识

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

第九讲控制转移类指令 教学方法: 讲授法 教学目的: 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

组成原理课设加减法指令的实现

附件1: 课程设计 题目加减法指令的实现 学院计算机科学与技术 专业计算机科学与技术 班级 姓名 指导教师 2011年 6 月30 日

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:计算机科学与技术学院 题目: 基本模型机的设计——加减法指令的实现 初始条件: 理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体 要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中加减法指令的时序分析,累加器A和有关寄存器、存储器的数据变 化以及数据流程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排: 周一:熟悉相关资料。周二:系统分析,设计程序。 周三、四:编程并上实验平台调试周五:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

巧记汇编语言中的转移指令

巧记汇编语言中的转移指令 8086汇编语言中的转移指令条数虽多,但都是以J字符打头,这是转移指令的特征,J即是英语JUMP 的缩写。 后面的字符大致可分为两类: 一、标志寄存器的标志位符号: C(进位标志位)、Z(零标志位) P(奇偶标志位)。 S(符号标志位)、O(溢出标志位)。 二、逻辑判断条件的英文缩写: N.非(NOT) E.等于(EQUAL) A.高于(ABOVE)用于无符号数的比较结果 B.低于(BELOW)用于无符号数的比较结果 G.大于(GREAT)用于带符号数的比较结果 L.小于(LESS)用于带符号数的比较结果 这些字符的组合即综述了相应的比较或运算结果。 例如:NC即为C标志位的否定,即标志位C=0 JNC即表示标志位C=0时转移。 NBE表示不低于等(即相当于“大于”) 利用这个规律,就可以非常简单地理解大多数条件转移指令的含义了。从另一个角度,这些指令还可以作如下分类: 一、以标志位的内容作为转移条件,有肯定的表示(标志位=1)和否定的表示(标志位=0): 1.肯定的表示: JC C=1 转移进位转移 JP P=1 转移偶转移 JS S=1 转移负转移 JZ Z=1 转移零转移 2.否定的表示: JNC C=0 转移非进位转移 JNP P=0 转移奇转移 JNS S=0 转称非负转移 JNZ Z=0 转移非零转移 要注意,对P(奇偶)标志位还加上奇(000)、偶(EVEN)字符缩写的表示方法(这是两个特例): JPO P=0 转移奇转移,相当于 JNP JPE P=1 转移偶转移,相当于 JP 二、以比较或运算结果作为转移条件,也分肯定的表示和否定的表示,不过还要区分是否是对带符号数进行操作: 1.肯定的表示: 用于无符号数: JA 高于 JAE 高于等于 JB 低于

第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指令有何区别?

跳转指令的实现

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目:基本模型机的设计——跳转指令的实现 初始条件: 理论:学完“电工电子学”、“数字逻辑”、“汇编语言程序设计”、和“计算机组成原理”课程,掌握计算机组成原理实验平台的使用。 实践:计算机学院科学系实验中心提供计算机、实验的软件、硬件平台,在实验中心硬件平台验证设计结果。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1、基本模型机系统分析与设计,利用所学的计算机组成原理课程中的知识和提供的 实验平台完成设计任务,从而建立清晰完整的整机概念。 2、根据课程设计题目的要求,编制实验所需的程序,上机测试并分析所设计的程序。 3、课程设计的书写报告应包括: (1)课程设计的题目。 (2)设计的目的及设计原理。 (3)根据设计要求给出模型机的逻辑框图。 (4)设计指令系统,并分析指令格式。 (5)设计微程序及其实现的方法(包括微指令格式的设计,后续微地址的产生方法以及微程序入口地址的形成)。 (6)模型机当中时序的设计安排。 (7)设计指令执行流程。 (8)给出编制的源程序,写出程序的指令代码及微程序。 (9)说明在使用软件HKCPT的联机方式与脱机方式的实现过程(包括编制程序中跳转指令的时序分析,累加器A和有关寄存器、存储器的数据变化以及数据流 程)。 (10)课程设计总结(设计的特点、不足、收获与体会)。 时间安排:设计时间为第18周 周一:熟悉相关资料。周二:系统分析,设计程序。 周三、四:编程并上实验平台调试周五:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日 基本模型机的设计 ——跳转指令的实现

设计一条条件转移指令

实验报告 实验人:赵汝鹏学号: 09381052 日期: 2010-12-15 院(系):计算机科学系专业(班级):网络工程 实验题目:设计一条条件转移指令 一.实验目的 1.了解和掌握微程序控制器的组成和工作原理; 2.进一步了解和掌握计算机各部分的组成及相互关系; 3.了解微指令的执行过程,掌握微程序的设计方法,理解动态微程序设计的概念; 4.进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理。 二.实验内容 设计一条指令,实现的功能是: 当DR=SR时,则原PC(IP)+OFFSET->PC; 当DRPC。 否则执行下条汇编指令。(注:OFFSET为位移量;ADDR为某内存单元地址) 三.实验器材 TEC-2实验计算机、电脑各一台 四.实验分析与设计 (2)指令功能 功能:设计一条指令,实现的功能是: 当DR=SR时,则原PC(IP)+OFFSET->PC; 当DRPC。 否则执行下条汇编指令。(注:OFFSET为位移量;ADDR为某内存单元地址) (3)设计分析 由于要根据DR与SR运算结果进行跳转,所以在110先让DR-SR产生DR与SR 的信息在状态寄存器。在111这里如果Z=1,则跳转至114进行下一步操作,否则 继续执行下一条;在112这里如果S=1,则转115进行下一步操作,否则执行下一 条。如果111与112都没有跳转,证明DR-SR>0,则让PC等于下一条指令的地址。 操作码选择DB,因为如此IR8-10位是011,CC非的值等于S非的值。

(4) 微程序 110:DR-SR 0000 0E01 9110 0088 111:PC->AR, 如果DR=SR转114 0045 0370 9030 5002 112:PC+1->AR,如果DRPC,转4A 0029 0300 B030 5400 114:IP+OFFSET->PC 0029 0300 30D6 5000 115:ADDR->PC 0029 0300 30F0 5000 (5) 加载到微控存程序段 A800 800:MOV R1, 900 802:MOV R2, 6 804:MOV R3, 110 806:LDMC 807:RET 808: G800 (6) 运行程序段 A820 820:MOV R7, 7 822:MOV R8, 8 824:MOV R9, 0 826:NOP 827:NOP 828:NOP 829:MOV R9, 1 82B:RET 82C:MOV R9, 2 82E:RET 82F:MOV R9, 3 831:RET 832: E826 DB78 0006 082F G820 第一种情况是DRSR

汇编指令无条件转移指令JMP

[汇编指令]无条件转移指令JMP 2009-08-16 18:43 无条件转移指令JMP 指令格式:JMP OPRD 其中OPRD为转移的目的地址。程序转移到目的地址所指向的指令继续往下执行。 指令功能:JMP指令将无条件地控制程序转移到目的地址去执行。当目的地址仍在同一个代码段内,称为段内转移;当目标地址不在同一个代码段内,则称为段间转移。这两种情况都将产生不同的指令代码,以便能正确地生成目的地址,在段内转移时,指令只要能提供目的地址的段内偏移量即够了;而在段间转移时,指令应能提供目的地址的段地址及段内偏移地址值。 本组指令对标志位无影响。 <1>段内直接转移指令:JMP NEAR 标号 即:JMP NEAR 标号; (IP)<--disp16+(IP) JMP SHORT 标号; (IP)<--disp8+(IP) <2>段内间接转移指令:JMP OPRD 例如:JMP BP; 转向(SS):(BP) JMP JNEAR[BX]; 转向(CS):(BX)+JNEAR JMP WORD PTR[BX][DI]; 转向(CS):(BX)+(DI) <3>段间直接转移指令:JMP FAR 标号 由于标号之前用FAR说明为远的属性,因而只能是一条段间转移指令。执行该指令时,将把标号所在的段的值送CS,将标号在所属段内的偏移量送IP,从而形成新的转移地址CS:IP <4>段间间接转移指令:JMP OPRD其中的OPRD为存储器双字操作数。段间间接转移只能通过存储器操作数来实现。 例如:指令JMP DWORD PTR[BX],其操作数是一个双字类型的存储器操作数,它指向数据段DS,段内偏移为(BX)。从这个DS:BX开始的前两个字节中,存放了目标地址的段内偏移值,后两个字节中,存放了目标地址所在的新的段的段基址,分别将它们送至IP及CS,便形成了新的转移地址

条件转移指令

条件转移指令 条件转移指令是指在满足一定条件时进行相对转移。 1.判A内容是否为0转移指令 JZ rel JNZ rel 第一指令的功能是:如果(A)=0,则转移,否则顺序执行(执行本指令的下一条指令)。转移到什么地方去呢?如果按照传统的方法,就要算偏移量,很麻烦,好在现在我们可以借助于机器汇编了。因此这第指令我们可以这样理解:JZ 标号。即转移到标号处。下面举一例说明: MOV A,R0 JZ L1 MOV R1,#00H AJMP L2 L1: MOV R1,#0FFH L2: SJMP L2 END 在执行上面这段程序前如果R0中的值是0的话,就转移到L1执行,因此最终的执行结果是R1中的值为0FFH。而如果R0中的值不等于0,则顺序执行,也就是执行 MOV R1,#00H指令。最终的执行结果是R1中的值等于0。 第一条指令的功能清楚了,第二条当然就好理解了,如果A中的值不等于0,就转移。把上面的那个例子中的JZ改成JNZ试试吧,看看程序执行的结果是什么? 2.比较转移指令 CJNE A,#data,rel CJNE A,direct,rel CJNE Rn,#data,rel

CJNE @Ri,#data,rel 第一条指令的功能是将A中的值和立即数data比较,如果两者相等,就顺序执行(执行本指令的下一条指令),如果不相等,就转移,同样地,我们可以将rel理解成标号,即:CJNE A,#data,标号。这样利用这条指令,我们就可以判断两数是否相等,这在很多场合是非常有用的。但有时还想得知两数比较之后哪个大,哪个小,本条指令也具有这样的功能,如果两数不相等,则CPU还会反映出哪个数大,哪个数小,这是用CY(进位位)来实现的。如果前面的数(A中的)大,则CY=0,否则CY=1,因此在程序转移后再次利用CY就可判断出A中的数比data大还是小了。 例: MOV A,R0 CJNE A,#10H,L1 MOV R1,#0FFH AJMP L3 L1: JC L2 MOV R1,#0AAH AJMP L3 L2: MOV R1,#0FFH L3: SJMP L3 上面的程序中有一条指令我们还没学过,即JC,这条指令的原型是JC rel,作用和上面的JZ类似,但是它是判CY是0,还是1进行转移,如果CY=1,则转移到JC后面的标号处执行,如果CY=0则顺序执行(执行它的下面一条指令)。 分析一下上面的程序,如果(A)=10H,则顺序执行,即R1=0。如果(A)不等于10H,则转到L1处继续执行,在L1处,再次进行判断,如果(A)>10H,则CY=1,将顺序执行,即执行MOV R1,#0AAH指令,而如果(A)<10H,则将转移到L2处指行,即执行MOV R1,#0FFH指令。因此最终结果是:本程序执行前,如果(R0)=10H,则(R1)=00H,如果(R0)>10H,则(R1)=0AAH,如果(R0)<10H,则(R1)=0FFH。 弄懂了这条指令,其它的几条就类似了,第二条是把A当中的值和直接地址中的值比较,第三条则是将直接地址中的值和立即数比较,第四条是将

控制转移类指令

控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,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。 但是在查表时要注意会出错,因为他们的机器周期不一样,取得的数也不一样。

汇编跳转指令

汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE 名称功能操作数操 作 码 模 数 寄存 器1 寄 存 器2 或 内 存 位 移 量 立 即 数 符 号 方 向 芯 片 型 号 16 位 32 位 JO 溢出跳转短$70 无无无无10 无无80 86 无无 JNO 不溢出跳 转 短$71 无无无无10 无无 80 86 无无 JB 低于跳转短$72 无无无无10 无无80 86 无无 JNB 不低于跳 转 短$73 无无无无10 无无 80 86 无无 JE 相等跳转短$74 无无无无10 无无80 86 无无 JNE 不等跳转短$75 无无无无10 无无80 86 无无 JBE 不高于跳 转 短$76 无无无无10 无无 80 86 无无 JA 高于跳转短$77 无无无无10 无无80 86 无无 JS 负号跳转短$78 无无无无10 无无80 86 无无 JNS 非负跳转短$79 无无无无10 无无80 86 无无 JP 奇偶跳转短$7A 无无无无10 无无80 86 无无 JNP 非奇偶跳 转 短$7B 无无无无10 无无 80 86 无无 JL 小于跳转短$7C 无无无无10 无无80 86 无无 JNL 不小于跳 转 短$7D 无无无无10 无无 80 86 无无 JNG 不大于跳 转 短$7E 无无无无10 无无 80 86 无无 JG 大于跳转短$7F 无无无无10 无无80 86 无无 JO 溢出跳转近$0F 80 无无无无10 无无 38 6 无 $6 6

计算机组成原理课程设计,跳转,转移指令的实现

1、课程设计的题目 基本模型机的设计——跳转、转移指令的实现 2、设计的目的及设计原理 2.1课程设计目的 运用所学的知识,通过使用软件HKCPT掌握各个单元模块的工作原理将其组成完整的系统,并了解程序编译、加载的过程,以及通过微单步、单拍调试理解模型机中的数据流向。此次课程设计主要目的有两个:其一,掌握各个单元模块的工作的原理,进一步将其组成完整的系统,构造一台基本的模型计算机;其二,是学会规划读/写内存、寄存器、数值计算等功能,并且编写相应的微程序,在具体上机的过程中,高度各个模块单元以便掌握整机的概念。 2.2课程设计原理 计算机中CPU是核心,它的实现是通过指令和微指令实现的,指令对应一段微程序,而且微程序是用微指令来实现的,微指令是有几个微命令组成,从而能够保证指令的实现。 在本实验平台中,模型机从内存中取出、解释、执行机器指令都将由微指令和之配合的微指令来实现的,即每条机器指令都对应一个微程序。 在各个模块实验中,各模块的控制信号都是由实验者手动模拟产生的。而在真正的实验系统中模型机的运行是在微程序的控制下进行的,可实现指定的指令功能。在本实验平台中,模型机从内存中取出、解释、执行机器指令都将由微指令和与之相配合的时序来完成,即1条机器指令对应一个微程序。 部件实验过程中,各部件单元的控制信号是以人为模拟产生为主,而这次实验将能在微程序控制下自动产生各部件单元的控制信号,实现特定指令的功能。这里,计算机数据通路的控制将由微程序控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。

实验四---条件转移指令

实验四条件转移指令 实验目的: 通过实验掌握下列知识: 1、8086指令:JZ,JNZ,JC,JNC,CMP,SHR。 2、程序:用字符搜索法确定字符串长度。 3、程序:16进制数化为ASCII码的一般方法。 实验容及步骤: 一、用字符搜索法确定字符串长度: 1、用A命令在100H开始的存处键入下列程序: JMP START ;无条件调至Start 偏移地址为102 DB 'This is the program to measure' ;定义一个字符串长度为30 DB 'the length of a string!$' ;定义字符串,长度为23 不算字符串结束符$ START: MOV BX,102 ;容为102赋给bx MOV AL,24 ;24赋给al XOR CL,CL ;cl清零 LOP: CMP AL,[BX] ;地址[0102]的容和24表示的字符$比较大小 JZ EXIT ;遇到$,调至exit,程序结束 INC BX ;bx自增1 INC CL ;cl自增1 JMP LOP ;无条件转移至lop EXIT: INT 3 2、用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?

二、16进制数化ASCII码的一般方法(显示存容) 1、用A命令在100H处键入下列程序: MOV SI,0 ;将容为0的十六进制数赋给si MOV BL,10 ;将容为10的十六进制数赋给bl LOP: MOV DL,[SI] ;将地址为[0]单元的容赋给dl MOV CL,4 ;将4赋给cl SHR DL,CL ;dl的容逻辑右移4次,最低位进入cf CMP DL,0A ;dl的容和0a比较大小 JC J1 ;判断有无进位,有了转向j1 ADD DL,7 ;无进位,将7和dl的容相加 J1: ADD DL,30 ;将30和dl的容相加 MOV AH,2 ;设置功能号:2赋给ah INT 21 ;dos功能调用:显示dl寄存器的容 MOV DL,[SI] ;将[0]的容赋给dl AND DL,0F ;dl的容和0f相加 CMP DL,0A ;dl的容和0a比较大小 JC J2 ;判断有无进位,有了转向j2 ADD DL,7 ;无进位,将dl的容和7相加放入dl中 J2: ADD DL,30 ;有进位,将dl的容和30相加放入dl中 MOV AH,2 ;设置功能号:2赋给ah INT 21 ;dos功能调用:显示dl寄存器的容 MOV DL,20 ;将20赋给dl 输入一个空格字符 MOV AH,2 ;设置功能号:2赋给ah INT 21 ;dos功能调用:显示dl寄存器的容 INC SI ;si自增1 DEC BL ;dl自减1 JNZ LOP ;判断结果,若为0调至lop INT 20 ;中断程序 将十六进制数AB A先显示再让B显示再有空格的显示所以执行后执行前结果一样了 0-9 A-F十六进制数转换为ASCII码31-39 41-46 2、用N,W命令将此程序用https://www.wendangku.net/doc/ce18193904.html,文件名存入磁盘。 3、用Q命令退出DEBUG。 4、在DOS命令状态下直接运行https://www.wendangku.net/doc/ce18193904.html,命令文件,应在屏幕上显示出存从0000H开始的16个字节的容,若有错误,用DEBUG检查之。 5、自编程序:修改上面程序,使除以16进制数形式显示存容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。

无条件转移指令(共4条)

MCS-51的控制转移类指令,共17条,分为无条件转移指令、条件转移指令、子程序调用和返回指令、空操作指令等四类。 无条件转移指令(共4条) LJMP addr16 ;PC〈——addr16 AJMP addr11 ;PC〈——PC+2 ,PC10-0〈——addr11 SJMP rel ;PC〈——PC+2 ,PC 〈——PC+rel JMP @A+DPTR ;PC〈——A+DPTR 第一条指令称为长转移指令(Long Jump); 第二条指令叫作绝对转移指令(Absolute Jump); 第三条指令称作短转移指令(Short Jump); 第四条指令是变址寻址转移指令(散转指令)。 显然,每条指令均以改变程序计数器PC(Program Counter)中的内容为宗旨。 (1)长转移指令(64KB范围内转移指令) 长转移指令的功能是:把指令码中的目标地址addr16装入程序计数器PC,使机器执行下一条指令时无条件转移到addr16处执行程序,不影响任何 标志。由于addr16是一个16位二进制地址(地址范围为0000H—FFFFH),因此长转移指令一条可以在64KB范围内转移的指令。为了使程序设计方便易编,addr16常采用标号地址(如:LOOP、LOOP1、MAIN、START、DONE、NEXT1……)表示,只有在上机执行前才被汇编(或代真)为1 6位二进制地址。长转移指令为三字节,双周期指令。上机试试吧!很直观的! For Example:LJMP F886H 注意:在下载的这个8051DEBUG软件中,不支持标号,且程序状态字PSW(P rogram State Word)中的D0位,即奇偶标志位P,与正确的正好相反,这一点是错误的,用的时候留意一下。 只要记好:累加器ACC中1的个数为奇数,则P=1;否则P=0。 (2)绝对转移指令(2KB范围内的转移指令) 绝对转移指令是一条双字节双周期指令,11位地址addr11(a10—a0)在指令中的分布是:a10 a9 a8 0 0 0 1|a7 a6 a5 a4 a3 a2 a1 a0,其中,00001B是操作码。在程序设计中,11位地址也可以用符号表示,但在上机执行前必须按照上述指令格式加以代真。 绝对转移指令执行时分为两步: 第一步是取指令操作,程序计数器PC中内容被加1两次; 第二步是把PC加2后的高5为地址PC15—PC11和指令代码中低11位构成目

控制转移类指令分析

控制转移类指令分析 控制转移类指令分析 控制转移指令用于控制程序的流向,所控制的范围即为程序存储器区间,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则最多只

汇编语言跳转指令熟记法

我看了这张表,汇编跳转指令一下子就记住了 Jxx - Jump Instructions Table Mnemonic Meaning Jump Condition JA Jump if Above CF=0 and ZF=0 JNBE Jump if Not Below or Equal CF=0 and ZF=0 JAE Jump if Above or Equal CF=0 JNB Jump if Not Below CF=0 JB Jump if Below CF=1 JNAE Jump if Not Above or Equal CF=1 JBE Jump if Below or Equal CF=1 or ZF=1 JNA Jump if Not Above CF=1 or ZF=1 JG Jump if Greater (signed) ZF=0 and SF=OF JNLE Jump if Not Le ss or Equal (signed) ZF=0 and SF=OF JGE Jump if Greater or Equal (signed) SF=OF JNL Jump if Not Le ss (signed) SF=OF JL Jump if Less (signed) SF != OF JNGE Jump if Not Greater or Equal (signed) SF != OF JLE Jump if Less or Equal (signed) ZF=1 or SF != OF JNG Jump if Not Greater (signed) ZF=1 or SF != OF JC Jump if Carry CF=1 JNC Jump if Not Carry CF=0 JZ Jump if Zero ZF=1 JE Jump if Equal ZF=1 JNZ Jump if Not Zero ZF=0 JNE Jump if Not Equal ZF=0 JS Jump if Signed (signed) SF=1 JNS Jump if Not Signed (signed) SF=0 JO Jump if Overflow (signed) OF=1 JNO Jump if Not Overflow (signed) OF=0 JP Jump if Parity PF=1 JPE Jump if Parity Even PF=1 JNP Jump if No Parity PF=0 JPO Jump if Parity Odd PF=0 JCXZ Jump if CX Zero CX=0 JMP Unconditional Jump unconditional

汇编跳转指令

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ①O F (Overflow Flag)溢出标志。溢出时为1,否则置0。 ② SF(Sign Flag )符号标志。结果为负时置1,否则置0. ③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0. ④CF (Carry Flag)进位标志,进位时置1,否则置0. ⑤AF (Auxiliary carry Flag )辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1, 否则置0. ⑥PF (Parity Flag )奇偶标志。结果操作数中1的个数为偶数时置1,否则置0. 控制标志位: ⑦DF(Direction Flag )方向标志,在串处理指令中控制信息的方向。 ⑧IF (Interrupt Flag )中断标志。 ⑨TF(Trap Flag )陷阱标志。

操作码伪码指令含义 EB cb JMP rel8 相对短跳转(8位),使rel8处的代码位下一条指令E9 CW JMP rel16 相对跳转(16位),使rel16处的代码位下一条指令FF /4 JMP r/m16 绝对跳转(16位),下一指令地址在r/m16中给出FF /4 JMP r/m32 绝对跳转(32位),下一指令地址在r/m32中给出EA cb JMP ptr16:16 远距离绝对跳转,下一指令地址在操作数中 EA cb JMP ptr16:32 远距离绝对跳转,下一指令地址在操作数中 FF /5 JMP m16:16 远距离绝对跳转,下一指令地址在内存m16:16中 FF /5 JMP m16:32 远距离绝对跳转,下一指令地址在内存m16:32中 五、16位/32位寻址方式 操作码伪码指令跳转含义跳转类型跳转的条件(标志位)OF 87 cw/cd JA rel16/32 大于near (CF=0 and ZF=0) OF 83 cw/cd JAE rel16/32 大于等于near (CF=0) 0F 82 cw/cd JB rel16/32 小于near (CF=1) 0F 86 cw/cd JBE rel16/32 小于等于near (CF=1 or ZF=1) 0F 82 cw/cd JC rel16/32 进位near (CF=1) 0F 84 cw/cd JE rel16/32 等于near (ZF=1) 0F 84 cw/cd JZ rel16/32 为0 near (ZF=1) 0F 8F cw/cd JG rel16/32 大于near (ZF=0 and SF=OF) 0F 8D cw/cd JGE rel16/32 大于等于near (SF=OF) 0F 8C cw/cd JL rel16/32 小于near (SF<>OF) 0F 8E cw/cd JLE rel16/32 小于等于near (ZF=1 or SF<>OF) 0F 86 cw/cd JNA rel16/32 不大于near (CF=1 or ZF=1) 0F 82 cw/cd JNAE rel16/32 不大于等于near (CF=1) 0F 83 cw/cd JNB rel16/32 不小于near (CF=0) 0F 87 cw/cd JNBE rel16/32 不小于等于near (CF=0 and ZF=0) 0F 83 cw/cd JNC rel16/32 不进位near (CF=0) 0F 85 cw/cd JNE rel16/32 不等于near (ZF=0) 0F 8E cw/cd JNG rel16/32 不大于near (ZF=1 or SF<>OF) 0F 8C cw/cd JNGE rel16/32 不大于等于near (SF<>OF) 0F 8D cw/cd JNL rel16/32 不小于near (SF=OF) 0F 8F cw/cd JNLE rel16/32 不小于等于near (ZF=0 and SF=OF)

相关文档