资源描述:
《微型计算机原理与汇编语言程序设计 曲凤娟 第7章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章分支结构程序设计本章内容提示本章将详细介绍转移类指令的应用,并介绍分支结构程序的基本形式、设计方法与设计实例7.1转移类指令7.2分支结构程序设计7.1转移类指令7.1.1无条件转移指令7.1.2条件转移指令返回本章首页7.1.1无条件转移指令JMPlabel;程序转向label标号指定的地址JMP指令分成4种类型:⑴段内直接短转移JMPSHORTOPR;IP〈—(IP)+8位偏移量⑵段内直接近转移JMPNEARPTROPR;IP〈——(IP)+16位偏移量⑶段内间接转移JMPR16/M16;IP←R16/MEM16不修改CS的内容。例如:JMPAX;IP←AXJMPWORDPTR
2、[2000H];IP←[2000H]⑷段间直接转移格式JMPFARPTRLABEL;IP〈——LABEL的偏移地址;CS〈——LABEL所在段的段地址例如:CODE1SEGMENTCODE2SEGMENTASSUMECS:CODE1ASSUMECS:CODE2START:∶BEGIN:∶∶JMPFARPTRPRINPRIN:∶NEXT:∶JMPFARPTRNEXT∶∶CODE2ENDSCODE1ENDSENDSTART⑸段间间接转移格式JMPDWORDPTROPR;IP〈—(EA),CS〈—(EA+2)用一个双字存储单元表示要跳转的目标地址:低位字送IP,高位字送CS。例如:MOVWOR
3、DPTR[BX],0MOVWORDPTR[BX+2],1500HJMPDWORDPTR[BX];转到1500H:07.1.2条件转移指令JCCLABEL;条件满足,转移:IP←(IP)+8位偏移量;条件不满足,顺序执行不影响标志位,但要利用标志位可分为四类:1、判断单个标志位状态2、比较两个无符号数3、比较两个带符号数4、JCXZ特殊指令JCXZ计数器CX为0转移JCXZlabel;CX=0,发生转移:IP←(IP)+8位偏移量;CX≠0,顺序执行MOVCX,100AGAIN:JCXZNEXT;判断(CX)是否为0MOVSB;传送一个字节DECCX;传送次数减1JMPAGAINNEXT:
4、…...7.2分支程序的结构和程序设计7.2.1分支程序的结构形式7.2.2分支结构的程序设计返回本章首页7.2.1分支程序的结构形式8086指令系统有许多条件转移指令,说明8086系统有很强的逻辑判断能力,能根据逻辑判断选择执行不同程序段选择程序的结构有两种形式:双分支结构和多分支结构(1)双分支结构(2)双分支结构(3)多分支结构程序设计7.2.2分支结构程序设计1.简单的双分支程序设计例:内存中字节单元X,存有带符号数据,计算它的绝对值放入RESULT单元。分析:正数的绝对值是它本身,负数的绝对值是它的相反数;8086指令系统有专门的求相反数指令DATASEGMENTXDB-25R
5、ESULTDB?DATAENDSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AX;初始化MOVAL,X;X取到AL中TESTAL,80H;测试AL正负JZNEXT;为正,转NEXTNEGAL;否则AL求补NEXT:MOVRESULT,AL;送结果MOVAH,4CHINT21H;返回DOSCODEENDSENDSTART;汇编结束2.多分支程序设计若干个条件,每一条件对应一基本操作从若干分支中选择一个分支执行多分支结构实现的方法有:条件选择法、转移表法和地址表法条件选择法一个条件选择指令可实现两路分支多个条件选择指令就可以实现
6、多路分支适用于分支数较少的情况。用条件转移指令实现程序分支例:编写计算下面函数值的程序:1X>0Y=0X=0-1X<0设输入数据为X、输出数据Y,且皆为字节变量。DATASEGMENTXDB-25YDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;初始化MOVAL,X;X取到AL中CMPAL,0;Al中内容和0比较JGEBIG;大于等于0,转BIGMOVBL,-1;否则为负数,-1送BLJMPEXIT;转到结束位置BIG:JEEE;(Al)是否为0,为0转EEMOVBL,1;否则为大于0,1送BLJMP
7、EXIT;转到结束位置EE:MOVBL,0;0送BLEXIT:MOVY,BL;BL中内容送Y单元MOVAH,4CHINT21H;程序结束CODEENDSENDSTART;汇编结束例:试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。设三个带符号数分别在三个字变量X、Y、Z中存储。STASEGMENTSTACKDB200DUP(0)STAENDSDATASEGMENTXDW00ABHYDW–5ZDW200MAXD