分享
分销 收藏 举报 申诉 / 38

类型顺序分支程序设计.ppt

  • 上传人:精****
  • 文档编号:14509581
  • 上传时间:2026-10-03
  • 格式:PPT
  • 页数:38
  • 大小:486.04KB
  • 下载积分:10 金币
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    顺序 分支 程序设计
    资源描述:
    微机原理及接口技术,第二级,第三级,第四级,第五级,微机原理及接口技术,顺序分支程序设计,第,6-7,章微型计算机汇编语言及汇编程序,系统功能调用,汇编程序的功能及汇编过程,宏汇编语言的基本语法,伪指令,第,6,章 程序设计,(,顺序、分支,、循环、子程序),宏指令,汇编语言程序设计,第,6,章微型计算机的程序设计,程序设计步骤,137,简单程序,138,分支程序,140,循环程序,143,子程序,146,查表程序,150,汇编语言程序设计归纳如下7个步骤:,(1),分析问题:,分析问题就是全面理解问题,要把解决问题所需条件、原始数据、输入和输出信息、运行速度要求、运算精度要求和结果形式等搞清楚。,(2),建立数学模型:,在对问题全面理解后,需要建立数学模型,这是把问题向计算机处理方式转化的第,1,步骤。建立数学模型是把问题数学化、公式化,(3),确定算法:,建立数学模型后,许多情况下还不能直接进行程序设计,需要确定符合计算机运算的算法。,计算机的算法比较灵活,,一般要优选逻辑简单、运算速度快、精度高的算法用于程序设计;此外,还要考虑占用内存空间小、编程容易等特点。,(4),绘制程序流程图:,程序流程图是用箭头线段、框图及菱形图等绘制的一种图。用它能够把程序内容直接描述出来,,(5),内存空间分配:,汇编语言的重要特点之一是能够直接用机器指令或伪指令为数据或代码程序分配内存空间。,86,系列存储器结构是分段的,如代码段、数据段、堆栈段或附加段,在程序设计时要考虑分段结构,,(6),编制程序与静态检查:,编制程序就是按计算机,语法规定,书写计算机解决问题的过程。编制程序首先关心的还是,程序结构,,它应是模块化和通用子程序结构,程序的结构要层次简单、清楚、易读、易维护为好。,(7),程序调试,(,实验,),:,程序调试是程序设计最后一步,也是非常重要的一步。没有调试过的程序,很难保证程序无错误,程序调试是不可缺省的。,例如在编辑、汇编、连接或用调试软件,(,如,DEBUG),调试时都可以发现错误并设法修改程序。,6.2 顺序程序设计,没有分支、循环等转移指令的程序,会按指令书写的前后顺利依次执行,这就是顺序程序,顺序结构是最基本的程序结构,完全采用顺序结构编写的程序并不多见,【,例,6.1】,字加法,用数据运算指令,对两个,16,位数做加法运算。这两个数从地址,10050H,开始连续存放,低位在小地址一端,结果放在这两个数之后。,(1),分析题目:它是一个,16,位数相加的问题。在用加法指令时,必须要考虑低,8,位和低,8,位相加后产生的进位问题。,(2),根据,86,系列指令系统,可以直接,对累加器,AX,做字操作,但在低位相加后,会影响标志寄存器的进位位,CF,,所以,要用带进位的加法指令。,错!,流程图,shl bx,1;,CMPAL,10;,start:mov ax,data,JBE/JNAJump on Below or Equal/Not Above,CF1,即最高位为1:DL31H1,assume cs:code,ds:data,ss:stack,顺序结构是最基本的程序结构,显示BX的最高位(续),Jcc指令不影响标志,但要利用标志(表2-4),shl bx,1;,SUBAX,BX;,这两个数从地址10050H开始连续存放,低位在小地址一端,结果放在这两个数之后。,JCLP2 ;,Jcc指令的分类(P133 表),CF1,即最高位为1,转移,一定要跳过另一个分支体,DL 30H0,程序,MOV,AX,,,1000H,MOV,DS,,,AX,;,DS,1000H,MOV,SI,,,50H,;被加数指针,SI,50H,MOV,DI,,,52H,;加数指针,DI,52H,MOV,BX,,,54H,;和的指针,BX,54H,CLC,;,清,CF,XOR,AX,,,AX,;清,AX,冗余,MOV,AX,,,SI,;取一个字到,AX,ADC,AX,,,DI,;,AXAX+,DI,+CF,MOV,BX,,,AX,;存一个字到,BX,HLT,;暂停,ADD,【,例,6.2】,拆字节,将内存,(10050),单元的内容拆成两段,每段,4,位,并将它们分别存入内存,(10051),和,(10052),单元。,即,(10050),单元中的低,4,位放入,(10051),的低,4,位,,(10050),单元中的高,4,位放入,(10052),的低,4,位,而,(10051),和,(10052),的高,4,位均为零。,流程图,MOV AX,1000H,MOV DS,AX,MOV SI,50H,;,需拆字节的指针,MOV AL,SI,AND AL,0FH,;高,4,位清,0,MOV SI+1,AL,;保存,MOV AL,SI,MOV CL,4,SHR AL,CL,;高,4,位移到低,4,位,MOV SI+2,AL,;保存,补充例题:查表程序,采用查表法,实现一位,16,进制数,转换为,ASCII,码显示,例 数据段、代码段,;,数据段,ASCIIdb 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,;对应,0 9,的,ASCII,码,db 41h,42h,43h,44h,45h,46h,;对应,A F,的,ASCII,码,hexdb 04h,0bh,;假设两个数据,;,代码段,mov bx,offset ASCII,;,BX,指向,ASCII,码表,mov al,hex,;,AL,取得一位,16,进制数,;恰好就是,ASCII,码表中的位移,and al,0fh,;只有低,4,位是有效的,高,4,位清,0,Xlat,;换码:,ALDS:BX,AL,XLAT,例 代码段(续),mov dl,al,;入口参数:,DLAL,mov ah,2,;,02,号,DOS,功能调用,int 21h,;显示一个,ASCII,码字符,mov al,hex+1,;转换并显示下一个数据,and al,0fh,xlat,mov dl,al,mov ah,2,int 21h,XLAT,stack segment stack,db 100 dup(?),stack ends,data segment,;,数据段,ASCIIdb 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,;,对应,0 9,的,ASCII,码,db 41h,42h,43h,44h,45h,46h,;,对应,A F,的,ASCII,码,hexdb 04h,0bh,;,假设两个数据,data ends,code segment,;,代码段,assume cs:code,ds:data,ss:stack,start:mov ax,data,mov ds,ax,BX最高位移入CF标志,10AL20转LP2,条件满足(AX0),转移,one:mov dl,31h;,MOVAX,1000H,ASCIIdb 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,JCLP1 ;,JCLP1 ;,Jcc指令不影响标志,但要利用标志(表2-4),将0FFH送入BL寄存器,CF1,即最高位为1:DL31H1,CF1,即最高位为1,转移,mov al,hex ;AL取得一位16进制数,和的指针BX54H,JCLP2 ;,mov bx,offset ASCII,;BX,指向,ASCII,码表,mov al,hex,;AL,取得一位,16,进制数,;,恰好就是,ASCII,码表中的位移,and al,0fh,;,只有低,4,位是有效的,高,4,位清,0,Xlat,;,换码:,ALDS:BX,AL,mov dl,al,;,入口参数:,DLAL,mov ah,2,;02,号,DOS,功能调用,int 21h,;,显示一个,ASCII,码字符,mov al,hex+1,;,转换并显示下一个数据,and al,0fh,xlat,mov dl,al,mov ah,2,int 21h,mov ax,4c00h,int 21h,;返回操作系统,code ends,end start,6.3 分支程序设计,分支程序根据条件是真或假决定执行与否,判断的条件是各种指令,如,CMP,、,TEST,等执行后形成的,状态标志,转移指令,Jcc,和,JMP,可以实现分支控制,分支结构有,单分支结构,双分支结构,多分支结构,Jcc指令的分类(P133 表),Jcc,指令不影响标志,但要利用标志(,表,2-4,),根据利用的标志位不同,分成三种情况:,判断单个标志位状态,比较无符号数,高低,(above,belowe),比较有符号数,大小,(greater,less),Jcc,指令实际虽然只有,16,条,但却有,30,个助记符,采用多个助记符,目的是为了方便记忆和使用,1、单分支结构,条件成立跳转,否则顺序执行分支语句体,注意选择正确的条件转移指令和转移目标地址,补充例:求绝对值,计算AX中有符号数的绝对值,cmp ax,0,jge nonneg,;条件满足(,AX0,),转移,neg ax,;条件不满足,求补,nonneg:,mov result,ax,;保存结果,;不恰当的分支,cmp ax,0,jl yesneg,;条件满足(AX0),转移,jmp nonneg,yesneg:,neg ax,;条件满足,求补,nonneg:,mov result,ax,;保存结果,或JNL,2、双分支结构,条件成立跳转执行第,2,个分支语句体,否则顺序执行第,1,个分支语句体,注意第,1,个分支体后一定要有一个,JMP,指令跳到第,2,个分支体后,补充例:显示BX的最高位,显示BX的最高位,shl bx,1,;,BX,最高位移入,CF,标志,jc,one,;,CF,1,,即最高位为,1,,转移,mov dl,30h,;,CF,0,,即最高位为,0,:,DL30H,0,jmp two,;一定要跳过另一个分支体,one:mov dl,31h,;,DL 31H,1,two:mov ah,2,int 21h,;显示,可以用,JNC,替换,JC,显示BX的最高位(续),shl bx,1,;,BX,最高位移入,CF,标志,jnc,one,;,CF,0,,即最高位为,0,,转移,mov dl,31h,;,CF,1,,即最高位为,1,:,DL31H,1,jmp two,;一定要跳过另一个分支体,one:mov dl,30h,;,DL 30H,0,two:mov ah,2,int 21h,;显示,转换为单分支结构,显示BX的最高位(另解),mov dl,0,;,DL30H,0,shl bx,1,;,BX,最高位移入,CF,标志,jnc two,;,CF,0,,即最高位为,0,,转移,mov dl,1,;,CF,1,,即最高位为,1,:,DL31H,1,two:,mov ah,2,int 21h,;显示,编写分支程序,需留心分支的开始和结束,显示BX的最高位(无分支),mov dl,0,shl bx,1,;,BX,最高位移入,CF,标志,adc dl,30h,;,CF,0,,,DL0,30h,0,30H,0,;,CF,1,,,DL0,30h,1,31H,1,two:,mov ah,2,int 21h,;显示,【例6.3】,求,AX,累加器和,BX,寄存器中两个无符号数之差的绝对值,结果放在内存,(2800),单元中。,(1),分析题目:,AX,累加器和,BX,寄存器中的数是不知道的。显然应该先解决哪一个值稍大些,然后再用大数减小数的方法,才可求得绝对值。,(2),根据指令系统中的比较指令,编出判断大小的环节,即可解决问题,,CLC,;清除,CF,SUB,AX,,,BX,;,AXAX-BX,JC,AA,;,CF,转,AA,去执行,(,即,AX,BX,时转移,),MOV,DI,,,2800H,;结果指针,DI,2800H,冗余,MOV,DI,,,AX,;结果送到,2800H,和,2801H,单元,HLT,;暂停,AA:,SUB,BX,,,AX,;,BXBX-AX,?,MOV,DI,,,2800H,;,冗余,MOV,DI,,,BX,HLT,修改:,MOV,DI,,,2800H,;结果指针,DI,2800H,CLC,;清除,CF,SUB,AX,,,BX,;,AXAX-BX,JC,AA,;,CF,转,AA,去执行,(,即,AX,BX,时转移,),MOV,DI,,,AX,;结果送到,2800H,和,2801H,单元,HLT,;暂停,AA:,NEG AX,;,求补,MOV,DI,,,AX,HLT,【例6.4】,从外设,71H,号中取一个数,M,,判断其值是否在,10,和,20,之间,即,10M,20,。,如果,M20H,,则送,0FFH,给外设,73H,;如果,M,10,,则送,00H,给外设,73H,;如果,10M,20,,则送,88H,给外设,73H,。,(1),分析题目:根据题意,我们可以看出这是一个需要两次判断,M,大小的问题。我们可以先判,M,是否大于,10,,再判,M,是否大于,20,。,(2),根据解决问题的思路,我们先画出程序流程图,如图所示。,流程图来看,两个分支都要“回归”原程序。,流程图,例6.4 程序,START,:,IN,AL,,,71H,;将,71H,端口的字节读入,AL,CLC,;清除,CF,CMP,AL,,,10,;将,AL,的内容和,10,相比较,JC,LP1,;小于,10,转,LP1,CMP,AL,,,20,;将,AL,的内容和,20,相比较,JC,LP2,;,10AL,20,转,LP2,MOV,BL,,,0FFH,;将,0FFH,送入,BL,寄存器,LP3,:,OUT,73H,,,BL,;将,0FFH,输出到,73H,端口,HLT,;暂停,LP1,:,MOV,BL,,,00,JMP,LP3,LP2,:,MOV,BL,,,88H,JMP,LP3,JB,JB,3、多分支结构,多分支结构是多个条件对应各自的分支语句体,哪个条件成立就转入相应分支体执行,AH=0,fuction0,Y,N,AH=1,fuction1,Y,N,AH=2,fuction2,Y,N,cmp ah,0,jz function0,cmp ah,1,jz function1,cmp ah,2,jz function2,小节:,程序设计步骤,顺序程序设计,分支程序设计,(复习条件转移指令),下周二下午7、8节,4班实验,,硬件实验室(9-408),请一定带鞋套!,XLAT指令的功能,条件转移指令的含义,JZ/JEJump on Zero/Equal,JNZ/JNEJump on Not Zero/Equal,JSJump on Sign,JNSJump on Not Sign,JP/,JPE,Jump on Parity(奇偶)/Parity Even(偶数),JNP/,JPO,Jump on Not Parity/Parity Odd(奇数),JOJump on Overflow,JNOJump on Not Overflow,JC/JB/JNAEJump on Carry/,Below,/Not,Above,or Equal,JNC/JNB/JAEJump on Not Carry/Not Below/Above or Equal,JBE/JNAJump on Below or Equal/Not Above,JNBE/JA,Jump on Not Below or Equal/Above,JL/JNGEJump on,Less,/Not,Greater,or Equal,JNL/JGEJump on Not Less/Greater or Equal,JLE/JNGJump on Less or Equal/Not Greater,JNLE/JGJump on Not Less or Equal/Greater,
    展开阅读全文

    开通VIP折扣优惠下载文档

    提示  咨信网声明:本文档由用户上传并分享,仅供学习交流、研究之用,未经授权,严禁复制、发行、汇编、翻译或网络传播等,侵权必究。

    咨信网小贴示:
    1、浏览或下载可查看了解,请点击【咨信网告知】。
    2、下载文件中如有侵权或不适当内容,将立即纠正。
    3、如果因为网速或其他原因下载失败请重新下载,重复下载[60天内]不扣币。
    4、开具发票登录电脑端申请,请点击【索取发票】。

    咨信网客服组:【微信客服】

    自信AI创作助手
    关于本文
    本文标题:顺序分支程序设计.ppt
    链接地址:https://www.zixin.com.cn/doc/14509581.html

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork