华工微机实验报告实验三分支和循环设计实验.docx
《华工微机实验报告实验三分支和循环设计实验.docx》由会员分享,可在线阅读,更多相关《华工微机实验报告实验三分支和循环设计实验.docx(10页珍藏版)》请在冰豆网上搜索。
华工微机实验报告实验三分支和循环设计实验
实验报告
课程名称
微型计算机原理及其应用
实验项目
分支和循环设计实验
学生姓名
朱轲信
学生学号
201530281598
专业/班级
信息工程冯秉铨实验班
实验成绩
电子与信息学院实验中心制
二〇一七年版
预习报告
一、实验目的
1.掌握分支程序的结构。
2掌握分支程序的设计、调试方法。
3加深对循环结构的理解。
4掌握循环结构程序设计的方法。
5熟练掌握调试循环程序的方法。
二、实验设备
微机一台、TDS-MD微机一台
三、实验内容及步骤
1.设计一数据块间的搬移程序
设计思想:
程序要求把内存中一数据区(称为源数据块)传送到另一存贮区(称为目的数据块)。
源数据块和目的数据块在存贮中可能有三种情况。
对于两个数据块分离的情况,数据的传送从数据块的首址开始,或者从数据块的末址开始均可,但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。
可以得出以下结论:
当源数据块首址〉目的块首址时,从数据块首址开始传送数据。
当源数据块首址〈目的块首址时,从数据块末地址开始传送数据。
代码:
STACKSEGMENTSTACK'STACK'
DB50DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK
START:
MOVCX,0AH
MOVBX,3500H
MOVSI,[BX]
MOVDI,[BX+2]
CMPSI,DI
JAA1
MOVAX,SI
ADDAX,CX
MOVSI,AX
MOVAX,DI
ADDAX,CX
MOVDI,AX
DECSI
DECDI
STD
REPMOVSB
JMPEXIT
A1:
CLD
REPMOVSB
EXIT:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
流程图:
结果:
在源数据块中存入6个数,分别使SI大于、等于、小于DI均发觉数据正确传送。
可见程序正确。
2.
(1)编制程序使S=1+2*3+3*4+4*5+……N(N+1),直到N(N+1)项大于200为止。
流程图:
代码:
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
DATASEGMENT
YDW1
ADB2
BDB3
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVAL,A
MULB
ADDY,AX
LOOP1:
INCA
INCB
MOVAL,A
MULB
ADDY,AX
CMPAL,200
JBELOOP1
MOVDX,Y
EXIT:
CODEENDS
ENDSTART
(2)求某个数据区内负数的个数
设数据区的第一单元存放区内数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。
为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。
流程图:
代码:
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
DATASEGMENT
ORG3500H
FIRSTDB5,-1,-2,-3,4,-5,?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,0;初始化CX
MOVCL,FIRST[0];把判断次数推入CX
MOVDX,0
MOVBX,1
LOOP1:
MOVAL,FIRST[BX];
TESTAL,80H
JZNEXT
INCDX
NEXT:
INCBX
LOOPLOOP1
MOVFIRST[BX],DX
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
原始数据记录
地点:
楼
房
实验日期与时间:
实验台号
原始数据检查
实验教师:
实验3-1SI大于DI的实验结果图
实验3-1SI小于DI的实验结果图
实验3-1SI与DI所指区域有重叠实验图
实验3-2结果图
实验3-3结果图
数据分析与实验结论
实验3-1预期结果与实际结果一致
实验3-2
由图可以看到DX中的数值为045FH,即1119。
预期结果与实际结果一致
实验3-3
04BB:
3500H后的字节单位依次是:
5(数据个数)-1-2-34-54(负数的个数)
负数的个数为4,
预期结果与实际结果一致