本科实验报告
实验名称: 实验四 分支和循环实验
课程名称:
计算与网络实验(II)
实验时间:
任课教师:
实验地点:
10-102
实验教师:
高平
实验类型:
■ 原理验证
□ 综合设计
□ 自主创新
学生姓名:
学号/班级:组 号:
57
学 院:
信息与电子学院
同组搭档:
专 业:
电子信息工程
成 绩:
实验四 分支和循环实验
实验目的
掌握比较转移指令;
理解条件转移和无条件转移指令的区别;
掌握单分支、双分支、多分支的程序设计方法;
掌握循环程序设计方法。
实验软硬件环境
硬件环境:惠普64位一体化计算机及局域网;
软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。
实验相关知识
无条件转移指令JMP
JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。
条件转移指令JXX
简单条件转移指令,根据单个标志位的状态判断转移条件。
表 SEQ 表 \* ARABIC 3条件转移指令标志位的状态
无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:
表 SEQ 表 \* ARABIC 4无符号数条件转移指令条件
带符号数条件转移指令。
表 SEQ 表 \* ARABIC 5带符号数条件转移指令条件
循环控制指令
表 SEQ 表 \* ARABIC 6 循环控制指令
实验内容
编写程序,设数据缓存区BUF有一组数据:12H、98H、45H、64H、78H、36H,55H,44H,0ABH、0CFH,按照有符号数对正、负数分别求和,并统计其正数和负数个数。
2)编写程序,数据同上,按照有符号数,求这组数据中最大值,同样按照无符号数,求这组数据中最小值。
3)编写程序,从键盘上输入的字符,若是1-9字符,则显示其数字;若为A-Z字符,显示“CHAR”;若为a-z字符,显示“char”;以‘#’结束程序。
4)编写程序,统计缓冲区BUF中数据(自定义10个数据)中的正数、负数和零的个数,并分别存入变量A1、A2和A3中。
提示:单字符输入输出:利用DOS的INT 21H 系统功能调用来实现字符的输入/输出操作,其中1号功能表示输入字符;2号功能表示输出字符。
显示单个字符可以用DOS的INT 21H的2号功能,将字符放在DL寄存器中,2号放在AH寄存器中。
MOV DL,’6’
MOV AH,2
INT 21H
实验报告要求
实验题目:实验四 分支和循环实验;
实验目的:参见实验讲义;
实验基本原理:参见实验讲义;
实验程序清单,实验框图与流程图,实验途径,实验分析,实验结果;
实验作业:实验总结报告的A4纸型一份(内容见实验报告要求1-3)及程序。
实验结果
代码:
DATAS SEGMENT
BUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH
COUNT EQU $-BUF
NUM1 DB 0
NUM2 DB 0
BUF1 DB 00,00
BUF2 DB 00,00
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,COUNT
MOV SI,0
MOV DI,0
L:
MOV AL,BUF[SI]
CMP AL,0
JG L1
INC NUM2
CBW
ADC word ptr BUF2[DI],AX
JMP L2
L1:
INC NUM1
CBW
ADC WORD PTR BUF1[DI],AX
L2:
INC SI
LOOP L
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果:
和
个数
正数
0202H
7
负数
FF12H
3
2)代码:
DATAS SEGMENT
BUF DB 12H,98H,45H,64H,78H,36H,55H,44H,0ABH,0CFH
COUNT EQU $-BUF
MAX DB 0
MIN DB 0
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,COUNT
MOV SI,0
MOV AL,BUF[SI]
MOV MAX,AL
L:
INC