微机原理及接口技术 4分支_第1页
微机原理及接口技术 4分支_第2页
微机原理及接口技术 4分支_第3页
微机原理及接口技术 4分支_第4页
微机原理及接口技术 4分支_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、判定条件判定条件分支程序段分支程序段1 1 分支程序段分支程序段2 2判定条件判定条件分支程序段分支程序段1 1分支程序段分支程序段n n条件条件1 1条件条件n n【例例1 1】cmp ax,bmov ax,bmov max,cmov ax,a定义定义a,b,cabovelowcmp ax,clowmov max,axaboveData segmenta dw 64b dw 9c dw 30max dw ?Data endsStack segmentdb 100 dup(?)Stack endsCode segmentassume cs:code,ds:dataassume ss:stack

2、main: push dsmov ax,0push axmov ax,datamov ds,ax mov ax,acmp ax,bja q1 mov ax,bq1: cmp ax,cjg q2mov ax,cq2: mov max,ax retcode endsend main 多分支结构是有若干个条件,每一个条件多分支结构是有若干个条件,每一个条件对应一个基本操作。分支程序就是判断产生的对应一个基本操作。分支程序就是判断产生的条件,哪个条件成立,就执行哪个条件对应操条件,哪个条件成立,就执行哪个条件对应操作的程序段。也就是说,从若干分支中选择一作的程序段。也就是说,从若干分支中选择一个分支执

3、行。个分支执行。 多分支结构实现的多分支结构实现的方法方法有:有: 条件选择条件选择法、法、转移表法转移表法和和地址表法。地址表法。条件选择法:条件选择法: 一个条件选择指令可实现两路分支,多个条一个条件选择指令可实现两路分支,多个条件选择指令就可以实现多路分支。这种方法适用件选择指令就可以实现多路分支。这种方法适用于分支数较少的情况。于分支数较少的情况。 【例例2 2】编写计算下面函数值的程序:编写计算下面函数值的程序: 1 1 X X0 0 Y= 0 Y= 0 X=0 X=0 -1 -1 X X0 0程序如下:程序如下:DATA DATA SEGMENTSEGMENT X DB -25 X

4、 DB -25 Y DB ? Y DB ?DATA DATA ENDSENDSCODE CODE SEGMENTSEGMENT ASSUME CS:CODE,DS:DATAASSUME CS:CODE,DS:DATASTART:MOV AX,DATASTART:MOV AX,DATA MOV DS,AX MOV DS,AX ;初始化;初始化 MOV AL,X MOV AL,X ;X X取到取到ALAL中中CMP AL,0 CMP AL,0 ;AlAl中内容和中内容和0 0比较比较JGE BIG JGE BIG ;大于等于;大于等于0 0,转,转BIGBIGMOV BL,-1 MOV BL,-1

5、 ;否则为负数,;否则为负数,1 1送送BLBLJMP EXIT JMP EXIT ;转到结束位置;转到结束位置BIG:BIG: JE EE JE EE ;AlAl中内容是否为中内容是否为0 0,为,为0 0转转EEEEMOV BL,1 MOV BL,1 ;否则为大于;否则为大于0 0,1 1送送BLBLJMP EXIT JMP EXIT ;转到结束位置;转到结束位置EE:EE: MOV BL,0 MOV BL,0 ;0 0送送BLBLEXIT:EXIT: MOV Y,BL MOV Y,BL ;BLBL中内容送中内容送Y Y单元单元 MOV AH,4CHMOV AH,4CH INT 21H I

6、NT 21H ;程序结束并返回;程序结束并返回CODE ENDSCODE ENDS END START END START ;汇编结束;汇编结束转移表法:转移表法: 把转移到各分支程序段的转移指令依次放把转移到各分支程序段的转移指令依次放在一张表中,这张表称为在一张表中,这张表称为转移表转移表。把离表首单。把离表首单元的偏移量作为条件来判断各分支转移指令在元的偏移量作为条件来判断各分支转移指令在表中的位置。当进行多分支条件判断时,把当表中的位置。当进行多分支条件判断时,把当前的前的条件(偏移量)条件(偏移量)加上表首地址作为转移地加上表首地址作为转移地址,转移到表中的相应位置,继续执行无条件址

7、,转移到表中的相应位置,继续执行无条件转移指令,达到多分支的目的。转移指令,达到多分支的目的。 【例例3 3】设某程序有设某程序有8 8路分支,试根据给定的路分支,试根据给定的N N值值(1(1 8),8), 将程序的执行转移到其中的一路分支。将程序的执行转移到其中的一路分支。程序如下:程序如下:DATASEGMENT TAB DW P1,P2,P3,P4,P5,P6,P7,P8 N DB 5DATAENDSSTACK SEGMENT STACK DB 200 DUP(0)STACK ENDSCODESEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE STARTST

8、ART:MOVMOV AXAX,DATADATAMOVMOV DSDS,AXAXMOVMOV ALAL,N NMOVMOV BLBL,ALALMOVMOV BHBH,0 0JMPJMP TABBXTABBXP1P1: JMPJMP EXIT EXITP2P2: JMP EXITJMP EXITP3P3: JMPJMP EXIT EXITP4P4: JMPJMPEXITEXITP8P8: EXITEXIT:MOVMOV AHAH,4CH4CH INT INT 21H21HCODECODE ENDSENDSENDENDSTARTSTARTBR1低字节低字节BR1高字节高字节BR2低字节低字节BR2

9、高字节高字节BR3低字节低字节BR3高字节高字节BRn低字节低字节BRn高字节高字节 表由入口地址组成表由入口地址组成 地址表法地址表法 转移表格转移表格P1P2P3Pn表首址表首址思考题思考题 统计数据块中正数与负数的个数统计数据块中正数与负数的个数, ,并将正数并将正数与负数分别送到两个缓冲区。与负数分别送到两个缓冲区。 DATA SEGMENTDATA SEGMENTBLOCKBLOCK DB -1,-3,5,6,-2,0,20,10 DB -1,-3,5,6,-2,0,20,10 PLUS_DPLUS_D DB 8 DUP(?) DB 8 DUP(?)MINUS_DMINUS_D DB

10、 8 DUP(?) DB 8 DUP(?)PLUSPLUS DB 0 DB 0MINUSMINUS DB 0 DB 0DATA ENDSDATA ENDSMOVMOVSI,OFFSET BLOCKSI,OFFSET BLOCKMOVMOVDI,OFFSET PLUS_DDI,OFFSET PLUS_DMOVMOVBX,OFFSET MINUS_DBX,OFFSET MINUS_DMOVMOVCX, 8CX, 8GOON:GOON:LODSBLODSB ;AL SI ;AL SITESTTESTAX,80HAX,80HJNZJNZFUFU ; ;为负数,转为负数,转INCINCPLUSPLUS ; ;正数个数加一正数个数加一STOSBSTOSB ;DI AL, ;DI AL,传正数传正数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论