已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/31武大微机原理实验报告汇总(4000字)微型计算机原理与接口技术实验报告【实验名称】汇编语言程序的编辑与调试【实验目的】学习汇编源程序的编辑、编译、链接、执行全过程。学习编辑文件、TASM、TLINK的使用方法以及汇编语言的语法规则。学习使用TD对程序进行调试的方法。【实验步骤】1、将程序1输入并存储为文件2、编译与链接首先对源代码进行编译,指令为:C:TASMHELLO/zi生成编译如果报错,需要回到编辑窗口修改源代码,存盘后重新编译编译成功后,链接生成可执行文件C:TLINKHELLO/v/3生成3、启动调试工具TD键入:C:TDHELLO成功启动TD之后,TD进入MODULE显示模式,屏幕上显示HELLO-ASM源程序,一个三角形符号指示出了标号为BEG的那条指令是启动指令。4、动态调2/31试连续执行程序按F9键。要求:上述实验中的各变量单元要在数据区定义;用TD调试,运行并修改各变量的值,观察结果存放单元。【程序框图】【实验1】【实验2】【程序代码】【实验1】DATASEGMENTADB40BDB50SDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVBL,AADDBL,BMOVBH,0ADCBH,0MOVAL,AANDAL,BMOVCL,2MULCLSUBBX,AXMOVS,BXMOVAH,4CHINT21HCODEENDSENDBEG【实验2】DATASEGMENTADB?BDB?CDB?VOLUMEDD?DATAENDS3/31CODESEGMENTASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVAH,1INT21HSUBAL,30HMOVA,ALMOVAH,1INT21HSUBAL,30HMOVB,ALMOVAH,1INT21HSUBAL,30HMOVC,ALMOVBL,BMULBLMOVBL,AMOVBH,0MULBXMOVWORDPTRVOLUME,AXMOVWORDPTRVOLUME+2,DXMOVAH,4CHINT21HCODEENDSENDBEG【实验结果】【实验1】:程序运行后,运行结果S=26H,与预期相符。所有通用寄存器即段寄存器的值如下:AX=1B6FBX=000FCX=0206DX=3002DS=04BACS=0000【实验2】:程序运行时,取a=4,b=5,c=6,运行后,VOLUME=120,与预期相符所有通用寄存器即段寄存器的值如下:AX=1B6FBX=000FCX=0206DX=3002DS=04BACS=0000【实验名称】循环实验的设计【实验目的】学习并掌握循环程序的设计方4/31法。【实验内容】【实验1】用表格形式显示ASCII字符。实验要求:按15行16列的表格形式显示ASCII码为10H-100H的所有字符,即以行为主的顺序及ASCII码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符隔开。提示:显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:movah,02hmovdl,输出字符的ASCII码int21h本题中可把DI初始化为10H,然后不断使其加1以取得下一个字符时ASCII码。显示空白符时,用其ASCII码0置入DI寄存器。每行结束时,用显示回车和换行符来结束本行并开始下一行。由于逐个显示相继的ASCII字符时,需要保存并不断修改dl寄存器的内容,而显示空白、回车、换行符时也需要使用DI寄存器,为此可使用堆找来保存相继的ASCII字符。具体用法是:在显示空白或回车、换行符前用指令pushdx5/31把DI的内容保存到堆栈中去。在显示空白或回车、换行符后用指令popdx恢复DI寄存器的原始内容。【实验2】编程计算:S=1+2+3+N100的最大项数N以及对应的和S。实验要求:将最大项数与和数分别存入N和SUM单元,用TD调试,运行程序并检查结果;将结果在屏幕上以16进制数显示。显示格式:MAXN=HSUM=H。【程序框图】【实验1】【实验2】【实验1】【程序代码】CODESEGMENTMAINPROCFARASSUMECS:CODEBEG:MOVAH,02HMOVDL,10H;设置初始输出为ASCII的10hMOVBL,15;输出显示为15行E:6/31MOVCX,16;设置循环次数,16,表示输出显示为16列l:INT21H;显示输出PUSHDX;推入堆栈MOVAH,02HMOVDL,0INT21HMOVAH,02HMOVDL,0INT21H;显示空白符POPDX;将栈顶元素推出INCDL;设置下一个元素LOOPl;循环输出每行的16个ASCII元素PUSHDX;将下一行的首元素推入堆栈MOVAH,02HMOVDL,0DHINT21HMOVAH,02HMOVDL,0AHINT21H;输出换行POPDX;将栈顶元素推出DECBLCMPBL,0;比较确定是否已经输出15行元素JNEE;若还未完成输出,则跳转至e,继续进行下一行元素的输出JEEXIT;否则退出程序EXIT:MOVAX,4C00HINT21HMAINENDPCODEENDSENDBEG【实验2】7/31DATASEGMENTNDB?;开辟一个字节单元SUMDB?MESG1DBMAXN=,$MESG2DBSUM=,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA;段分配BEG:MOVAX,DATA;段基址DSMOVDS,AXMOVMOVL1:INCADDCMPJBESUBMOVMOVMOVMOVINTMOVANDRORCMPJLADDNEXT:ADDMOVMOVINTMOVANDCMPJLADDNEXT1:ADDOVMOVINTMOVINTMOVMOVBL,0H;给BL和AL赋初始值0AL,0HBLAL,BLAL,64HL1;无符号数AL,BL;所得AL大于100,故要减去BLN,BL;最大项数N单元SUM,AL;和数SUM单元AH,9;9号功能调用,输出字符串DX,OFFSETMESG121HAL,N;2号功能调用,输出两个空格AL,0F0H;屏蔽低四位AL,4;右移4位AL,10;与10比较NEXT;小于跳转NEXTAL,7;否则加7AL,30H8/31AH,02HDL,AL21HAL,NAL,0FH;屏蔽高4位AL,10NEXT1AL,7AL,30HAH,02HDL,AL21HDL,H;显示出H21HAH,02HDL,0DHINT21H;回车MOVAH,02HMOVDL,0AHINT21H;换行MOVAH,9;9号功能调用,输出字符串MOVDX,OFFSETMESG2INT21HANDAL,0F0H;屏蔽低四位RORAL,4;右移4位CMPAL,10JLNEXT2ADDAL,7NEXT2:ADDAL,30HMOVAH,02HMOVDL,ALINT21HMOVAL,SUMANDAL,0FHJLNEXT3ADDAL,7NEXT3:ADDAL,30HMOVAH,02HMOVDL,ALINT21HMOVDL,HINT21HMOVAH,4CHINT21HCODEENDSENDBEG【实验1】9/31实验一运行后显示结果为;与10比较;小于跳转NEXT;否则加7;屏蔽高4位;显示出H;返回DOS操作系统【调试结果】与预期相符【实验2】实验二运行后结果为“MAX=0DHSUM=5BH”,与预期相符。【实验名称】分支程序设计【实验目的】学习分支程序的结构,掌握具有分支结构程序的设计方法。【实验内容】【实验1】分类统计字符个数COUNT_CHAR。【实验2】显示月份名direct。试编写一程序,根据用户键入的月份数在屏上显示该月份的英文缩写名【程序代码及框图】【实验1】DATASEGMENTSTRINGLABELBYTEMAXDB80ACTDB?STOKNDB80DUPDIGITDB0LETTERDB0OTHERDB0MESS1DBPLEASEINPUT10/31CHARS:,0DH,0AH,$MESS2DB0DH,0AH,$MESS3DBDIGIT:,0H,$MESS4DBLETTER:,0H,$MESS5DBOTHER:,0H,$MESS6DBH,0DH,0AH,$NDB3DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATACOUNT_CHARPROCFARPUSHDSSUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXLEADX,MESS1MOVAH,09INT21HLEADX,STRINGMOVAH,0AHINT21HLEADX,MESS2MOVAH,09HINT21HLEASI,STOKNSUBCH,CHMOVCL,ACTAGAIN:MOVAL,SICMPAL,30HJLOTHER1CMPAL,3AHJLDIGIT1CMPAL,41HJLOTHER1CMPAL,5BHJLLETTER1CMPAL,61HJLOTHER1CMP11/31AL,7BHJLLETTER1OTHER1:INCOTHERINCSILOOPAGAINJMPPRINTDIGIT1:INCDIGITINCSILOOPAGAINJMPPRINTLETTER1:INCLETTERINCSILOOPAGAINPRINT:MOVCH,2MOVBL,DIGITLEADX,MESS3MOVAH,09INT21HROTATE:MOVCL,4ROLBL,CLMOVAL,BLANDAL,0FHADDAL,30HCMPAL,3AHJLPRINT1ADDAL,7HPRINT1:MOVDL,ALMOVAH,2INT21HDECCHJNZROTATELEADX,MESS6MOVAH,09INT21HDECNCMPN,2JZLETTER2CMPN,1JZOTHER2JMPEXITLETTER2:LEADX,MESS4MOVAH,09INT21HMOVCH,2MOVBL,LETTERJMPROTATEOTHER2:LEADX,MESS5MOVAH,09INT21HMOVCH,212/31MOVBL,OTHERJMPROTATEEXIT:RETCOUNT_CHARENDPCODEENDSENDCOUNT_CHAR【实验2】DATASEGMENTMESG1DBPLEASEINPUTTHENUMBERFORMONTH,0DH,0AH,$MESG2DBERROR!,0DH,0AH,$NUMDB3COUNTDB?STOREDB2DUPMONTABDBJAN,FEB,MAR,APR,MAY,JUNDBJUL,AUG,SEP,OCT,NOV,DECMONTHDB3DUP,0DH,0AH,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVDX,OFFSETMESG1MOVAH,09HINT21HMOVDX,OFFSETNUMMOVAH,0AHINT21H13/31CMPCOUNT,0JZEXITCMPCOUNT,2JZNEXTMOVAL,STOREXORAL,30HMOVAH,0JMPGOONNEXT:MOVAH,STOREMOVAL,STORE+1XORAX,3030HCMPAH,0JZGOONCMPAH,1JNZLASTSUBAH,AHADDAL,10GOON:CMPAL,0JZLASTCMPAL,12JALASTDECALMOVBL,3MULBLLEASI,MONTABADDSI,AXLEADI,MONTHMOVCX,3CLDREPMOVSBDISP:MOVDX,OFFSETMONTHMOVAH,09HINT21HJMPSTARTLAST:MOVDX,OFFSETMESG2MOVAH,09HINT21HJMPSTARTEXIT:MOVAH,4CHINT21H14/31CODEENDSENDSTART【实验结果】【实验1】:程序运行后,运行结果如下可见程序运行正确。【实验2】:运行程序,并输入不同月份,结果如下可见程序运行正确。【实验名称】子程序结构的设计方法【实验目的】学习子程序结构,了解子程序的调用、返回的过程,掌握其编程的方法。【实验内容】【实验1】二进制数十进制数显示从键盘输入16位二进制数,然后转换成等值的十进制数显示。【实验2】编程计算N!,从键盘上接受10以内的数,计算出其阶乘后在屏幕显示结果,要求用子程序编写计算N!的代码以及结果显示代码。【程序代码及框图】15/31【实验1】DATASEGMENTNDB4STRINGDBPleaseinput16binarynumbers,0AH,0DH,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMOVAH,09HINT21HCALLBINHEXCALLHEXDECSUBAL,ALMOVAH,4CHINT21HBINHEXPROCMOVCL,16SUBBX,BXNEXT:SUBAX,AXMOVAH,07HINT21HCMPAL,30HJBA1CMPAL,31HJAA1SUBAH,AHSUBAL,30HSHLBX,1ORBX,AXADDAL,30HMOVDL,ALMOVAH,02HINT21HDECCLCMPJE16/31JMPA1:MOVMOVMOVINTJMPA2:MOVMOVINTRETBINHEXENDPHEXDECPROCMOVMOVNEXT2:SUBDIVXCHGPUSHADDMOVINTPOPDECCMPJECMPJECMPJEJMPA3:MOVJMPCL,0A2NEXTAL,07HDL,ALAH,02H21HNEXTDL,3DHAH,02H21HAX,BXCX,10000DX,DXCXAX,DXAXDL,30HAH,02H21HAXNN,3A3N,2A4N,1A5A6CX,1000NEXT2A4:MOVCX,100JMPNEXT2A5:MOVCX,10JMPNEXT2A6:ADDAL,30HMOVDL,ALMOVAH,02HINT21HRETHEXDECENDPCODEENDSENDBEG【实验2】DATASEGMENTNDB4MDB0STRINGDBINPUTN,0AH,0DH,$17/31DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXMOVDX,OFFSETSTRINGMOVAH,09HINT21HCALLHKL1CALLHKL2CMPM,8JLEB3MOVDL,30HMOVAH,02INT21HB3:MOVAH,4CHINT21HHKL1PROCNEARMOVAH,01HINT21HSUBAH,AHSUBBX,BXSUBDX,DXSUBAL,30HMOVM,ALJLENEXTMOVBL,1MOVAX,1A1:INCBXMULBXCMPBL,MJEA2JMPA1NEXT:MOVAX,1A2:PUSHAXPUSHDXMOVDL,21HMOVAH,02HINT18/3121HMOVDL,3DHMOVAH,02HINT21HPOPDXPOPAXRETHKL1ENDPHKL2PROCNEARCMPM,9JEB1JMPNEXT2B1:MOVCX,10DIVCXNEXT2:MOVCX,10000A3:SUBDX,DXDIVCXXCHGAX,DXPUSHAXADDDL,30HMOVAH,02HINT21HPOPAXDECNCMPN,3JEA4CMPN,2JEA5JEA6JMPA7A4:MOVCX,1000JMPA3A5:MOVCX,100JMPA3A6:MOVCX,10JMPA3A7:ADDAL,30HMOVDL,ALMOVAH,02HINT21HRETHKL2ENDPCODEENDSENDBEG【实验1】:程序运行后,运行结果如下19/31可见程序运行正确。【实验2】:运行程序,并输入不同数字,结果如下可见程序运行正确。【实验名称】可编程定时器计数器【实验目的】掌握8253的基本工作原理和编程方法。【实验内容】1按图虚线连接电路,将计数器0设置为方式0,计数器初值为N,用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化。图2按图连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化。20/31图【程序代码】【实验1】CODESEGMENTASSUMECS:CODEBEG:MOVDX,0C803HMOVAL,00010001BOUTDX,ALMOVDX,0C800HMOVAL,OFHOUTDX,ALAGAIN:MOVDX,0C803HMOVAL,00000001BOUTDX,ALMOVDX,0C800HINAL,DXCMPAL,10JLDIGITADDAL,7DIGTI:ADDAL,30HMOVDL,ALMOVAH,2INT21HMOVAH,1INT16HJZAGAINMOVAH,4CHINT21HCODEENDSENDBEG【实验2】CODESEGMENT21/31ASSUMECS:CODEBEG:MOVDX,0C803HMOVAL,00110110BOUTDX,ALMOVAX,1000BMOVDX,0C800HOUTDX,ALMOVAL,AHOUTDX,ALMOVDX,0C803H【程序框图】开始设计数器0为工作方式0送计数器初值读计数器值显示计数值Y结束MOVAL,01110110BOUTDX,ALMOVAX,1000BMOVDX,0C801HOUTDX,ALMOVAL,AHOUTDX,ALMOVAH,4CHINT21HCODEENDSENDBEG开始设计数器0为工作方式3向计数器0送初值1000设计数器1为工作方式3向计数器1送初值1000结束22/31【实验结果】程序运行后,屏幕显示正确,逻辑笔的亮灯正确变换,表明输出电平变换符合要求。【实验名称】中断【实验目的】、掌握PC机中断处理系统的基本原理。、学会编写中断服务程序。【实验内容】实验电路如图,直接用手动产单脉冲作为中断请求信号。要求每按一次开关产生一次中断,在屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。【程序代码】DATASEGMENTCOUNTDB10MESGDBTPCpcicardInterrupt,0AH,0DH,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXCLIMOVDX,0C468HINAX,DXORAX,0900HOUTDX,AXMOVAL,073HMOVAH,35HINT21HPUSHESPUSHBX23/31PUSHDSMOVAX,SEGINTRADMOVDS,AXMOVDX,OFFSETINTRADMOVAH,25HINT21HPOPDSINAL,21HANDAL,11111011BOUT21H,ALINAL,0A1HANDAL,11110111BOUT0A1H,ALSTILP:CMPCOUNT,0JZEXITMOVAH,1INT16HJZLPEXIT:INAL,21HORAL,00000100BOUT21H,ALINAL,0A1HORAL,00001000BOUT0A1H,ALPOPBXPOPESMOVDX,0C468HINAX,DXANDAX,0F7FFHOUTDX,AXMOVAH,4CHINT21HINTRADPROCCLIPUSHAXMOVAX,DATAMOVDS,AXDEC24/31COUNTMOVDX,OFFSETMESGMOVAH,09HINT21HOUT20H,ALOUT0A0H,ALSTIPOPAXIRETINTRADENDPCODEENDSENDBEG【程序框图】【实验结果】程序运行时,每按一次开关,屏幕上显示一次“TPCpcicardInterrupt”,中断10次后程序退出。屏幕显示如下:【实验名称】可编程并行接口【实验目的】1、掌握8255的工作原理及使用方法。2、进一步掌握中断处理程序的编写。【实验内容】实验一1实验电路如图1,8255C口接逻辑电平开关K0K7,A口接LED显示电路L0L7。2.编程从8255C口输入数据,再从A口输出25/31.图11按图28255方式1的输出电路连好线路。2编程:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:依次输出01H、02H,04H,08H,10H,20H,40H,80H使L0L7依次发光,中断次结束。图2【实验框图】实验一开始设置8255C口输入A口输出从C口输入数据将此数据自A口输出Y结束实验二【实验代码】实验一CODESEGMENTASSUMECS:CODEBEG:MOVDX,0C803HMOV26/31AL,10001111BOUTDX,ALLP:MOVDX,0C802HINAL,DXMOVDX,0C800HOUTDX,ALMOVAH,1INT16HJZLPEXIT:MOVAH,4CHINT21HCODEENDSENDBEG实验二DATASEGMENTCOUNTDB8MESGDBInterrupt,0AH,0DH,$TABDB01H,02H,04H,08H,10H,20H,40H,80HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATABEG:MOVAX,DATAMOVDS,AXCLIMOVDX,0C468HINAX,DXORAX,0900HOUTDX,AXMOVAL,73HMOVAH,35HINT21HPUSHESPUSHBXPUSHDSMOVAX,SEGINTRADMOV27/31DS,AXMOVDX,OFFSETINTRADMOVAL,73HMOVAH,25HINT21HPOPDSINAL,21HANDAL,11111011BOUT21H,ALANDAL,11110111BOUT0A1H,ALMOVDX,0C803HMOVAL,10101000BOUTDX,ALMOVAL,00001101BOUTDX,ALMOVDX,0C800HMOVAL,COUNTDECCOUNTMOVAL,COUNTMOVBX,OFFSETTABXLATTABMOVDX,0C800HOUTDX,ALLEADX,MESGMOVAH,09HINT21HMOVAL,20HOUT20H,ALOUT0A0H,ALSTILEADX,TABXLATTABOUTDX,ALSTILP:CMPCOUNT,0JZEXITMOVAH,1INT16HJZLPEXIT:INAL,21H28/31ORAL,00000100BOUT21H,ALINAL,0A1HORAL,00
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (完整版)十八项医疗核心制度考试题及答案
- 小学道法传统文化教育|中年级核心教学内容课件
- 2025山东晨鸣纸业集团股份有限公司招聘50人笔试历年典型考点题库附带答案详解
- 2025山东临沂市罗庄区兴罗投资控股有限公司招聘14人笔试历年常考点试题专练附带答案详解
- 2025安徽蚌埠市固镇县工业投资(集团)有限公司招聘专业安全监管人员4人笔试历年难易错考点试卷带答案解析
- 2025安徽某国企高速收费站收费员招聘18人笔试历年备考题库附带答案详解
- 2025天津北海油人力资源咨询服务有限公司招聘外包工作人员35人笔试历年难易错考点试卷带答案解析
- 2025四川绵阳市公共交通集团有限责任公司招聘车辆运维管理专员等岗位2人笔试历年备考题库附带答案详解
- 2025四川宜宾市文化旅游会展集团有限公司下属子公司第一批员工招聘35人笔试历年难易错考点试卷带答案解析
- 2025北京化学工业集团有限责任公司招聘20人笔试参考题库附带答案详解
- 2026中国邮政广西分公司第1期招聘笔试参考题库及答案详解
- 2025年一级消防工程师继续教育试题及答案
- 2026年国家开放大学本科《中国法律史》期末纸质考试试题及答案
- 2026年贵阳市第一人民医院医护人员招聘考试备考题库及答案详解
- 医院医务人员外出参加学术活动管理制度
- 2026年贵州省初中学业水平考试数学试卷试题(含答案详解)
- 弘扬教育家精神 争做新时代好教师
- 招投标人员廉洁从业课件
- 甲状腺抗体课件
- 代付协议书模板
- 矿山隐蔽致灾因素普查规范课件
评论
0/150
提交评论