第3节 分支程序设计
推荐给好友
打印
加入收藏
更新于2009-06-01 10:59:52

3.1 用条件转移指令实现程序分支

【例4.3】编写计算下面函数值的程序:


设输入数据为X、输出数据Y,且皆为字节变量。程序流程图如图4.2所示。
程序如下:
DATA SEGMENT
X        DB -10
Y        DB ?
DATA ENDS
STACK SEGMENT STACK
         DB 200 DUP(0)
STACK ENDS
CODE SEGMENT
         ASSUME DS:DATA,SS:STACK,CS:CODE
START: MOV AX,DATA
                   MOV DS,AX 
                   CMP X,0 ;与0进行比较 
                   JGE A1 ;X≥0转A1 
                   MOV Y,-1 ;X <0时,-1→Y 
                   JMP EXIT
A1: JG A2 ;X>0转A2 
                   MOV Y,0 ;X=0时,0→Y 
                   JMP EXIT
A2: MOV Y,1 ;X>0,1→Y 
                   EXIT: MOV AH,4CH 
                   INT 21H 
CODE ENDS 
                   END START 


【例4.4】试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。
设三个带符号数分别在三个字变量X、Y、Z中存储。程序流程图如图4.3所示 


程序如下:
STAC SEGMENT STACK
DB      200 DUP(0)
STACK ENDS
DATA SEGMENT
X          DW 00ABH
Y          DW –5
Z          DW 200
MAX     DW ?
DATA ENDS
CODE SEGMENT 
             ASSUME DS:DATA,SS:STACK,CS:CODE
START: MOV AX,DATA 
                  MOV DS,AX 
                  MOV AX,X 
                  CMP AX,Y ;X>Y? 
                  JG L1 
                  MOV AX,Y ;Y>Z? 
                  CMP AX,Z 
                  JG EXIT 
L2:         MOV AX,Z 
                  JMP EXIT 
L1:        CMP AX,Z ;X>Z? 
                  JLE L2 
EXIT:      MOV MAX,AX 
                  MOV AH,4CH 
                  INT 21H
CODE ENDS 
                  END START 

3.2 用跳转表实现多路分支

【例4.5】设某程序有8路分支,试根据给定的N值(1~8),将程序的执行转移到其中的一路分支。
程序流程如图4.4所示。 


程序如下:
DATA SEGMENT
TAB    DW P1,P2,P3,P4,P5,P6,P7,P8
N        DB 5
DATA ENDS
STACK SEGMENT
              DB 200 DUP(0)
STACK ENDS
CODE SEGMENT
              ASSUME DS:DATA,SS:STACK,CS:CODE 
START: MOV AX,DATA 
              MOV DS,AX 
              ┆ 
              MOV AL,N 
              DEL AL 
              ADD AL,AL 
              MOV BM,AL 
              MOV BH,0 
              JMP TAB[BX] 
P1: …… 
              ┆ 
              JMP EXIT
P2: …… 
              ┆ 
              JMP EXIT
P2: …… 
              ┆ 
              JMP EXIT
P3: …… 
              ┆ 
              JMP EXIT 
              ┆
P8: …… 
              ┆ 
              EXIT: MOV AH,4CH 
              INT 21H
CODE ENDS 
              END START
上述程序中的无条件转移指令的转移地址采用的是变址寻址。同理,转移地址也可以用寄存器间接寻址或基址加变址寻址,读者可自行考虑。 

 

上一节                    下一节

相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.