1微机实验报告学院:计算机科学与工程学院专业:软件工程学号:152210702235姓名:张旭2实验一显示程序与数据传送实验1.实验目的1)掌握在PC机上以十六进制形式显示数据的方法。2)掌握部分DOS功能调用使用方法。3)掌握与数据有关的不同寻址方式。4)熟悉Windows集成操作软件Tdpit的操作环境和操作方法。2.实验设备PC微机一台、TD-PIT++实验系统一套3.实验内容及说明1.显示程序实验一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并利用DOS功能调用完成一些提示信息的显示。通过本实验,初步掌握实验系统配套操作软件的使用。实验中所使用DOS功能调用(INT21H)说明如下。(1)显示单个字符输出入口:AH=02H调用参数:DL=输出字符(2)显示字符串入口:AH=09H调用参数:DS;DX=串地址,‘$’为结束字符(3)键盘输入并回显入口:AH=01H返回参数:AL=输出字符(4)返回DOS系统入口:AH=4CH调用参数:AL=输出字符2.数据传送实验本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。显示程序实验的程序:STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTUSE16MESDB‘Pressanykeytoexit!’,0AH,0DH,0AH,0DH,’$’MES1DB‘Showaashex:’,0AH,0DH,’$’SDDB‘a’DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMESMOVAH,09HINT21HMOVDX,OFFSETMES1MOVAH,09HINT21HMOVSI,0FFSETSDMOVAL,DS:[SI]ANDAL,0F0HSHRAL,4CMPAL,0AHJBC2ADDAL,07HC2:ADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FH3CMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,ALMOVAH,02HINT21HKEY:MOVAH,1INT16HJZKEYMOVAX,4C00HINT21HCODEENDSENDSTART数据传送实验程序:DATASEGMENTMSRDBHELLO,WORLD,$LENEQU$-MSRDATAENDSEXDASEGMENTMSDDBLENDUP(?)EXDAENDSMYSTACKSEGMENTSTACKDW20DUPMYSTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:EXDASTART:MOVAX,DATAMOVDS,AXMOVAX,EXDAMOVES,AXMOVSI,OFFSETMSRMOVDI,OFFSETMSDMOVCX,LENNEXT:MOVAL,[SI]MOVES:[DI],ALINCSIINCDIDECCXJNCNEXTPUSHESPOPDSMOVDX,OFFSETMSDMOVAH,9INT21HKEY:MOVAH,1INT16HJZKEYMOVAX,4C00HINT21HCODEENDSENDSTART实验二数码转换程序实验1、实验目的掌握不同进制数及编码相互转换的程序设计方法。2、实验设备PC微机一台、TD-PIT++实验系统一套。3、实验内容及说明计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算或其他信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机与外设间的数码对应关系如表2-1所示。数码转换关系如图2-1所示。4图2-1计算机与外设间的数码转换关系1.将ASCII码表示的十进制数转换为二进制数十进制数可以表示为:Dn×10n+Dn-1×10n-1+…+D0×100=Di×10i其中Di代表十进制数1、2、3…9、0。上式可以转换为:ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。2.将十进制数的ASCII码转换为BCD码本实验要求将键盘输入的一个五位十进制数54321的ASCⅡ码存放在数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数的ASCⅡ码,则输出“FF”。提示:一字节ASCⅡ码取其低四位即变为BCD码。3.将十六进制数的ASCII码转换为十进制数十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制数可表示为:ND=D4×104+D3×103+D2×102+D1×10+D0因此,将十六位二进制数转换为五位ASCⅡ码表示的十进制数,就是求D1-D4,并将它们转化为ASCⅡ码。本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。4.BCD码转换为二进制码本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。4、实验步骤(1)运行Tdpit集成操作软件,按照各实验要求分别编写实验程序。(2)对实验程序进行编译、链接。(3)使用运行功能执行程序,观察运行结果。(4)使用调试功能调试程序,观察在调试过程中,程序指令执行之后各寄存器及数据区的内容。更改数据区中的数据,反复测试,验证程序功能。实验程序2.1:STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDDATASEGMENTMES1DB'Theasciicodeofdecimalcodeare:$'BUFDB30H,30H,30H,31H,32HDB10HDUP(0)DDATAENDSCODESEGMENTASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVSI,OFFSETBUFMOVBX,000AH5MOVCX,0004HMOVAH,00HMOVAL,[SI]SUBAL,30HA1:IMULBXADDAL,[SI+01]INCSILOOPA1MOV[SI],AXMOVDX,OFFSETMES1MOVAH,09HINT21HINCSICALLSHOWDECSICALLSHOWWAIT1:MOVAH,1INT16HJZWAIT1MOVAX,4C00HINT21HSHOWPROCNEARMOVAL,DS:[SI]ANDAL,0F0HSHRAL,4CMPAL,0AHJBC2ADDAL,07HC2:ADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FHCMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,ALMOVAH,02HINT21HRETENDPCODEENDSENDSTART程序2.2:STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDDATASEGMENTMES1DB'TheBCDcodeofdecimalare:$'BUFDB31H,32H,33H,34H,35HDB10HDUP(0)DDATAENDSCODESEGMENTASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVCX,0005HMOVDI,OFFSETBUFA1:MOVBL,0FFHMOVAL,[DI]CMPAL,3AHJNBA2SUBAL,30HJBA2MOVBL,ALA2:MOVAL,BLMOV[DI+05H],ALINCDILOOPA1MOVSI,DIMOVCX,05HMOVDX,OFFSETMES1MOVAH,09HINT21HA3:CALLSHOWMOVDL,20HMOVAH,02HINT21HINCSILOOPA3WAIT1:MOVAH,1INT16HJZWAIT1MOVAX,4C00HINT21HSHOWPROCNEARMOVAL,DS:[SI]ANDAL,0F0HSHRAL,4CMPAL,0AHJBC2ADDAL,07HC2:ADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FHCMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,ALMOVAH,02HINT21HRETENDPCODEENDSENDSTART程序2.3:STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDS6DDATASEGMENTMES1DB'Theasciicodeofhexare:$'BUFDB0CH,00HDB10HDUP(0)DDATAENDSCODESEGMENTASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVSI,OFFSETBUFMOVDX,[SI]MOVBX,SIADDBX,2ADDSI,7A1:DECSIMOVAX,DXMOVDX,0000HMOVCX,000AHDIVCXXCHGAX,DXADDAL,30HMOV[SI],ALCMPDX,0000HJNEA1A2:CMPSI,BXJZA3DECSIMOVAL,30HMOV[SI],ALJMPA2A3:MOVCX,5MOVSI,OFFSETBUFADDSI,2MOVDX,OFFSETMES1MOVAH,09HINT21HA4:CALLSHOWMOVDL,20HMOVAH,02HINT21HINCSILOOPA4WAIT1:MOVAH,1INT16HJZWAIT1MOVAX,4C00HINT21HSHOWPROCNEARMOVAL,DS:[SI]ANDAL,0F0HSHRAL,4CMPAL,0AHJBC2ADDAL,07HC2:ADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FHCMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,ALMOVAH,02HINT21HRETENDPCODEENDSENDSTART程序2.4:STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDDATASEGMENTMES1DB'THEBCDCODEOFBINARYARE:$'BUFDB01H,07H,03H,04H,05H,01H,06H,08HDB10HDUP(0)DDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DDATAMOVDS,AXMOVCX,0004HMOVDI,OFFSETBUFA1:MOVAL,[DI]ADDAL,ALMOVBL,ALADDAL,ALADDAL,ALADDAL,BLINCDIMOVAH,00HADDAL,[DI]MOV[DI+07H],AXINCDILOOPA1MOVDX,OFFSETMES1MOVAH,09HINT21HMOVCX,04HMOVDI,OFFSETBUFADDDI,08HA2:MOVAX,[DI]CALLSHWORDMOVDL,20HMOVAH,02HINT21HINCDIINCDILOOPA2WAIT1:MOVAH,1INT16HJZWAIT1MOVAX,4C00H7INT21HSHWORDPROCNEARMOVBL,AHCALLSHOWMOVB