收藏 分享(赏)

微机原理与接口技术(楼顺天)-第3章7.ppt

上传人:精品资料 文档编号:11155809 上传时间:2020-02-10 格式:PPT 页数:19 大小:152KB
下载 相关 举报
微机原理与接口技术(楼顺天)-第3章7.ppt_第1页
第1页 / 共19页
微机原理与接口技术(楼顺天)-第3章7.ppt_第2页
第2页 / 共19页
微机原理与接口技术(楼顺天)-第3章7.ppt_第3页
第3页 / 共19页
微机原理与接口技术(楼顺天)-第3章7.ppt_第4页
第4页 / 共19页
微机原理与接口技术(楼顺天)-第3章7.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、本教案内容,第3章 8086CPU指令系统 汇编语言指令 8086指令分类 数据与转移地址的寻址方式 数据传送类指令 算术运算类指令 逻辑运算类指令 移位类指令 标志位操作指令,转移指令 循环控制指令 子程序调用返回指令 中断调用返回指令 字符串操作指令 I/O输入输出指令 其它指令 宏指令,1.循环程序的基本结构,(A)先循环工作,后循环判定,(DO-UNTIL结构),循环程序有以下两种结构。,3.10 循环控制指令,应用场合:适合于循环次数已知的情况,循环判定条件:用CX 作减1计数控制循环,要避免出现死循环,3.10 循环控制指令,初始化准备部分,出口判定,Y,N,开 始,结 束,循环工

2、作部分,循环参数调整部分,应用场合: 适合于循环次数未知或可能会出现0次循环的情况,循环判定条件:用条件标志,(B)先循环判定,后循环工作,(DO-WHILE结构),要避免出现死循环,3.10 循环控制指令,2.循环程序的组成,不管是哪一种循环结构,一个标准的循 环程序应由以下四部分组成:,初始化准备部分,循环工作部分,参数调整部分,出口判定部分,3.10 循环控制指令,初始化准备部分,循环工作部分,这是为循环做准备的,它不在循环体内。,这部分是循环程序解题所需的核心程序,题目要完成的功能在此进行。根据题目要求不同,这部分程序可以很简单,也可以很复杂,甚至是内循环嵌套外循环结构多重循环程序。,

3、3.10 循环控制指令,参数调整部分,这部分主要用来更新某些数据或修正循环控制的参数,以保证每次循环所完成的功能不是完全重复的。,3.10 循环控制指令,循环出口判定部分,循环程序中至少要有一个出口判定,以保证循环程序正常结束。也有些循环程序有多个出口,程序可以有多个条件作为循环结束的控制,只要其中一个条件满足即可结束循环。,3.10 循环控制指令,从程序上说,以上四个部分的分界可能不是很明确的,有时工作部分与调整部分可能就是同一段程序,但从功能上说,以上几个部分都是必需的。,3.10 循环控制指令,3.循环控制指令,为了便于循环控制,8086/8088CPU 专门设置了一类循环控制类指令:,

4、3.10 循环控制指令,3.10 循环控制指令,格式: LOOP LABEL ;(CX)(CX)-1, (CX)0时转LABEL LOOPZ/LOOPE LABEL ;(CX)(CX)-1, (CX)0且ZF=1时转LABEL LOOPNZ/LOOPNE LABEL ;(CX)(CX)-1, (CX)0且ZF=0时转LABEL JCXZ LABEL ;CX=0时转LABEL 说明: 循环控制指令的寻址方式均为段内直接转移,而且为短转移方式。,3.10 循环控制指令,1. LOOP指令 LOOP(Loop)指令为常用的循环控制指令,(CX)的内容为设定的循环次数,每循环一次(CX)的内容减1,直

5、到(CX)为零时退出循环。其循环结构为:MOV CX, 次数;循环准备 标号:;循环体LOOP 标号 这里的“标号”与“LOOP 标号”指令之间至多包含128字节,这是因为循环控制指令为短转移指令。,3.10 循环控制指令,2. LOOPZ/LOOPE指令 LOOPZ/LOOPE(Loop if zero/equal)指令与LOOP指令类似,只是当(CX)0且ZF=1时才转至LABEL,因此是否循环,除了与设定的循环次数有关外,还与循环中设定的条件是否满足有关。例如:MOV CX, 10L1:CMP AX,BX ;若(AX)(BX),即ZF=0,则退出循环LOOPZ L1 这种指令非常适合于在

6、指定区域中查找不同的“字符”,当找到不同的“字符”时,会自动提出循环。,3.10 循环控制指令,3. LOOPNZ/LOOPNE LOOPNZ/LOOPNE(Loop if not zero/not equal)指令的功能与LOOPZ/LOOPE指令相反,只是当(CX)0且ZF=0时才转至LABEL。例如:MOV CX, 10L2:CMP AX,BX ;若(AX)(BX),即ZF=1, 则退出循环LOOPNZ L2 这种指令非常适合于在区域中查找指定的“字符”,当找到指定的“字符”时,会自动退出循环。,3.10 循环控制指令,4. JCXZ指令 JCXZ(Jump if register CX

7、=0)指令经常与循环指令配合使用。如果循环次数(CX)设定为0,则要循环65536次(最大的循环次数),这一点与常规表示不同。为此,应该在进入循环前检查(CX)的值,如果(CX)为0,则跳过循环,这时可以采用JCXZ指令完成,其结构为:MOV CX, VAR1 ;设定循环次数,可能为0JCXZ DONE ;当(CX)0时,跳过循环;循环准备 L3:;循环体LOOP L3 DONE:,3.10 循环控制指令,例3.30 设在BUFFER中保存有15个无符号字节型数据,编写程序产生这组数据的校验和,并置入第16个字节单元中。 解:常用的校验和产生算法为: 因此,设在数据段中已经定义好字节型变量BU

8、FFER,则程序如下:LEA SI, BUFFERMOV CX,15MOV AL,0 L1: ADD AL,SIINC SILOOP L1MOV SI,AL ;保存校验和,3.10 循环控制指令,例3.31 设在BUFFER中已经保存有字型数据(),其中前2个字节为数据的个数,计算数据的差分,并保存在DIFF缓冲区中。 解:数据的差分定义为设在数据段中已经定义缓冲区:BUFFER DW nDW X1,X2,XnDIFF DW n-1 DUP(?) 然后,可以在代码段中设计程序:,MOV SI,BUFFERMOV CX,SIADD SI,2JCXZ PROCEND ;当(CX)0时,跳过循环LEA DI,DIFFMOV AX,SIADD SI,2 PROC1: ADD AX,SISHR AX,1 ;完成(AX)2操作 MOV DI,AX ;保存差分结果ADD DI,2MOV AX,SIADD SI,2LOOP PROC1 PROCEND:,3.10 循环控制指令,作业: 19,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报