实验三 分支程序设计
一、实验要求和目的1.熟悉汇编语言程序设计结构;
2.熟悉汇编语言分支程序基本指令的使用方法;
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。
二、软硬件环境
1.硬件环境:微机 CPU 486 以上, 500MB以上硬盘, 32M以上内存;
2.软件环境:装有 MASM 5.0、 DEBUG、 LINK 和 EDIT 等应用程序。
三、实验涉及的主要知识单元
在实际应用中, 经常根据一些条件来选择一条分支执行。 汇编语言的条件判断主要是通
过状态寄存器中的状态位、 无符号数相减或有符号和相减而导致的结果来进行。
下面就有符号数转移指令来了解在汇编语言程序设计方法。
四、实验内容与步骤
1.实验内容
( 1)编写计算下面函数值的程序:
1, x
0
y
0, x
0
1, x
0
设输入数据为
X 、输出数据
Y ,且皆为字节变量,使用
Debug 查看
X、 Y 两个变量
的数据
( 2)以 ARRAY为首地址的内存单元中,
最大数,并将结果存入 RESULT字节单元中。
2.实验步骤
存放
5 个
8 位的不带符号数, 找出
5 个数中的实验流程图
计算函数值的流程图
编写程序
计算函数值的实验代码
DB 12
DB ?
MOV DS,AX
MOV AL,XX
CMP AL,0
;把 AX与 0 比较
JGE BIGPR
; AL
0
转入 BIGPR
MOV Y,0FFFFH
; AL
0
则 Y1
JMP EXIT
BIGPR: JE EQUPR
; AL
0
转入 EQUPR
MOV Y,1
; AL
0 则 Y
1
JMP EXIT
EQUPR: MOV Y,0
; AL
0 则 Y
0
EXIT:
MOV AL,Y
RET
CODE
ENDS
END START
查找最大值的实验代码
DATA
SEGMENT
ARRAY
DB
2,1,4,5,3
RESULT DB
DATA
ENDS
STACK
SEGMENT STACK'STACK'
DB 100H DUP(?)
STACK
ENDS
CODE
SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
LEA BX,ARRAY
MOV AL,[BX]
;ARRAY第一个数存入 BX
MOV CX,5
;置循环次数
LOP:
INC BX
;指针变量增 1
CMP AL,[BX]
;比较 AL 中数与 [BX] 的大小
JAE L1
; AL [BX] 转入 L1
MOV AL,[BX]
; AL [BX] 则 AX[BX]
L1:
LOOP LOP
;执行循环 LOP程序
MOV RESULT,AL
MOV AH,4CH
INT 21H
CODE
ENDS
END START
c. 对程序进行 debug 调试,观察中间结果
计算函数值的调试
反汇编内容
①MOV AL,XX 反汇编后变成 MOV AL,[0000] ,即 XX 为数据段第一个存储单元的内
容,数据段的起始偏移地址为 0000。
②MOV Y,-1; MOV Y, 0; MOV Y, 1 反汇编后分别对应 MOV BYTE PTR [0001],FF, MOV BYTE PTR [0001],00 , MOV BYTE PTR [0001],01 它们都表示比较后所得的结果存入
数据段的第二个存储单元 0001
③JGE 如果为真,则程序执行会转入有效地址为 0014 的指令所在的存储单元,即开始执行
1407:0014 里的指令, JZ 若为真,则程序转去执行有效地址为 001E 里的命令,即存储单元
1407:001E 的内容
2.D 命令查看 Y 存储单元的内容,当输入为 12 时输出为 1
当输入为 0 时,输出为 0
(2)查找最大值
1.反汇编
2.查找的最大值为 5
即 RESULT 中存放五个数中的最大值 5
相关热词搜索: 微机 程序设计 分支 原理 实验