微机实验五、六、七报告_第1页
微机实验五、六、七报告_第2页
微机实验五、六、七报告_第3页
微机实验五、六、七报告_第4页
微机实验五、六、七报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

班级:通信姓名:学号:实验五系统功能调用一.实验目的:1、掌握接受键盘数据的方法,并了解将键盘数据显示时,须转为ASCII码的原理。2、掌握DOS功能调用的编程方法。二.实验内容:试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。三.编程提示:利用DOS功能调用INT21H的1号功能从键盘输入字符和2号功能在显示器上显示一个字符。四.实验要求:实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析等。1.实验源程序:DATASEGMENTERROUTPUTDB'INPUTERROR,PLEASETRY:'DB'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVBX,DATAMOVDS,BXMOVAH,1;调用INT21H的1号功能从键盘输入字符INT21HCMPAL,61HJLERRCMPAL,7AHJGERRSUBAL,20HMOVDL,ALJMPKEYERR:MOVDX,OFFSETERROUTPUTMOVAH,09HINT21HJMPSTARTKEY:MOVAH,2;调用INT21H的2号功能在显示器上显示一个字符INT21HMOVAH,4CHINT21HCODEENDSENDSTART2.使用debug进行调试:G:\masm5>debugone1.exe反汇编:-u17DF:0000BBDD17MOVBX,17DD17DF:00038EDBMOVDS,BX17DF:0005B401MOVAH,0117DF:0007CD21INT2117DF:00093C61CMPAL,6117DF:000B7C0BJL001817DF:000D3C7ACMPAL,17DF:000F7F07JG001817DF:00112C20SUBAL,2017DF:00138AD0MOVDL,AL17DF:0015EB0AJMP002117DF:001790NOP17DF:0018BA0000MOVDX,000017DF:001BB409MOVAH,0917DF:001DCD21INT2117DF:001FEBDFJMP0000-u17DF:0021B402MOVAH,0217DF:0023CD21INT2117DF:0025B44CMOVAH,4C17DF:0027CD21INT21有反汇编可知,程序运行到17DF:0023刚好实现需要,所以只需要用-g运行断点之前,方法如下:若输入小写y:yAX=0259BX=17DDCX=0049DX=0059SP=0000BP=0000SI=0000DI=0000DS=17DDES=17CDSS=17DDCS=17DFIP=0023NVUPEIPLNZNAPENC17DF:0023CD21INT21-gYProgramterminatednormally用d查询:-d17dd:001717DD:001059-3A24000000000000Y:$......-g23可知Y的ASCII码为:59若输入小写字母:q-g23qAX=0251BX=17DDCX=0049DX=0051SP=0000BP=0000SI=0000DI=0000DS=17DDES=17CDSS=17DDCS=17DFIP=0023NVUPEIPLNZNAPONC17DF:0023CD21INT21-gQProgramterminatednormally由以上可知:输入小写y得到大写Y,输入小写q得到大写Q;五、调试中遇到的问题:1.由于程序超过了16行,在进行反汇编时,16行后面的程序没有显示出来,所以刚开始时没有找到程序最终运行到什么地方,所以用g执行程序时-gyYProgramterminatednormally按键和答案同时出来,时间间隔太短,所以使用两次U反汇编,最后找到程序运行到0023处为断点处,所以直接使用-g23,输入小写字母y,然后再运行程序-g,就出来大写字母Y。这时按键和答案的输出就不会同时出来实验六分支程序设计一.实验目的:1、掌握分支程序的结构。2、掌握分支程序的设计、调试方法。二.实验内容:假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断:每个数大于0,等于0,还是小于0;并输出其判断结果。即:1当x>0y=0当x=0-1当x<0三、试验源程序:DATASEGMENTDATA1DB5,-4,0,3,100,-51NEGOUTDB'Y=-1$'PLUSOUTDB'Y=1$'ZEROOUTDB'Y=0$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVBX,DATAMOVDS,BXMOVSI,0MOVCL,6;循环6次LOOPER:MOVAL,DATA1[SI]INCSICMPAL,0JGPLUSJEZEROJLNEGEPLUS:MOVDX,OFFSETPLUSOUTJMPFINALZERO:MOVDl,OFFSETZEROOUTJMPFINALNEGE:MOVDX,OFFSETNEGOUTJMPFINALFINAL:MOVAH,09HINT21HDECCLJNZLOOPERMOVAH,4CHINT21HCODEENDSENDSTART四、使用debug进行调试:首先对程序进行反汇编-u17DF:0000BBDD17MOVBX,17DD17DF:00038EDBMOVDS,BX17DF:0005BE0000MOVSI,000017DF:0008B106MOVCL,0617DF:000A8A840000MOVAL,[SI+0000]17DF:000E46INCSI17DF:000F3C00CMPAL,0017DF:00117F04JG001717DF:00137408JZ001D17DF:00157C0BJL002217DF:0017BA0C00MOVDX,000C17DF:001AEB0CJMP002817DF:001C90NOP17DF:001DB211MOVDL,1117DF:001FEB07JMP0028-u17DF:002190NOP17DF:0022BA0600MOVDX,000617DF:0025EB01JMP002817DF:002790NOP17DF:0028B409MOVAH,0917DF:002ACD21INT2117DF:002CFEC9DECCL17DF:002E75DAJNZ000A17DF:0030B44CMOVAH,4C17DF:0032CD21INT21根据反汇编语句符合源程序内容,有以上得到各程序地址由此找到断点处地址利用g语句让程序运行到断点之前并且显示寄存器标志和下一条要执行的命令-g32Y=1Y=-1Y=0Y=1Y=1Y=-1AX=4C24BX=17DDCX=0000DX=0006SP=0000BP=0000SI=0006DI=0000DS=17DDES=17CDSS=17DDCS=17DFIP=0032NVUPEIPLZRNAPENC17DF:0032CD21INT21STARTDSSTARTDS←5,-4,0,3,100,-50;SI←0;CL←6AL←DATA1[SI]SI←SI+1AL>0AL<0YNPLUSZEROutNEGYNCL=0结束YNCLCL←CL-1五.思考题:程序中的原始数据是以怎样的形式存放在数据区中的?请用DEBUG调试程序观察并分析。原始数据以十六进制补码的形式存放在数据区的使用debug调试观察如下-d017DD:000005FC000364CD2059-3D2D312420593D3117DD:00102420593D30240000-000000000000000017DD:0020BBDD178EDBBE0000-B1068A840000463C17DD:0030007F0474087C0BBA-0C00EB0C90B211EB17DD:00400790BA0600EB0190-B409CD21FEC975DA17DD:0050B44CCD215DC32BC0-5E5F8BE55DC3558B17DD:0060EC81EC0601568B5E-04D1E3D1E38B87BE17DD:0070220B87C0227503E9-6B018B5E04D1E3D1由以上可知:5,-4,0,3,100,-51,的十六进制补吗分别为:05H,FCH,00H,03H,64H,CDH六:调试中所遇到的问题:1.程序基本框架错误刚开始不太熟悉程序的基本框架,虽然汇编通过,没有错误,但是在执行程序或者使用debug调试程序时,程序无反应,这是由于结构框架错误导致的通过书本上的例题,对程序框架进行了改进。实验七循环程序设计一.实验目的加深对循环结构的理解。掌握循环程序的设计方法。二.实验内容与要求编制程序计算S=1+2·3+3·4+4·5+……+N(N+1)+……直到N(N+1)大于200为止,并将结果由屏幕上显示出来。其程序的流程图如图7.1所示。将从3000H内存单元开始的100个字节存储单元全部清0。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。三.程序框图图7.1程序框图四、实验内容:实验内容一的源程序如下:DATASEGMENTINFODB'Thefinaldatais:$'DATAENDSSTACKSEGMENTPARASTACK'STACK'DB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAIN:MOVAX,DATAMOVDS,AXMOVAX,0MOVDX,1MOVBL,2LOOPER:MOVAL,BLINCBLMULBLADDDX,AXCMPAX,200JGSHOWLOOPLOOPERMOVCL,3SHOW:MOVAX,DXANDDX,000FHCMPDX,9HJGLASUBDX,7HLA:ADDDX,37HPUSHDXMOVBL,10HDIVBLMOVDX,AXDECCLJNZSHOWMOVDX,OFFSETINFOMOVAH,09HINT21HMOVCL,3LA2:POPDXMOVAX,0200HINT21HDECCLJNZLA2MOVAX,4C00HINT21HCODEENDSENDMAIN使用debug进行调试:先对程序进行反汇编:-u17DF:0000B8DD17MOVAX,17DD17DF:00038ED8MOVDS,AX17DF:0005B80000MOVAX,000017DF:0008BA0100MOVDX,000117DF:000BB302MOVBL,0217DF:000D8AC3MOVAL,BL17DF:000FFEC3INCBL17DF:0011F6E3MULBL17DF:001303D0ADDDX,AX17DF:00153DC800CMPAX,00C817DF:00187F04JG001E17DF:001AE2F1LOOP000D17DF:001CB103MOVCL,0317DF:001E8BC2MOVAX,DX-u17DF:002083E20FANDDX,+0F17DF:002383FA09CMPDX,+0917DF:00267F03JG002B17DF:002883EA07SUBDX,+0717DF:002B83C237ADDDX,+3717DF:002E52PUSHDX17DF:002FB310MOVBL,1017DF:0031F6F17DF:00338BD0MOVDX,AX17DF:0035FEC9DECCL17DF:003775E5JNZ001E17DF:0039BA0000MOVDX,000017DF:003CB409MOVAH,0917DF:003ECD21INT21-u17DF:0040B103MOVCL,0317DF:00425APOPDX17DF:0043B80002MOVAX,020017DF:0046CD21INT2117DF:0048FEC9DECCL17DF:004A75F6JNZ004217DF:004CB8004CMOVAX,4C0017DF:004FCD21INT21反汇编之后得到各语句的地址,以及断点处的地址为17DF:004F使用d语句查询此地址范围出的内容如下:-d17dd:4f17DD:0040B3.17DD:005010F6F17DD:0060B1035AB80002CD21-FEC975F6B8004CCD..Z....!..u...L.17DD:0070210B87C0227503E9-6B018B5E04D1E3D1!..."u..k..^....17DD:00803500460034003500-46003400350046005.F.4.5.F.4.5.F.17DD:00903400350046003400-35004600340035004.5.F.4.5.F.4.5.17DD:00A04600340035004600-3400350046003400F.4.5.F.4.5.F.4.17DD:00B03500460034003500-46003400350046005.F.4.5.F.4.5.F.17DD:00C03400350046003400-350046003400354.5.F.4.5.F.4.5让程序运行到断点处:-g4FThefinaldatais:5F4AX=4C00BX=0010CX=0000DX=0034SP=FFA0BP=0000SI=0000DI=0000DS=17DDES=17CDSS=17E5CS=17DFIP=004FNVUPEIPLZRNAPECY17DF:004FCD21INT21有以上可知所以S=1+2·3+3·4+4·5+……+N(N+1)+……=5F4试验内容二的源程序如下所示:DATASEGMENTNUMEQU100DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAIN:MOVAX,DATAMOVDS,AXMOVBP,3000HMOVSI,0MOVCL,NUMMOVAX,0LOP:MOV[BP+SI],ALINCSILOOPLOPMOVAX,4C00HINT21HCODEENDSENDMAIN-u17DD:0000B8DD17MOVAX,17DD17DD:00038ED8MOVDS,AX17DD:0005BD0030MOVBP,300017DD:0008BE0000MOVSI,000017DD:000BB164MOVCL,6417DD:000DB80000MOVAX,000017DD:00108802MOV[BP+SI],AL17DD:001246INCSI17DD:0013E2FBLOOP001017DD:0015B8004CMOVAX,4C0017DD:0018CD21INT2117DD:001A38A73607CMP[BX+0736],AH17DD:001E751DJNZ003D查询3000H后的内存的内容17DD:30100000000000000000-0000000000000000................17DD:30200000000000000000-0000000000000000................17DD:30300000000000000000-0000000000000000................17DD:30400000000000000000-0000000000000000................17DD:30500000000000000000-0000000000000000................17DD:30600000000083C404EB-0C908D8678FF50E8............x.P.17DD:3070581A83C402B8FF7F-502BC050E8C11283X.......P+.P....:先将3000H以后的字节进行修改,让其不为零如下-e17dd:300017DD:300000.2300.4300.5400.5400.4600.600.4600.17DD:300800.5600.6400.5600.5600.6500.5600.5600.5617DD:301000.4500.00.500.3500.4300.3400.5400.5417DD:301800.800.9800.900.900.900.9a00.00.d917DD:302000.8400.5400.7600.800.00.00.8700.6517DD:302800.8500.00.6500.6500.6500.7600.7600.517DD:303000.400.54查询修改后的3000H后的内容为:-d17dd:300017DD:30002343545446064600-5664565665565656#CTTF.F.VdVVeVVV17DD:30104500053543345454-08980909099A00D9E..5C4TT........17DD:30208454760800008765-8500656565767605.Tv....e..eeevv.17DD:30300454000000000000-0000000000000000.T..............17DD:30400000000000000000-0000000000000000................17DD:30500000000000000000-0000000000000000................17DD:30600000000083C404EB-0C908D8678FF50E8......

温馨提示

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

评论

0/150

提交评论