辽工大硬件实验报告1.docx
《辽工大硬件实验报告1.docx》由会员分享,可在线阅读,更多相关《辽工大硬件实验报告1.docx(12页珍藏版)》请在冰豆网上搜索。
![辽工大硬件实验报告1.docx](https://file1.bdocx.com/fileroot1/2022-11/25/98d22af5-0ad8-44cb-8504-45dd67bc547f/98d22af5-0ad8-44cb-8504-45dd67bc547f1.gif)
辽工大硬件实验报告1
成绩
辽宁工程技术大学上机实验报告
课程名称
计算机硬件基础
实验题目
简单程序设计
院系
软件学院
专业
软件工程
班级
12-3
姓名
邢少强
学号
1120010325
实验日期
2014.11.20
实验
目的
1.熟练掌握宏汇编程序设计的思想。
2.掌握顺序程序设计的思想及方法。
3.熟练掌握分支程序的结构。
4.掌握分支程序设计的思想、方法及上机调试过程。
实验
准备
预习和上网查找一下内容:
1.8086/8088宏汇编指令及伪指令
2.汇编语言程序设计的步骤。
分析问题确定算法绘制程序框图
分配存储空间和工作单元编写汇编语言源程序
静态检查上机调试
3.顺序程序设计的思想和方法。
4.分支程序设计的思想和方法。
(1)分支程序根据条件是真或假决定执行与否
(2)判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志
(3)用转移指令JCC和JMP可以实现分支控制
(4)分支结构有:
①单分支结构②双分支结构③多分支结构
实验
进度
本次共有3个练习,完成3个。
实验
内容
在运行程序之前,先配置汇编语言集成器软件,然后在编写程序
1.编写一个程序,计算表达式(XY-Z)/X的值,其中:
X、Y、Z均为16位带符号数,存放在数据段中,要求将表达式的计算结果存放在数据段中的RESULT起始的单元中。
程序代码
aasegment
xdw?
ydw?
zdw?
resultdw?
aaends
bbsegment
assumecs:
bb,ds:
aa
start:
movax,aa
movds,ax
movax,x
imuly
movcx,ax
movbx,dx
movax,z
cwd
subcx,ax
sbbbx,dx
idivx
movresult,ax
movah,4ch
int21h
bbends
endstart
设数据区中NUM1、NUM2字节单元中存放的是两个无符号数,试编写程序完成下述功能之一的操作:
(1)如果两个数均为偶数,则两个数分别加1后送入DA1、DA2字节单元中;
(2)如果一个为偶数,一个为奇数,则奇数送入DA1,偶数送入DA2字节单元中;
(3)如果两个数均为奇数,则两个数分别送入DA1、DA2字节单元中;
DATASSEGMENT
NUM1DB?
NUM2DB?
DA1DB?
DA2DB?
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVAL,NUM1
MOVAH,NUM2
TESTAL,01H
JNZJ1
TESTAH,01H
JNZJ21
INCAL
INCAH
MOVDA1,AL
MOVDA2,AH
JMPEXIT
J21:
MOVDA1,AH
MOVDA2,AL
JMPEXIT
J1:
TESTAH,01H
JNZJ22
MOVDA1,AL
MOVDA2,AH
JMPEXIT
J22:
MOVDA1,AL
MOVDA2,AH
EXIT:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
3.在内存BUFFER单元中存有10个8位数,试编程找出其中的最大值及最小值,并放在指定的存储单元MAX和MIN中
DATASEGMENT
BUFDB10DUP(?
)
MINDB?
MAXDB?
COUNTDW09H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
INCSI
MOVAL,BUF
MOVCX,COUNT
FMAX:
CMPAL,[SI]
JGA
MOVAL,[SI]
A:
ADDSI,1
LOOPFMAX
MOVMAX,AL
LEASI,BUF
ADDSI,1
MOVAL,BUF
MOVCX,COUNT
FMIN:
CMPAL,[SI]
JLB
MOVAL,[SI]
B:
ADDSI,1
LOOPFMIN
MOVMIN,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
实验
分析
实验
分析
(续)
日
【练习1】
用反汇编命令u,进行反汇编。
e指令给x,y,z赋值
利用U命令观察内容如下,表明DS=143BH;变量X的起始地址为DX=0000H;变量Y的起始地址为DX=0002H;变量Z的起始地址为DX=0004H;存放结果的RESULT变量的起始地址为DX=0006H。
通过键盘录入X=0004H,Y=0006H,Z=0002H并运行:
用运行指令g从起始地址143C:
0000开始到143C:
0021暂停
通过E命令将X、Y、Z值录入后,并通过G命令运行后,数据区143BH:
0000H连续8个字节分别存放0006H(X),0002H(Y),0006H(Z),0001H(结果)。
用d指令查看数据段的内容。
1.存在的问题
实验问题和解决方案
①在实验过程中对于DOS命令不熟悉,不能快速有效的进行调试,甚至有时调试命令还导致运行结果错误。
解决方案:
多上机进行试验,熟悉各种调试命令
②在这次上机中,存在一些问题,如在使用汇编集成编辑器的时候将一个窗口打开进行编写代码,代码编写结束后点击保存时页面显示错误会自动消失。
解决方案:
需要将MASMS文件放到无汉字的路径下,才能正常的运行。
【练习2】
1、进行调试,用反汇编命令u,进行反汇编,用e指令赋值。
利用U命令观察内容如下,表明DS=143bH;变量NUM1的起始地址为DX=0000H;变量NUM2的起始地址为DX=0001H;存放结果的DA1变量的起始地址为DX=0002H;DA2变量的起始地址为DX=0003H
用运行指令g从起始地址143c:
0000开始到143c:
0045暂停
用d指令查看数据段的内容。
【练习3】
(1)用反汇编命令u,进行反汇编,用e指令赋值,用D命令进行查看赋值后情况。
U观察表明DS=143bH;数据区BUFFER的起始地址为DX=0000H;存放结果的MIN变量的起始地址为DX=000AH;MAX的起始地址为DX=000BH。
用运行指令g从起始地址14D1:
0000开始到14D1:
0045暂停
用d指令查看数据段的内容。
实验
总结
【实验1】
1.存在问题
编写程序的时候在一开始定义未知数的时候直接给出了数据,这样在运行的时候直接运行给定的数据被限定了,所以后来改成了问号,这样在运行程序的时候赋值也容易了。
2.实验结论
通过对数据段的数据定义,利用DOS系统功能调用方法实现了求表达式(XY-Z)/X的值。
3.收获和体会
这是第一个计算机硬件上机实验,通过这次试验使我们所学的知识得到活学活用,我学会了使用汇编集成器运行和调试。
更锻炼了动手操作能力
【实验2】
1.存在问题
根据题目要求编写的时候由于题目是分条件的,所以一开始编写的时候容易混淆,不知道到哪里用JNZ转移。
后来通过看书分清了个转移指令的用法,才是程序能够正确运行。
2实验结论
通过对数据段的数据定义,利用DOS系统功能调用方法实现了判断一个数是奇数还是偶数。
3.收获和体会
通过这个实验理解并学会运用了标志位转移指令以及比较指令。
通过编辑代码学会比较两数奇偶性并判断。
【实验3】
1,.存在问题
在编写程序中由于要用到跳转指令,循环指令,比较指令等。
容易混淆以及不知道怎么应用,还好在同学的帮助以及老师的帮助下完成了这个程序。
2.实验结论
通过对数据段的数据定义,利用DOS系统功能调用方法实现了查找已知数据区的最大值和最小值。
3.心得和体会
通过和同学的交流以及请教老师我学会了运用不同的指令完成这个实验。
掌握了利用DOS系统功能调用方法实现了在已知数据区查找最大值和最小值。
教师
评语