分支程序设计
上机实验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<B |
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<B |
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、实验内容
录入并调试完成教材P355例9-2,例9-3,和P358例9-5,掌握8086汇编跳转指令的使用。
9-2
9-3
9-5
运行结果:
2、把调试完成后的例9-2,例9-3,例9-5提交。