分支程序设计

上机实验06 分支程序设计

知识提要:

本章主要对分支程序加以介绍,其知识要点:

1.无条件转移指令JMP

无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。

2.条件转移指令JXX

条件转移指令可分为三大类:

1.简单条件转移指令。根据单个标志位的状态判断转移条件。

标志位

指令

转移条件

意义

CF

JC

CF=1

有进位/借位

JNC

CF=0

无进位/借位

ZF

JE/JZ

ZF=1

相等/等于0

JNE/JNZ

ZF=0

不相等/不等于0

SF

JS

SF=1

是负数

JNS

SF=0

是正数

OF

JO

OF=1

有溢出

JNO

OF=0

无溢出

PF

JP/JPE

PF=1

有偶数个1

JNP/JPO

PF=0

有奇数个1

 

2.无符号数条件转移指令。

假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:

指令

转移条件

意义

JA/JNBE

CF=0 AND ZF=0

A>B

JAE/JNB

CF=0 OR ZF=1

A>=B

JB/JNAE

CF=1 AND ZF=0

A

JBE/JNA

CF=1 OR ZF=1

A<=B

3.带符号数条件转移指令。

    指令

转移条件

意义

JG/JNLE

SF=OF AND ZF=0

A>B

JGE/JNL

SF=OF OR ZF=1

A>=B

JL/JNGE

SF OF AND ZF=0

A

JLE/JNG

SF OF OR ZF=1

A<=B

 

一、实验要求和目的

   

1.熟悉汇编语言程序设计结构;

2.熟悉汇编语言分支程序基本指令的使用方法;

    3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。

 

二、软硬件环境

 

    1.硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;

2.软件环境:装有MASM 5.0、DEBUG、LINK和EDIT等应用程序。

 

三、实验涉及的主要知识单元

在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号和相减而导致的结果来进行。下面就有符号数转移指令来了解在汇编语言程序设计方法。

如:判断方程AX2+BX+C=0是否有实根。若有实根,则将字节变量TAG置1,否则置0。假设A、B、C均为字节变量,数据范围为-128~127。

分析:二元一次方程有根的条件是B2-4*A*C>=0。依据题意,先计算出B2和4*A*C,然后比较两者大小,根据比较结果给TAG赋不同的值。

请分析并理解下面程序:

 

 

 

 

Data segment

   A db 7

   B db 8

   C db 6

   Tag db ?

Data ends

Code segment

   Assume ds:data,cs:code

Start:

Mov ax,data

Mov ds,ax

Mov al,b

Imul al;乘法指令,求出B2的值并放入AX中

Mov bx,ax

Mov al,a

Imul c

Mov cx,4

Imul cx

Cmp bx,ax

Jge yes

Mov tag ,0

Jmp done

Yes: mov tag,1

Done: mov ah,4ch

Int 21h

Code Ends

End start

四、实验内容与步骤

1、实验内容

录入并调试完成教材P3559-2,例9-3,和P3589-5,掌握8086汇编跳转指令的使用。

9-2

9-3

9-5

运行结果:

 

2、把调试完成后的例9-2,例9-3,例9-5提交。

 

 

你可能感兴趣的:(分支程序设计)