搜档网
当前位置:搜档网 › 第11讲 控制转移类指令(二)教案

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

第11讲 控制转移类指令(二)教案
第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

实 验 报 告 ── 学年 第 学期 实 验 课 程 汇编语言 学 生 姓 名 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 ;同上

计算机组成原理-指令扩展实验解析

《计算机组成原理A》课程设计性实验报告 开课实验室:计算机组成原理实验室年月日 实验题目指令扩展实验 一、实验目的 深入了解教学计算机微程序控制器的组成和设计技术,包括Am2910器件的功能与具体用法,教学计算机的总体组成和部件之间的连接方法,总之应该深入理解控制器部件的组成、设计、控制与使用等诸项知识。 二、设备与环境 TEC-XP+教学机,微机(装有Windows XP、ISPLEVER、ispVM System等软件)。 三、实验内容 在现有的基本指令系统上,扩展2条指令,分别是: 指令一:NXOR DR,SR ,其功能是(DR⊕SR) DR 。 指令二: SWRM DR,[SR] ,其功能是DR与[SR]的值互换,实现寄存器与内存单元(通过间接寻址方式)之间的数据传送。 四、实验步骤 1、CPU模型

2、微程序控制器组成原理框图 3、机器指令与微指令关系 ① PC:存放下一条机器指令的地址(向指令存储器提供指令地 址)。 ②指令存储器:(存放所有机器指令),经地址译码,选中相 应存储单元,取出相应机器指令,送入指令寄存器IR。 ③指令寄存器IR:存放正在执行的机器指令。机器指令包含 两个字段:操作码(OP)、地址码。 ④由操作码(OP)映射得到微地址(译码过程),即机器指令 所对应的微程序入口地址,存入微地址寄存器。 ⑤控制存储器存放所有的微程序,经地址译码读出一条微指 令。 ⑥由控制存储器读出的一条微指令存入微指令寄存器。 4、教学机TEC-XP的控制器提供的控制信号(微指令格式) ① B0-B5字段:DC1:CPU内部总线数据来源选择控制,详 见表1-1;DC2:专用寄存器接收控制,详见表1-2。 ② B6-B11字段:SSH SCI:最低进位输入、移位输入控制 信号,详见表2-1;SST:状态寄存器控制信号,详见表 2-2。 ③ B12-B19字段:A口:0000表示不使用寄存器,1000 表示取IR中的SR,0100表示R4(SP),0101表示R5(PC);B口:0000表示不使用寄存器,1000表示取IR中的DR,0100表示R4(SP),0101表示R5(PC)。

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

逻辑及布尔指令和控制转移类指令练习 实验名称: 逻辑及布尔指令和控制转移类指令练习实验目的: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:感谢大家的阅读,本文由我司收集整编。仅供参阅!

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、掌握调用指令的特点及应用 教学重点、难点: 各类指令操作功能循环、移位指令 条件转移指令的特点及应用 主要教学内容(提纲): 一、控制转移类指令的种类 二、无条件转移指令的特点及应用 三、调用指令的特点及应用 复习:逻辑操作指令,单字节: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、学习和了解TEC-XP16教学实验系统监控命令的用法。 2、学习和了解TEC-XP16教学实验系统的指令系统。 3、学习简单的TEC-XP16教学实验系统汇编程序设计。 二、预习要求: 1、学习TEC-XP16机监控命令的用法。 2、学习TEC-XP16机的指令系统、汇编程序设计及监控程序中子程序调用。 3、学习TEC-XP16机的使用,包括开关、指示灯、按键等。 4、了解实验内容、实验步骤和要求。 三、实验步骤: 在教学计算机硬件系统上建立与调试汇编程序有几种操作办法。 第一种办法,是使用监控程序的A命令,逐行输入并直接汇编单条的汇编语句,之后使用G命令运行这个程序。缺点是不支持汇编伪指令,修改已有程序源代码相对麻烦一些,适用于建立与运行短小的汇编程序。 第二种办法,是使用增强型的监控程序中的W命令建立完整的汇编程序,然后用M命令对建立起来的汇编程序执行汇编操作,接下来用G命令运行这个程序。适用于比较短小的程序。此时可以支持汇编伪指令,修改已经在内存中的汇编程序源代码的操作更方便一些。 第三种办法,是使用交叉汇编程序ASEC,首先在PC机上,用PC机的编辑程序建立完整的汇编程序,然后用ASEC对建立起来的汇编程序执行汇编操作,接下来把汇编操作产生的二进制的机器指令代码文件内容传送到教学机的内存中,就可以运行这个程序了。适用于规模任意大小的程序。

在这里我们只采用第一种方法。 在TEC-XP16机终端上调试汇编程序要经过以下几步: 1、使教学计算机处于正常运行状态(具体步骤见附录联机通讯指南)。 2、使用监控命令输入程序并调试。 ⑴用监控命令A输入汇编程序 >A 或>A 主存地址 如:在命令行提示符状态下输入: A 2000↙;表示该程序从2000H(内存RAM区的起始地址)地址开始 屏幕将显示: 2000: 输入如下形式的程序: 2000: MVRD R0,AAAA ;MVRD 与R0 之间有且只有一个空格,其他指令相同 2002: MVRD R1,5555 2004: ADD R0,R1 2005: AND R0,R1 2006: RET ;程序的最后一个语句,必须为RET 指令 2007:(直接敲回车键,结束A 命令输入程序的操作过程) 若输入有误,系统会给出提示并显示出错地址,用户只需在该地址重新输入正确的指令即可。 ⑵用监控命令U调出输入过的程序并显示在屏幕上 >U 或>U 主存地址

单片机实验5个

HEFEI UNIVERSITY 单片机实训 题目单片机应用技术实验 系别电子信息与电气工程系 专业自动化 班级自动化()班 成员 学号 指导老师储忠 完成时间2011-6-20

实验内容及要求 实验一构建单片机最小系统和实验环境熟悉 1、熟悉单片机最小系统的组成和工作原理,熟悉Keil C51集成环境软件的安装和使用方法。 2、作出单片机最小系统的组成原理图,分析其各构成单元的工作原理。 3、熟悉MCS51汇编指令。 4、进行存储单元数据传输实验,编写程序。 5、运行程序,验证译码的正确性。 实验二跑马灯实验及74HC138译码器 跑马灯实验: 1、熟悉集成环境软件或熟悉Keil C51集成环境软件的安装和使用方法。 2、8个指示灯,循环点亮,瞬间只有一个灯亮。 3、观察实验结果,验证程序是否正确。 74HC138译码器实验: 1、设计74HC138接口电路,编写程序:使用单片机的P1.0、P1.1、P1.2控制74HC138的数据输入端,通过译码产生8选1个选通信号,轮流点亮8个LED指示灯。 2、运行程序,验证译码的正确性。 实验三8255控制交通灯实验 1、设计8255接口电路,编写程序:使用8255的PA0.. 2、PA5..7控制LED指示灯,实现交通灯功能。 2、连接线路验证8255的功能,熟悉它的使用方法。 实验四8253方波实验 1、设计接口电路,编写程序:使用8253的计数器0和计数器1实现对输入时钟频率的两级分频,得到一个周期为1秒的方波,用此方波控制蜂鸣器,发出报警信号,也可以将输入脚接到逻辑笔上来检验程序是否正确。 2、连接线路,验证8253的功能,熟悉它的使用方法。

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

巧记汇编语言中的转移指令 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指令有何区别?

设计一条条件转移指令

实验报告 实验人:赵汝鹏学号: 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

实验6_分支程序设计

实验六 分支程序设计 6.1 实验目的 (1)学习转移指令及与转移有关的寻址方式 (2)掌握分支程序的结构 (3)掌握分支程序的设计、调试方法。 6.2 预备知识 汇编语言中,实现分支的条件往往是通过标志寄存器中条件标志的不同状态反映的,执行流程的改变则是通过条件转移和无条件转移实现的。条件转移指令对前面指令影响的标志位进行判别,决定程序的流向。如果条件满足则转移,否则执行下一条指令。 下面给出与分支程序设计相关的指令以供参考。 表6-1单标志判断条件转移指令 名称 指令格式 测试条件 测试进位标志 JC tag CF=1 JNC tag CF=0 测试零标志 JZ tag ZF=1 JNZ tag ZF=0 测试溢出标志 JO tag OF=1 JNO tag OF=0 测试奇偶标志 JP/JPE PF=1 JNP/JPO PF=0 测试符号标志 JS tag SF=1 JNS tag SF=0 表6-2两数关系判断条件转移指令 类型 名称 指令格式 测试条件 相等 相等 JE/JZ tag ZF=1,X=Y 不相等 JNE/JNZ tag ZF=0,X!=Y 无符号数 低于/不高于等于 JB/JNAE tag CF=1, XY 高于等于/不低于 JAE/JNB tag CF=0∨ZF=1,X>=Y 带符号数 小于/不大于等于 JL/JNGE tag (SF⊕OF)=1, XY 大于等于/不小于 JGE/JNL tag (SF⊕OF)=0, X>=Y

汇编指令无条件转移指令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,便形成了新的转移地址

北邮计算机系统结构实验报告-实验一到五-WINDLX模拟器全解

北京邮电大学 实验报告 课程名称计算机系统结构 / 计算机学院 03班 王陈(11) 目录

实验一 WINDLX模拟器安装及使用 (3) ] ·实验准备....................................... 错误!未定义书签。 ·实验环境....................................... 错误!未定义书签。 ·实验步骤....................................... 错误!未定义书签。 ·实验内容及要求................................. 错误!未定义书签。 ·实验过程....................................... 错误!未定义书签。 .实验总结 (8) 实验二指令流水线相关性分析 (9) .实验目的 (9) .实验环境 (9) .实验步骤 (9) ·实验过程....................................... 错误!未定义书签。 、 .实验总结 (16) 实验三 DLX处理器程序设计 (17) .实验目的 (17) ·实验环境....................................... 错误!未定义书签。 ·实验步骤....................................... 错误!未定义书签。 .实验过程 (17) A.向量加法代码及性能分析 (17) B.双精度浮点加法求和代码及结果分析 (22) .实验总结 (27) 实验四代码优化 (28) .实验目的 (28) ( ·实验环境....................................... 错误!未定义书签。 .实验原理 (28) ·实验步骤....................................... 错误!未定义书签。 .实验过程 (28) .实验总结+实习体会 (33) 实验五循环展开 (34) .实验目的 (34) ·实验环境....................................... 错误!未定义书签。 .实验原理 (34) ·实验步骤....................................... 错误!未定义书签。 .实验过程 (34) [ 矩阵乘程序代码清单及注释说明 (34) 相关性分析结果 (39) 增加浮点运算部件对性能的影响 (39) 增加forward部件对性能的影响 (39) 转移指令在转移成功和转移不成功时候的流水线开销 (39) .实验总结+实习体会+课程建议 (39)

条件转移指令

条件转移指令 条件转移指令是指在满足一定条件时进行相对转移。 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当中的值和直接地址中的值比较,第三条则是将直接地址中的值和立即数比较,第四条是将

《微机原理实验指导书》2015

微机原理汇编及接口实验讲义电子信息工程系微机实验组 2015年3月

目录 实验一寻址方式和汇编语言程序上机调试步骤 (1) 实验二循环程序设计 (2) 实验三子程序调用程序设计 (3) 实验四 DOS系统功能调用 (4) 实验五接口实验预备知识 (5) 实验六简单的输出接口 (9) 实验七简单的输入接口 (11) 实验八数码管动态显示实验 (13) 实验九可编程并行接口8255实验 (15) 实验十可编程计数/定时器8253实验 (16) 实验十一可编程中断控制器8259实验 (17) 实验十二微机接口综合实验(上机测验) 集成电路内部原理及管脚图 (21)

实验一寻址方式和汇编语言程序上机调试步骤 一、实验目的 1、掌握在HQFC环境下8086的寻址方式。 2、掌握在HQFC环境下汇编语言程序上机步骤及调试过程。 3、掌握连续执行、单步执行、跳过执行及设置断点的方法。 4、掌握连续执行、单步执行过程中如何查寄存器、存储器、堆栈中的数据。 二、实验内容 1、在HQFC环境下单步执行下列指令,查看每条指令的执行过程,随时查看寄存器、存储器、 堆栈及反汇编窗口并记录执行结果,查看、记录每条指令的操作码和操作数,查看、记录所有指令的反汇编结果。 code segment assume cs:code start: mov ax,1234h mov bx,4321h add ax,bx mov cx,ax push cx pop dx loop: jmp loop code ends end start 将3、4语句1234h、4321h改为1234、4321后再执行程序,观察结果寄存器窗口,说明变化原因。在语句PUSH CX设置断点,连续执行后查看结果,说明设置断点对程序调试有何作用? 2、在数据段X单元存放有数据42,Y单元存放有数据-43,编程求这两数之和,并把结果 存放到S单元,编写出完整程序,上机调试,查看、记录执行结果。 3、已知数据段X单元存放的数据为10H,编程将该数据左移四位后存放到Y单元,编写出 完整程序,上机调试,查看、记录执行结果。 三、实验预习 1、8086的寻址方式,理解什么是操作码和操作数。 2、了解汇编语言程序上机(编辑→编译→链接→执行)过程。 3、学习利用汇编语言编写简单的源程序。 4、什么是反汇编,反汇编的作用?

控制转移类指令

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

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

实验四条件转移指令 实验目的: 通过实验掌握下列知识: 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.sodocs.net/doc/3d8767408.html,文件名存入磁盘。 3、用Q命令退出DEBUG。 4、在DOS命令状态下直接运行https://www.sodocs.net/doc/3d8767408.html,命令文件,应在屏幕上显示出存从0000H开始的16个字节的容,若有错误,用DEBUG检查之。 5、自编程序:修改上面程序,使除以16进制数形式显示存容外,还能在其右边显示该16进制码所对应的ASCII字符,07-0D的控制字符用'.'代替。

汇编实验指导(2016)

汇编语言程序设计实验指导书 实验一DOS常用命令及8088指令使用 (1) 实验二内存操作数及寻址方法 (4) 实验三数据串传送和查表程序 (6) 实验四屏幕字符显示程序 (8) 实验五条件转移指令 (10) 实验六汇编语言程序上机过程 (13) 实验七分枝程序 (15) 实验八多重循环程序 (17) 实验九子程序 (18) 实验十音乐程序 (21) 实验十一数码转换程序 (23) 实验十二键盘和窗口程序 (26) 实验十三活动图形显示程序 (28)

实验一 DOS常用命令及8088指令使用 实验目的: 通过实验掌握下列知识: 1、DOS命令: DIR,CD。 2、8088指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 3、DEBUG命令: A,D,E,F,H,R,T,U。 4、BCD码,ASCII码及用16进制数表示二进制码的方法。 5、8088寄存器: AX,BX,CX,DX,F,IP。 内容及步骤: 一、DOSBOX的使用: 1、把Masm5.0文件复制到F盘的根目录下; 2、打开DOSBOX程序; 3、在窗口下输入:MOUNT C F:\Masm5.0 回车; 4. 输入C: 回车,把E:\Masm 5.0当作C盘使用; 4、输入dir 回车,是否看到masm5.0文件夹下面的文件,如果看到,说明当前的路径是在masm5.0文件夹下; 二、DEBUG 命令使用: 1、打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存 单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码? 6、用H命令检查下列各组16进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH 7、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。 思考并自己实现: 1、要在当前段偏移量为120处开始连续存放8个8,请用命令实现; 2、要在当前段偏移量为130处开始连续存放abcdefghijklmnop等字符,请用命令实现; 三、8088常用指令练习 1、传送指令 1)用A命令在内存100H处键入下列内容: MOV AX,1234 MOV BX,5678 XCHG AX,BX MOV AH,35 MOV AL,48 MOV DX,75AB XCHG AX,DX 2)用U命令检查键入的程序并记录,特别注意左边的机器码。 3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。

相关主题