资源描述:
《北京理工大学微机原理实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、微机原理与接口技术实验报告实验内容:汇编语言程序设计实验组别:12姓名:班级:学号:一、实验目的1、熟悉IDE86集成开发环境的使用。 2、通过编程、上机调试,进一步理解汇编语言的设计思路与执行过程。 3、熟悉DOS命令调用,以达到输入输出、返回DOS系统等目的。4、掌握利用汇编实现求和与求最值的方法。5、掌握利用汇编实现数制转换的方法。 6、巩固理论知识,锻炼动手编程,独立思考的能力。二、实验内容(具体内容)1、求从TABLE开始的10个无符号字节数的和,并将结果放在SUM字单元中。并查看前5个,前8个数之和以及各寄存器和内存的状态。2、在1的基础上修改程序,求出10个数中的最
2、大值和最小值,最后将最大最小值分别赋给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循环结构,依次和下面的数进行比
3、较,每次把相对的最大值与最小值存储到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、图
4、2和图3所示数据段地址放入相应的段寄存器SI指向TABLEAX清零设置循环次数,CX=10把AL的值赋给SUMCX=0?将SI指向的数加到AL中若有进位加到AH中SI加1指向下一个数CX减1返回DOS状态结束定义数据段开始NY图110个数求和流程图图2求10个数最大最小值流程图返回DOS状态结束数据段地址放入相应的段寄存器SI指向TABLE第一个数送入AL和AH设置循环次数,CX=9把AL的值赋给MINCX=0?SI指向的值与AL比较,较小的值存入AL中SI=SI+1SI指向的值与AH比较,较大的值存入AH中CX减1定义数据段开始NY把AH的值赋给MAXAX的值赋给SUM数据段地
5、址放入相应的段寄存器COUNT=100,AX=0累加次数CX=COUNT累加:AX=AX+CX定义数据段开始NYCX=0?CX=CX-1DX清零循环次数CX=4屏幕显示数字和返回DOS状态结束CX=0?DX,AX构成的数除10取余,余数保存在DX将余数加上30H保存在DUNM中,CX减1YN图31-100求和并在屏幕显示流程图四、实验源程序(必要的文字注释)实验一:;求10个无符号字节数的和,结果存在SUM中DATASEGMENT;定义数据段TABLEDB12H,23H,34H,45H,56H;10个加数DB67H,78H,89H,9AH,0FDHSUMDW?DATAENDS;C
6、ODESEGMENT;定义代码段ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;初始化DSLEASI,TABLE;SI指向TABLEMOVCX,10;循环次数为10XORAX,AX;AX清零NEXT:ADDAL,[SI];把一个数加到AX中去ADCAH,0;若有进位AH加1INCSI;SI指向下一个数LOOPNEXT;循环相加MOVSUM,AX;循环结束将结果保存到SUM中MOVAH,4CH;返回DOS状态INT21HCODEENDS;代码段结束ENDSTART;汇编结束,起始地址为START实验二:;求出10个数中的最大值和最小值。D
7、ATASEGMENTTABLE1DB12H,23H,34H,45H,56H;十个数据DB67H,78H,89H,9AH,0FDHMINDB?;最小值MAXDB?;最大值DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AX;数据段段地址送入DSMOVES,AX;附加数据段段地址送入ESLEASI,TABLE1MOVCX,9;比较次数,一共9次MOVAL,[SI];把第一个数送入AL,把最小