汇编语言课件-分支程序设计_第1页
汇编语言课件-分支程序设计_第2页
汇编语言课件-分支程序设计_第3页
汇编语言课件-分支程序设计_第4页
汇编语言课件-分支程序设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

分支程序设计分支程序结构双分支(1)判定条件分支程序段1分支程序段2双分支(2)判定条件分支程序段2多分支程序判定条件程序段1程序段2程序段n…双分支程序

1一般结构

编写步骤

(1)产生条件

(2)测试定向标号开始程序段1产生条件条件满足否分支程序程序段2结束开始程序段1产生条件条件满足否分支程序程序段2结束结构1结构2开始程序段1条件满足否分支程序段2分支程序1程序段2结束

双分支程序的程序设计

1.比较两个无符号数的大小,将大数放入

max单元结束y开始X1

ALX1-X2>=0NX2

ALAL

(MAX)DATA

SEGMENTSOURCE

DB

X1,X2MAX DB

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,DS:DATAMOV

AX,DATAMOV

DS,AXMOV

AL,SOURCECMP

AL,SOURCE+1JNC

BRANCHMOV

AL,SOURCE+1BRANCH:MOV

MAX,ALCODE

ENDSEND

2.在一个字符串中查找另一个特定的字符,例如“$”。当找到时,将字符串中“$”字符所在的单元地址(偏移地址)存储在内存中;否则,将0存储在此地址单元中。分析:DATASEGMENTCHAR

EQU

‘$’‘THIS

A

EXAMPLE’••PTRN

DB

CHARADDR

DW

?COUNT

EQU

19DATA

ENDS•开始字符串首地址

DI‘$’

AL字符串长度

CXSCAS搜索找到$吗?1

DIDI-1

DI将$地址存入内存结束11CODE

SEGMENTASSUME

CS:CODE,DS:DATASTART:MOV

AX,DATAMOV

DS,AXMOV

DI,OFFSET

PTRNMOV

AL,CHARMOV

CX,COUNTREPNE

SCASBJZ

PASTPRMOV

DI,1PASTPR:DEC

DIMOV

CHRADDR,DICODE

ENDSEND

START•3.若需对某单位职工人数中的男性和女性人数分别进行统计。在人口属性统计表中,男性用“0”表示,女性用“1”表示,要求编程实现。•分析:•DATA

SEGMENT•BLOCK

DB

0,1,0,1,1,…,1•MAN

DW

?•WOMAN

DW

?•COUNT EQU

2000•DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,DS:DATAMOV

AX,DATAMOV

DS,AX••••MOV

CX,COUNTMOV

SI,0MOV

MAN,0MOV

WOMAN,0AGAIN:

MOV

AL,BLOCK[SI]CMP

AL,0JNZ

WOMPROINC

MANJMP

A1WOMPRO:

INC

WOMANA1: INC

SICODELOOP

AGAINMOV

AH,4CHINT

21H ENDSEND3.多分支程序设计条件=?程序段1程序段1程序段1…1转移表法多分支程序设计

转移指令在一张表中,称为转移表。进行多分支转移时,当前条件的偏移量加上表首地址作为转移地址,转移到相应位置。假定系统中有很多事务要处理,每一个事务处理对应一个处理程序。而处理的事务若用模式4.模式模式字

入口地址•••模式10来模区式分0

,•每个*模**式*0对00应•有个M模OD式E

字,模式字和事模务式处1

理0程序入口地址0的对应关系如表,模式字…的范围•是0~*1*0*,*0仅00占•用一MO字D节E节E

的低4位。要求按当前1模式字用转移1表法实现多路分支。•

…•

****101

MODE0

10得到模式字保留模式字低4位模式字=?=0模式0=1模式1模式10…=10LEA

BX,BRATABMOV

AH,0AND

AL,0FHADD

AX,AXADD

BX,AXJMP

BXBRATAB:JMP

SHORT

MODE0JMP

SHORT

MODE1:JMP

SHORT

MODE10:MODE0:模式0处理程序段::MODE10:模式10处理程序段•3.2地址表法多分支程序设计

5.假定将各分支程序进行编号,若存在0,1,…,N的N+1个分支程序。现根据当前的编号,转入到当前的分支程序。若各分支程序的入口地址分别为:

ADDR0,ADDR1,…,ADDRN.以地址表法实现分支。分析:地址表,表地址开始程序编号

AL程序偏移地址

SISI指向的单元

BXJMP

BXADDR0ADDR1ADDRN…DATA

SEGMENTNUM

DBADTABNDW

ADDR0,ADDR1,…,ADDRNDATACODEENDSSEGMENTASSUME

CS:CODE,DS:DATAMOV

AX,DATAMOV

DS,AXMOV

AH,0•MOV

AL,NUMADD

AX,AXMOV

SI,AXMOV

BX,ADTAB[SI]JMP

NEAR

PTR

BX:ADDR0: 分支程序段0:ADDR10:分支程序段10••:CODE

ENDSEND3.3逻辑分解法多分支程序设计

6.若AL寄存器中存放了当前外部有否中断请求的情况。AL中的每一位对应一个中断源的请求情况。若有中断请求,该位为1,否则,无中断请求。若某一种断源有中断请求,则转向相应的中断处理程序。分析:条件=X1?条件=X2?条件=XN?:程序段1程序段2程序段NYAL的位号中段程序入口地址0R01R12R23R34R45R56R67R7ROR

AL,1JC

R0ROR

AL,1JC

R1ROR

AL,1JC

R2ROR

AL,1JC

R3ROR

AL,1JC

R4ROR

AL,1JC

R5ROR

AL,1JC

R6ROR

AL,1JC

R7:3.4多分支程序设计举例例7:符号函数1

当X>0Y=

0-1X=0X<0假设X存放在XX单元,Y存放在YY单元

8.已知两个整数变量A和B,编写完成下列操作的程序:

1)若两数中有一个是奇数,则将奇数存入

ABUF,偶数存入BBUF。

2)若两个数均为奇数,则两数分别加1,并存回原变量处。3)若两个数均为偶数,则两变量不变。分析:奇偶的判断B是偶数吗?NA偶B奇,互换YA奇B偶B是偶数吗?NAB奇,加1YA,B同为奇偶数吗?NYA偶B偶DATA

SEGMENTABUF

DB

X1BBUFDATACODEDB

X2ENDSSEGMENTASSUME

CS:CODE,DS:DATASTART:MOV

AX,DATA••••MOV

DS,AXMOV

AL,ABUFMOV

BL,BBUFXOR

AL,BXTEST

AL,1JZ

CLASSTEST

BL,1JZ

EXITXCHG

BL,ABUFMOV

BBUF,BLJMP

EXITCLASS:TEST

BL,1JZ

EXITINC

ABUFINC

BBUFCODE

ENDSEND

STARTXX

ALAL>=0-1

温馨提示

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

评论

0/150

提交评论