微机实验报告Word格式.docx

上传人:b****7 文档编号:22773448 上传时间:2023-02-05 格式:DOCX 页数:13 大小:153.15KB
下载 相关 举报
微机实验报告Word格式.docx_第1页
第1页 / 共13页
微机实验报告Word格式.docx_第2页
第2页 / 共13页
微机实验报告Word格式.docx_第3页
第3页 / 共13页
微机实验报告Word格式.docx_第4页
第4页 / 共13页
微机实验报告Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机实验报告Word格式.docx

《微机实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《微机实验报告Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

微机实验报告Word格式.docx

二、实验内容

1.求从table开始的10个无符号字节数的和,结果放SUM字单元中。

2.将存储器中的十个字节型十六进制无符号数按从小到大的顺序排列,并按十六

进制显示出来。

3.求1到100的累加和,并用十进制数形式将结果显示在屏幕上。

要求用过程实

现数据显示,并返回DOS状态。

三、实验方法

1、题目一设计思路:

对于内容一,首先将table中的数据存在数据段,然后利用地址取出每一个数,CX做计数器,依次相加,最后存在SUM里。

2、

题目一程序流程图:

图1题目一程序流程图

3.题目二设计思路:

先把最大数和最小数都假设为table中的第一个数,然后和后面的每个数进行比较,如果这个数大于最大数,交换;

这个数如果小于最小数,交换。

4.题目二流程图:

图2题目二程序流程图

5.题目三设计思路:

先在AX里求出1加到100的值,保存在AX里,然后转化为十进制(除10法),最后把数保存在数据段的某段地址,利用单个字符输出,在屏幕上表示出和。

6.题目三流程图:

图3题目三程序流程图

四、实验源程序

1.题目一源程序:

datasegment

tabledb12h,23h,34h,45h,56h,67h,78h,89h,9ah,0fdh

sumdw?

dataends;

定义代码段

codesegment

assumecs:

code,ds:

data,es:

data

start:

movax,data

movds,ax

moves,ax;

初始化

leasi,table

movcx,10;

循环计数器

xorax,ax

next:

addal,[si]

adcah,0

incsi

loopnext

movsum,ax;

将结果存在SUM里

hlt;

代码段结束

codeends

endstart

2.题目二源程序:

tabledb12h,23h,34h,45h,56h,67h,78h,89h,9ah,0fdh

mindb0

maxdb0

codesegment

assumecs:

leasi,table;

movbl,table

movbh,table

movcx,9;

again1:

cmpbl,[si+1]

jal1;

比较最小值与当前数的大小

again2:

cmpbh,[si+1]

jbl2;

l1:

movbl,[si+1]

jmpagain2

l2:

movbh,[si+1]

loopagain1

movdi,4

output:

显示出最大最小值

movcl,4

rolbx,cl

movdx,bx

anddl,0fh

cmpdl,9

jal3

adddl,30h

jmpoutput2

l3:

adddl,37h;

转化为ASCII码输出

output2:

movah,2

int21h

decdi

jnzoutput

movah,4ch

int21h

codeends;

3.题目三源程序:

data1db4dup(0)

dataends;

定义数据段

leadi,data1

movbl,0

movcx,100

l1:

incbx

adcax,bx

loopl1;

求1到100的和

l2:

movbx,0ah

xordx,dx

divbx

mov[di],dl

incdi

andax,ax

jzl3

movdl,0

jmpl2

movcx,4

decdi;

转化为10进制数

l3:

l4:

movdl,[di];

显示输出

loopl4

五.实验结果

1.题目一:

在IDE86中输入上述代码,并运行,利用单步调试,观察cpu中寄存器中数的变化

进过单步运行,得出AX最后的值为0403H,与实际相符。

2.题目二:

一样的在IDE86中输入上述代码,并运行,利用单步调试,观察cpu中寄存器中数的变化。

刚开始时:

观察到table里的数据存在了ds:

0000-ds:

0008之中,如图:

随后全速运行程序,观察到屏幕上显示出最大值0FDH,最小值12H,如图:

3.题目三:

在求和部分,采用单步运行,跳过循环,直接得出累加的和,观察AX=13BA,也就是十进制的5050,结果正确,如图:

最后全速运行,观察到dos界面显示出了5050,如图:

六.实验中遇到的问题及解决方法:

1.最开始的时候对于IDE86这个软件的使用还不太熟悉,导致在调试的时候,没有修改文件名,运行到另外一个程序了,没有得出正确的结果。

2.在做第二个题目的时候,对于mov指令的禁止用法不太熟悉,直接对两个存储器操作数经行了操作,导致出现了语法错误。

3.在第三个题目时,首先没有想到100个数相加的和不能用al表示,用了add指令,导致AX之中出现了错误的值,还有就是除以10的时候,没有搞清楚商和余数分别放在哪两个寄存器中,而且也搞忘了输出前要转化为ASCII码。

七.心得体会与建议:

1.在这次上机实验中,我首先学会了怎么用IDE86来编写一个汇编程序,以及形成一个EXE文件的完整过程,最重要的是调试部分,单步运行,跟踪运行时观察寄存器,标志位等数据的变化,都有利于我们来了解代码的执行过程,更容易掌握。

2.我也深刻的体会到熟练掌握汇编语言指令集,伪指令的重要性,在编写程序的时候,很多语句都不知道的话,很难编出一个好的程序。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 育儿理论经验

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1