北京理工大学微机原理实验报告.doc
- 文档编号:1259138
- 上传时间:2022-10-19
- 格式:DOC
- 页数:13
- 大小:614KB
北京理工大学微机原理实验报告.doc
《北京理工大学微机原理实验报告.doc》由会员分享,可在线阅读,更多相关《北京理工大学微机原理实验报告.doc(13页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术
实验报告
实验内容:
汇编语言程序设计实验
组别:
12
姓名:
班级:
学号:
一、实验目的
1、熟悉IDE86集成开发环境的使用。
2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。
3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。
4、掌握利用汇编实现求和与求最值的方法。
5、掌握利用汇编实现数制转换的方法。
6、巩固理论知识,锻炼动手编程,独立思考的能力。
二、实验内容(具体内容)
1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。
并查看前5个,前8个数之和以及各寄存器和内存的状态。
2、在1的基础上修改程序,求出10个数中的最大值和最小值,最后将最大最小值分别赋给MAX及MIN。
3、求1到100的累加和,并用十进制形式将结果显示在屏幕上。
要求实现数据显示,并返回DOS状态。
三、实验方法
1、设计思路
(1)实验1的设计思路:
先将10个要相加的数存在以TABLE为首的10个连续的存储单元中,然后利用循环结构依次取出数值放在AL中并累加,若有进位则加到AH中直至循环10次累加结束,将累加的结果放在SUM中并返回DOS状态。
(2)实验2的设计思路:
先将10个要比较的数放在以TABLE为首的10个连续的存储单元中。
将第一个数首先赋给AL和AH(分别存储相对最小和最大值)在利用LOOP循环结构,依次和下面的数进行比较,每次把相对的最大值与最小值存储到AH和AL中直至循环9次比较结束,将AH和AL里面的最大值与最小值赋给MAX和MIN,返回DOS状态
(3)实验3的设计思路:
先在内存中定义COUNT=100,表示1-100求和,若相求1-n的和并显示只需COUNT的值为n即可,同时定义一块以DNUM为首地址的数据区用于存储累加和的十进制数对应的ASCII码。
先利用AX和LOOP求出1-COUNT的累加和存在AX中;在进行数值转化,AX依次除10取余数保存,将16进制数转化为10进制ASCII码值并存在DUNM中。
最后在屏幕上显示并返回DOS状态。
2程序流程图
实验一、二和三的流程图分别如图1、图2和图3所示
数据段地址放入
相应的段寄存器
SI指向TABLE
AX清零
设置循环次数,CX=10
把AL的值赋给SUM
CX=0?
将SI指向的
数加到AL中
若有进位加到AH中
SI加1指向下一个数
CX减1
返回DOS状态
结束
定义数据段
开始
N
Y
图110个数求和流程图
图2求10个数最大最小值流程图
返回DOS状态
结束
数据段地址放入
相应的段寄存器
SI指向TABLE
第一个数送入AL和AH
设置循环次数,CX=9
把AL的值赋给MIN
CX=0?
SI指向的值与AL比较,较小的值存入AL中
SI=SI+1
SI指向的值与AH比较,较大的值存入AH中
CX减1
定义数据段
开始
N
Y
把AH的值赋给MAX
AX的值赋给SUM
数据段地址放入
相应的段寄存器
COUNT=100,AX=0
累加次数CX=COUNT
累加:
AX=AX+CX
定义数据段
开始
N
Y
CX=0?
CX=CX-1
DX清零
循环次数CX=4
屏幕显示数字和
返回DOS状态
结束
CX=0?
DX,AX构成的数除10取余,余数保存在DX
将余数加上30H保存在DUNM中,CX减1
Y
N
图31-100求和并在屏幕显示流程图
四、实验源程序(必要的文字注释)
实验一:
;求10个无符号字节数的和,结果存在SUM中
DATASEGMENT;定义数据段
TABLEDB12H,23H,34H,45H,56H;10个加数
DB67H,78H,89H,9AH,0FDH
SUMDW?
DATAENDS
;
CODESEGMENT;定义代码段
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX;初始化DS
LEASI,TABLE;SI指向TABLE
MOVCX,10;循环次数为10
XORAX,AX;AX清零
NEXT:
ADDAL,[SI];把一个数加到AX中去
ADCAH,0;若有进位AH加1
INCSI;SI指向下一个数
LOOPNEXT;循环相加
MOVSUM,AX;循环结束将结果保存到SUM中
MOVAH,4CH;返回DOS状态
INT21H
CODEENDS;代码段结束
ENDSTART;汇编结束,起始地址为START
实验二:
;求出10个数中的最大值和最小值。
DATASEGMENT
TABLE1DB12H,23H,34H,45H,56H;十个数据
DB67H,78H,89H,9AH,0FDH
MINDB?
;最小值
MAXDB?
;最大值
DATAENDS
;
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX ;数据段段地址送入DS
MOVES,AX;附加数据段段地址送入ES
LEASI,TABLE1
MOVCX,9;比较次数,一共9次
MOVAL,[SI];把第一个数送入AL,把最小数存在AL中
MOVAH,[SI];把第一个数送入AH,把最大数存在AH中
NEXT:
INCSI
CMPAL,[SI];比较AL中的数和下一个数的大小
JCGOON;如果AL中的数小转到GOON,继续执行
MOVAL,[SI];如果AL中的数大,将小的数存入AL
GOON:
CMPAH,[SI];比较AH中的数和下一个数的大小
JNCCONTU;如果AH中的数大转到CONTU,去下一次循环
MOVAH,[SI];如果AH中的数大,将大的数存入AH
CONTU:
LOOPNEXT;继续循环直至全部比较完毕
MOVMAX,AH;将最大的数存入MAX中
MOVMIN,AL;将最小的数存入MIN中
MOVAH,4CH;返回DOS状态
INT21H
CODEENDS;代码段结束
ENDSTART;汇编结束,起始地址为START
实验三:
;1-100求和并用十进制在品目上显示,程序结束返回DOS状态
DATASEGMENT ;数据段
SUMDW0;1-100的和
DNUMDB'0000',0DH,0AH,'$';存储1-100和的十进制ASCII码字符串
COUNTDW100;求和的数目100个,当需要求1-n的数字和时只
;需修改100为所需要的n即可
DATAENDS
;
SSEGSEGMENT;堆栈段
DW32DUP(?
)
SSEGENDS
;
CODESEGMENT ;代码段
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX ;数据段的段地址送入DS
MOVAX,SSEG
MOVSS,AX;堆栈段的段地址送入SS
CALLSUMM;求1-100的数据和,结果存入AX中
MOVSUM,AX;和存入SUM中
CALLDISP;将十六进制数转化相应的十进制A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京理工大学 微机 原理 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)