1、汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程第第5章章 程序设计基础技术程序设计基础技术 在汇编语言程序设计中,程序有次序、分支、循环和子程序四种基本结构形式。5.1 程序设计概述 5.2 次序结构程序设计 5.3 分支结构程序设计 5.4 循环结构程序设计第1页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程5.1 5.1 程序设计概述程序设计概述 汇编语言程序设计基本过程可分为以下几个步骤:(1)分析问题,建立数学模型 (2)确定算法 (3)画流程框图 (4)编写程序 (5)上机调试程序 返回返回第2页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程5.2 5.
2、2 次序结构程序设计次序结构程序设计 次序程序设计也称为简单程序设计,这种结构程序不使用分支、循环结构,程序本身逻辑非常简单,所以只能完成一些简单操作。其特点是程序次序执行,由前向后逐条执行指令。返回返回第3页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程5.3 5.3 分支结构程序设计分支结构程序设计 分支程序结构有两种形式:二分支程序结构和多分支程序结构。程序分支普通是经过执行转移指令来实现。5.3.1.转移指令 转移指令分为无条件转移指令和条件转移指令。第4页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程1无条件转移指令格式:JMPOPR无条件转移分为段内转移和段间转
3、移。(1)段内直接短转移格式:JMP SHORTOPR(2)段内直靠近转移格式:JMP NEAR PTR OPR(3)段内间接转移格式:JMP WORD PTR OPR第5页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程(4)段间直接远转移格式:JMPFAR PTR OPR(5)段间间接转移格式:JMPDWORDPTR OPR2条件转移指令(1)依据条件标志位状态判断转移指令这组条件转移指令共有10条。JZ/JE 结果为零/相等则转移。格式:JZ/JEOPR测试条件:ZF=1第6页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程 JNZ/JNE 结果不为零/不相等则转移。格式
4、:JNZ/JNE OPR测试条件:ZF=0 JS 结果为负则转移。格式:JS OPR测试条件:SF=1 JNS 结果为正则转移。格式:JNSOPR测试条件:SF=0 第7页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程 JO 溢出则转移。格式:JO OPR测试条件:OF=1 JNO 不溢出则转移。格式:JNOOPR测试条件:OF=0 JP/JPE 奇偶位为1则转移。格式:JP/JPE OPR测试条件:PF=1第8页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程 JNP/JPO 奇偶位为0则转移。格式:JNP/JPO OPR测试条件:PF=0 JC 进位为1则转移。格式:JC
5、 OPR测试条件:CF=1 JNC 进位为0则转移。格式:JNCOPR测试条件:CF=0第9页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程 (2)依据两个无符号数比较结果判断转移指令 JB/JNAE 低于/不高于等于转移。格式:JB/JNAE OPR测试条件:CF=1且ZF=0本指令用于两个无符号数a、b比较。若ab,则满足条件,转移。JNB/JAE 不低于/高于等于则转移。格式:JNB/JAE OPR第10页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程测试条件:CF=0或ZF=1 本指令用于两个无符号数a、b比较。若ab,则满足条件,转移。JBE/JNA 低于等于/不
6、高于则转移。格式:JBE/JNA OPR测试条件:CF=1或ZF=1 本指令用于两个无符号数a、b比较。若ab,则满足条件,转移。JNBE/JA 不低于等于/高于则转移。格式:JNBE/JA OPR第11页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程测试条件:CF=0且ZF=0 本指令用于两个无符号数a、b比较。若ab,则满足条件,转移。(3)依据两个带符号数比较结果判断转移指令 JL/JNGE 小于/小于等于则转移。格式:JL/JNGE OPR测试条件:SFOF且ZF=0 本指令用于两个有符号数a、b比较。若ab,则满足条件,转移。第12页汇编语言汇编语言淮南师范学院重点课程淮南
7、师范学院重点课程 JNL/JGE 大于/大于等于则转移。格式:JNL/JGE OPR测试条件:SF=OF或ZF=1 本指令用于两个有符号数a、b比较。若ab,则满足条件,转移。JLE/JNG 小于等于/小于则转移。格式:JLE/JNG OPR测试条件:SFOF或ZF=1 本指令用于两个有符号数a、b比较。若ab,则满足条件,转移。第13页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程 JG/JNLE 大于/大于等于则转移。格式:JG/JNLE OPR测试条件:SF=OF且ZF=0 本指令用于两个有符号数a、b比较。若ab,则满足条件,转移。(4)测试CX内容为零则转移指令JCXZ C
8、X存放器内容为零则转移格式:JCXZ OPR测试条件:(CX)=0第14页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程5.3.2 分支程序设计 1利用比较(或测试)转移指令实现分支程序设计 2利用跳转表实现分支程序设计(1)依据表内地址分支(2)依据表内指令分支(3)依据表内关键字分支 返回返回第15页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程5.4 5.4 循环结构程序设计循环结构程序设计5.4.1 循环程序结构1循环程序组成一个循环程序通常由以下5个部分组成:(1)初始化部分(2)工作部分(3)修改部分(4)控制部分第16页汇编语言汇编语言淮南师范学院重点课程淮南
9、师范学院重点课程(5)结束处理部分 2循环程序结构形式循环程序有两种结构形式:(1)“先执行,后判断”结构(2)“先判断,后执行”结构 5.4.2 循环指令 循环指令LOOP格式:LOOP OPR测试条件:(CX)0第17页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程当为零或相等时循环指令LOOPZ/LOOPE格式:LOOPZ/LOOPE OPR测试条件:ZF=1且(CX)0当不为零或不相等时循环指令LOOPNZ/LOOPNE格式:LOOPNZ/LOOPNE OPR测试条件:ZF=0且(CX)0第18页汇编语言汇编语言淮南师范学院重点课程淮南师范学院重点课程5.4.3 循环控制方法和程序举例 怎样控制循环是循环程序设计中一个主要步骤,控制循环方法很多,惯用有:用计数器控制循环(循环次数已知)按条件控制循环(循环次数未知)用开关变量控制循环用逻辑尺控制循环第19页