北京理工大学微机原理实验报告_第1页
北京理工大学微机原理实验报告_第2页
北京理工大学微机原理实验报告_第3页
北京理工大学微机原理实验报告_第4页
北京理工大学微机原理实验报告_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

wordword资料3t京理工人孽微机原理与接口技术实验报告实验内容:汇编语言程序设计实验组别: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所示图1图110个数求和流程图word资料wordword资料word资料word资料图2求10个数最大最小值流程图开始

四、实验源程序(必要的文字注释)图31-100求和并在屏幕显示流程图实验一:;求10个无符号字节数的和,结果存在SUM中DATASEGMENTTABLEDB12H,23H,34H,45H,56HDB67H,78H,89H,9AH,0FDHSUMDW?DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,TABLEMOVCX,10XORAX,AXNEXT:ADDAL,[SI]ADCAH,0INCSILOOPNEXTMOVSUM,AXMOVAH,4CHINT21HCODEENDSENDSTART实验二:;求出10个数中的最大值和最小值。DATASEGMENTTABLE1DB12H,23H,34H,45H,56HDB67H,78H,89H,9AH,0FDHMINDB?MAXDB?DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXLEASI,TABLE1MOVCX,9MOVAL,[SI];定义数据段;10个加数;定义代码段;初始化DS石1指向TABLE;循环次数为10;AX清零;把一个数加到AX中去;若有进位AH加1;SI指向下一个数;循环相加;循环结束将结果保存到SUM中;返回DOS状态;代码段结束;汇编结束,起始地址为START;十个数据;最小值;最大值;数据段段地址送入DS;附加数据段段地址送入ES;比较次数,一共9次;把第一个数送入AL,把最小数存在AL中MOVAH,[SI]NEXT:INCSIMOVAH,[SI]NEXT:INCSICMPAL,[SI]JCGOONMOVAL,[SI]GOON:CMPAH,[SI]JNCCONTUMOVAH,[SI]CONTU:LOOPNEXTMOVMAX,AHMOVMIN,ALMOVAH,4CHINT21HCODEENDSENDSTART;把第一个数送入AH,把最大数存在AH中;比较AL中的数和下一个数的大小;如果41中的数小转到GOON,继续执行;如果41中的数大,将小的数存入AL;比较AH中的数和下一个数的大小;如果AH中的数大转到CONTU,去下一次循环;如果AH中的数大,将大的数存入AH;继续循环直至全部比较完毕;将最大的数存入MAX中;将最小的数存入MIN中;返回DOS状态;代码段结束;汇编结束,起始地址为START实验三:;1-100求和并用十进制在品目上显示,程序结束返回DOS状态DATASEGMENTSUMDW0DNUMDB'0000',0DH,0AH,'$'COUNTDW100;数据段;1-100的和;存储1-100和的十进制ASCII码字符串;求和的数目100个,当需要求1-n的数字和时只;需修改100为所需要的口即可DATAENDSSSEGSEGMENTDW32DUP(?)SSEGENDS;CODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,SSEGMOVSS,AXCALLSUMMMOVSUM,AXCALLDISPLEADX,DNUMMOVAH,9INT21HMOVAH,4CHINT21HSUMMPROCXORAX,AXMOVCX,COUNT;堆栈段;代码段;数据段的段地址送入DS;堆栈段的段地址送入SS;求1-100的数据和,结果存入AX中;和存入SUM中;将十六进制数转化相应的十进制ASCII码值,;存在DNUM中;使用DOS功能调用,在屏幕上显示;返回DOS状态;求和子程序;AX清零;求和的数目,这里COUNT=100CALCU:ADDAX,CXLOOPCALCURETSUMMENDP;DISPPROCMOVCX,4MOVBX,10GOON:LEASI,DNUMXORDX,DXDIVBXADDSI,CXADD[SI-1],DLLOOPGOONRETDISPENDP;CODEENDSENDSTART五、实验结果1、实验一:10个无符号字节数加和;求和结束返回,求和值存在AX中;转化为十进制ACSII码值子程序;要显示的数为四位十进制数;显示的ASCII码字符串的偏移地址给SI;DX清零,DX、AX存放1-100的和,AX为低位;每次除10,余数为显示数值,;SI指向存入数据的下一位;要显示的十进制数转为相应的ASCII码;循环4次将要显示的十进制数由低到高转化(1)^TABLE中前5个数的和为0104H,结果如图4所示,存储在AX中。图4TABLE中前5个数字和(2)、TABLE中前8个数的和为026CH,结果如图5所示,存储在AX中。图5TABLE中前8个数字和(3)、程序运行完结果结果如图6所示,十个值的和为0403H,存储在AX中。图6TABLE中前10个数字和2、实验二:10个数求最大最小值为了保证程序的正确性,在这里我用三组输入测试,分别为:12H,23H,34H,45H,56H,67H,78H,89H,9AH,0FDH(最大右边,最小左边)12H,9H,34H,45H,56H,67H,0FFH,89H,9AH,0FDH(最大最小在中间)0FFH,9H,34H,45H,56H,67H,0FEH,89H,9AH,2H(最大左边,最小右边)实验结果分别如图7,图8,图9所示。图7第一组输入运行结果图8第二组输入运行结果圜「「金::>.r:'.-JrCpuspeed.3000cyde5,FiamMkip0.Prog,-am:TD图9第三组输入运行结果3、实验三:1-100求和并显示实验三的结果分别如图10,图11,图12所示,其中图10为1-100的累加和保存在AX中,结果为13BAH,图11为转化为相应的十进制ASCII码保存在DS:0002-DS:0005,图12为窗口显示。DO&E-qm0,74]Cpj5peed:3000cycles^,Frornesldp0,Program;TDERD=FileEdiLViewFunHrMkptiinL占DataOptiun^klindowHelpERD■Hndiile:t已*tFile:test.asrm13,MUUDS,AXMDUfiX.SSEGMTIUS3,CALLSj|MDUSJICAT.L[1=CFII80486=

cs:feJUODkAilUtWymuSUM,A工;ax1JEAc=9LE。MTIU1MTMDUTNTSUMIHKUCAHZLHl33miZLrtXDRimu।CALCU:ALUiLOOPRETUatches-cs:O910ce:Q013cs:GG16csMTIUS3,CALLSj|MDUSJICAT.L[1=CFII80486=

cs:feJUODkAilUtWymuSUM,A工;ax1JEAc=9LE。MTIU1MTMDUTNTSUMIHKUCAHZLHl33miZLrtXDRimu।CALCU:ALUiLOOPRETUatches-cs:O910ce:Q013cs:GG16cs:001OCS:GO1Acs:001CE01G00BAQZEfi明仍CD21明虫:CBZ1fltcstltsunncs:0O1E33C0cs-WZSBEQCeQQBfliestflcalcuce:06E403C1cs-GBZbE2FC+CALLDISP:叫”[-11bx0000*LEA*MOU+IMT+rtW+IMT+XDR*muDX.nrUH:『・网M921HAH.4CH;吊司和nZ1HAX.fW;附,4CX,00UI1T:|[i|=|+CftLCU;hDDAX.CX+LOOFCALCUd5:00ooOGdo30a©30soeceftooeerfl

E»6SE»$dd£:G»G8ds:Gei6ds:e01064GO06GG0000E»6006GG000069GG09606G00exfOfiOOdxGGGOsi0000dLeGGGwa89口

o3z33

ea57575757pssss

bdescIPWOODS=00=0ss:OGGS0GJGO

书曲耕000。Fl-Help FU-ModF4-HereFS-2joomFfc-Nex3F7-lraceFt-StepF9-RufFltkMenu图101-100的累加和DO5Ecx口17dl.Cpusp&ed:5000cyclec,FrsmeEldp0,Program;:TD三FiIfEditUif?U!BummDatanptinnsMindnuHelpTfiDY Mudult;Lt:sLFile;l匕士I.gm£3—ASSUMEC3:CODE,»3;,E3:DATftSMTiMOU依,D介坨HOUES,MOV白¥,MIUNX,CALLSUnousunCALLDILEAMOUIMTmuTHTsumFEOCXOENOUCALCU:ASDEX,AH,AH,DNUMCOUNT+CALCUAX,CX!!5Q50OGG00080013C£:0Q(Z4CS:O0Z6ce:0O£8Htesttdis4cH;d=j]和05LOOPCfiLCUBETdkH=u^ii1ii+Jcs:0018CDZ1ce:001ftESKcs:001CCDZ1|tttcstttsumncs:O01E33CGcs^0O2OBEGEG90Oittestttcalcu1,町16”叱阳I1-CPUB04B6d£:0D16的国函迪随刖的6Qds:0018eeeegooo0006ooeoCX,阳6003GGG06000GQQO573B57ZBC=Gz=G0=0P=1a=0i=ld=0000Z6000QQOA00003=[ri[1]Uatrhesss:QQ0e陋00

ss:0O00k9OOOFl-H匕巾FZ-EkptF3-HoMF4-HereF5-ajdinFb-HtxtF7T¥a匚匕F『St许F+RlutFlCFIIeHU图111-100和的。目应ASCII码图121-100和的屏幕显示六、实验中遇到的问题及解决方法1、在做实验一时由于对软件不是很熟悉,做起来不是很顺手,而且在编译时软件自身有一个控制参数/zi,当时在做实验时,由于不小心在后面多打上了一个字母,造成无法编译的情况,经过老师的指点才发现去除后能够正常编译了。2、在做实验二时,刚开始我是用冒泡排序法先排序,这样第一个和最后一个就是最大最小值,但这样由于排序的过程中需要不断交换数字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论