太原理工大学硬件实验3
本科实验报告
课程名称: 计算机硬件基础
实验项目:实验三 汇编语言程序
:分支和循环程序实验
实验地点: 逸夫楼202与计算机硬件实验室701
专业班级: 软件**** 学号: ******
学生姓名: ****
指导教师: 高劲松
2013年 5月17日
实验名称:实验三 汇编语言程序设计:分支和循环程序实验 实验目的和要求:
1(通过分支程序设计、循环程序设计实验,掌握无条件转移指令、条件转移指令的格
式、功能及使用
。
2(掌握分支程序的结构、单分支和多分支程序的设计方法。
3(了解循环程序的基本结构和控制循环的方法。
实验内容和原理:
1(预习汇编程序上机操作的全过程。
编写一个汇编语言源程序;以下是MASM5环境中运行步骤:(同学们也可以使用CV集成
编译环境)
(1)在dos环境下,如:d:\masm\ 下输入命令:edit
(2)打开编辑窗口
(3)输入如下原程序后保存文件,例如 exp1.asm
(4)输入下列指令进行编译: d:\masm\ masm exp1.asm回车
检查错误,如结果为0错误 0警告则编译成功,产生exp1.obj文件
(5)输入下列指令进行链接: d:\masm\link exp1.obj回车
如结果为0错误 0警告则链接成功,产生exp1.exe文件
(6)运行程序检验结果。d:\masm\ exp1回车
2(对已经汇编连接成功的可执行文件,使用DEBUG命令调试程序找出程序的断点,执行
程序,显示有关寄存器、存储单元的内容,分析程序的结果。 主要仪器设备:HP6460b笔记本
实验
:
1. 已知X、Y、Z、MAX为16位的带符号数,求三个数中最大值,结果存入MAX单元。 STACK SEGMENT STACK
DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
X DW 10H
Y DW 20H
Z DW 30H
MAX DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
START: MOV AX, DATA
MOV DS, AX
MOV AX ,X
MOV BX ,Y
CMP AX , BX
JNL NEXT
XCHG AX,BX
NEXT: MOV BX,Z
JNL NEXT1
XCHG AX,BX
NEXT1: MOV MAX,AX
CODE ENDS
END START
求10个学生成绩中的最高成绩,结果存入MAX字节单元中,已知成绩为字节型。 2.
STACK SEGMENT STACK DB 200 DUP(0)
STACK ENDS
DATA SEGMENT
A1 DB 96,73,34,86,99,20,15,4,100,0
MAX DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV BX,0
MOV AL,A1[BX]
AGAIN: INC BX
CMP A1[BX],AL
JBE NEXT
XCHG AL,A1[BX] NEXT: LOOP AGAIN
MOV MAX,AL
CODE ENDS
END START
实验结果和分析:
体会:
由调试步骤可知上述实验结果正确。
其中在调试过程中,
AGAIN: INC BX
CMP AL,A1[BX]
JBE NEXT
XCHG AL,A1[BX]
其中出现了错误,应该为CMP A1[BX],AL 而导致求出为最小的成绩。
通过一步一步的调试可能找到错误的原因。写循环使用LOOP,其中处理数据的形式,
忘记其中的语句的语义是否正确可以使用调试开验证是否正确。 即A1[BX]。