首页 IBM-PC汇编语言程序设计实验报告

IBM-PC汇编语言程序设计实验报告

举报
开通vip

IBM-PC汇编语言程序设计实验报告~PAGE\*MERGEFORMAT19~目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc406194174"实验1利用DEBUG调试汇编语言程序段PAGEREF_Toc406194174\h1HYPERLINK\l"_Toc406194175"实验2初级程序的编写与调试实验(一)PAGEREF_Toc406194175\h5HYPERLINK\l"_Toc406194176"实验3初级程序的编写与调试实验(二)PAGEREF_Toc406194176\h...

IBM-PC汇编语言程序设计实验报告
~PAGE\*MERGEFORMAT19~目录TOC\o"1-3"\h\z\uHYPERLINK\l"_Toc406194174"实验1利用DEBUG调试汇编语言程序段PAGEREF_Toc406194174\h1HYPERLINK\l"_Toc406194175"实验2初级程序的编写与调试实验(一)PAGEREF_Toc406194175\h5HYPERLINK\l"_Toc406194176"实验3初级程序的编写与调试实验(二)PAGEREF_Toc406194176\h14HYPERLINK\l"_Toc406194177"实验4汇编语言程序上机过程PAGEREF_Toc406194177\h19HYPERLINK\l"_Toc406194178"实验5分支程序实验PAGEREF_Toc406194178\h22HYPERLINK\l"_Toc406194179"实验6循环程序实验PAGEREF_Toc406194179\h26HYPERLINK\l"_Toc406194180"实验7子程序实验PAGEREF_Toc406194180\h30实验1利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。二.实验环境PC微机DOS操作系统、Windows操作系统三.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D段地址:偏移地址)-D100;显示DS段,0100开始的128个字节内容-D  ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)-DDS:100;显示DS段,0100H开始的128个字节内容-DCS:200;显示CS段,0200H开始的128个字节内容    -D200:100;显示DS段,0200:0100H开始的128个字节内容-D200;显示DS段,0200H开始的128个字节内容    -D100L10;显示DS段,100H开始的100H个字节内容2)E命令(修改指定内存)-EDS:100F3‘AB’8D;把DS段中0100H开始的四个字节修改为F3‘AB’(A和B的ASCII码)8D也可以按下面的方式实现3)R命令(显示当前寄存器的内容)4)T命令(设置陷井,单步执行)5)A命令(将指令直接汇编成机器码输入到内存中。)使用A命令在0100H开始输入指令movax,10inccxmovbl,al单步执行上述指令6)G命令等的使用(执行A命中输入的汇编指令)使用A命令在0100H开始输入指令movax,10inccxmovbl,alint3然后使用g命令执行上面的例子设断点在100H处然后用T命令单步执行实验2初级程序的编写与调试实验(一)一.实验目的1.进一步熟悉DEBUG命令;2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;4.掌握简单的汇编语言程序编写与调试。二.实验环境PC微机DOS操作系统、Windows操作系统;三.实验步骤1.内存操作数及各种寻址方式使用MOVAX,1234MOV[1000],AXMOVBX,1002MOVBYTEPTR[BX],20MOVDL,39INCBXMOV[BX],DLDECDLMOVSI,3MOV[BX+SI],DLMOV[BX+SI+1],DLMOVWORDPTR[BX+SI+2],2846步骤:用A命令键入上述程序,并用T命令逐条运行。(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。注意D命令显示结果中右边的ASCII字符及双字节数存放法。2.求累加和程序:程序:MOVBX,1000MOVCX,10SUBAX,AXLOP:ADDAL,[BX]ADCAH,0INCBXJ:LOOPLOPINT3步骤:(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替;(2)用命令NAA将此程序命名为文件AA(文件名可任取);(3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址;(4)用命令W100将此程序存到AA命名的磁盘文件中;(5)用命令Q退出DEBUG;(6)用命令DEBUGAA再次调入DEBUG和文件AA,可用U命令检查调入程序;若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入;(7)用E命令在内存地址1000H处键入16个数字;(8)用命令G=100J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值;(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错;(10)重复G、J与T,再检查AX是否正确;(11)用G命令使程序运行到结束,检查AX值是否正确。3.多字节加法程序程序:MOVDI,1000MOVCX,8MOVSI,2000CLCLOP:MOVAL,[SI]ADC[DI],ALINCSIINCDILOOPLOPINT20步骤:用命令键入此程序用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。4.数据串搬家程序(1)用A命令键入下列程序:MOVSI,1000MOVDI,1500MOVCX,0FHLOP:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPLOPINT20(2)用A命令DB伪指令在1000H键入下列字符串:‘IBM_PCCOMPUTER'(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。5.段寄存器概念及字符串传送指令练习(1)用A命令键入下列程序:MOVSI,0MOVDI,0MOVAX,1000MOVDS,AXMOVAX,1500MOVES,AXMOVCX,0FCLDREPMOVSBINT20用A命令DB伪指令在1000:0000处键入字符串'IBM_PCCOMPUTER',并用D命检查之用D命令检查0F00:1000处内容,看是否一样。为什么?用G命令运行此程序,检查目的地址1500:0000处内容。并记下DS与ES值。修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?)仍和原来一样。实验3初级程序的编写与调试实验(二)一.实验目的1.掌握无条件转移指令、条件转移指令;2.掌握利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法;3.掌握直接向视频RAM送ASCII码进行屏幕显示的方法;4.掌握屏幕字符显示程序编写与调试。二.实验环境PC微机DOS操作系统、Windows操作系统;三.实验步骤1.利用INT210AH号功能调用显示字符串。(1)用A命令在100H处键入下列程序:MOVAH,9MOVDX,110INT21INT20(2)用A命令在110H处键入下列字符串的ASCII码:DB'Thisisasample!$'(3)用N命令和W命令将此程序(包括数据区)存入文件名为AA.OM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。(4)用Q命令退出DEBUG。(5)在DOS命令下打AA,运行此程序,即在屏幕上显示'Thisisasample!'字符串,若不出现,用DEBUG检查程序有无错误。2.利用INT21H2号功能显示字符(1)用A命令在100H处键入下列程序:XORDL,DLMOVCX,100LOP:MOVAH,2INT21INCDLPUSHCXMOVCX,8DELY:PUSHCXMOVCX,0J:LOOPJPOPCXLOOPDELYPOPCXLOOPLOPINT20(2)用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。仔细观察每个字符,和IBM-PCASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?(3)按CTRL+BREAK退出此程序,若一次不行可多做几次。3.直接向VRAM送ASCII码显示字符(1)用A命令在100H处键入下列程序MOVAX,B000MOVDS,AXXORAL,ALXORBX,BXMOVCX,100LOP:MOV[BX],ALINCBXINCALPUSHCXMOVCX,8DELY:PUSHCXMOVCX,0J:LOOPJPOPCXLOOPDELYPOPCXLOOPLOPINT20(2)用N命令和W命令将此程序存入BB.COM文件中。(一定要先存入!)(3)用G命令运行此程序,仔细观察每一个ASCII码显示结果,并和字符表及上一道程序运行情况进行对照,其控制字符区(07-0DH)显示结果和INT21H2号功能调用有何不同?4.用字符搜索法确定字符串长度(1)用A命令在100H开始的内存处键入下列程序JMPSTARTDB'Thisistheprogramtomeasure'DB'thelengthofastring!$'START:MOVBX,102MOVAL,24XORCL,CLLOP:CMPAL,[BX]JZEXITINCBXINCCLJMPLOPEXIT:INT3(2)用G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一样?5.用字符搜索法确定字符串长度(1)用A命令在100H处键入下列程序:MOVSI,0MOVBL,10LOP:MOVDL,[SI]MOVCL,4SHRDL,CLCMPDL,0AJCJ1ADDDL,7J1:ADDDL,30MOVAH,2INT21MOVDL,[SI]ANDDL,0FCMPDL,0AJCJ2ADDDL,7J2:ADDDL,30MOVAH,2INT21MOVDL,20MOVAH,2INT21INCSIDECBLJNZLOPINT20(2)用N,W命令将此程序用CC.COM文件名存入磁盘。(3)用Q命令退出DEBUG。(4)在DOS命令状态下直接运行CC.COM命令文件,应在屏幕上显示出内存从0000H开始的16个字节的内容,若有错误,用DEBUG检查之。实验4汇编语言程序上机过程一.实验目的熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。了解汇编语言程序的汇编、运行环境。二.实验环境PC微机DOS操作系统、Windows操作系统MASM汇编集成环境三.实验步骤程序:datasegmentmessagedb'Thisisasampleprogramofkeyboardanddisply'db0dh,0ah,'Pleasestrikethekey!',0dh,0ah,'$'dataendsstacksegmentparastack'stack'db50dup(?)stackendscodesegmentassumecs:code,ds:data,ss:stackstart:movax,datamovds,axmovdx,offsetmessagemovah,9int21h;显示'Thisisasampleprogramofkeyboardanddisply'again:movah,1int21h;等待键盘输入,保存至ALcmpal,1bh;1bh字符ESC的ASCIIjeexitcmpal,61h;61h字符a的ASCIIjc(jb)nd;小于(CF=1有借位)转向ND原样显示cmpal,7ah;jand;大于转向ND原样显示andal,11011111b;转化为大写字母subal,20hnd:movdl,almovah,2int21hjmpagainexit:movah,4chint21hcodeendsendstart实验步骤:用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。2.用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。3.用TYPE命令显示1产生的.LST文件。4.用LINK将.OBJ文件连接成可执行的.EXE文件。5.在DOS状态下运行LINK产生的.EXE文件。即在屏幕上显示标题并提示你按键。每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。按ESC键可返回DOS。若未出现预期结果,用DEBUG检查程序。实验5分支程序实验一.实验目的掌握分支程序的设计方法;掌握利用DEBUG修改参数、检查结果的方法;熟悉汇编语言源程序的编辑、汇编、连接及调试过程。二.实验环境PC微机DOS操作系统、Windows操作系统MASM汇编集成环境三.实验内容1.编写一个程序,显示AL寄存器中的两位十六进制数codesegmentassumecs:codestart:moval,3ehmovbl,almovdl,almovcl,4shrdl,clcmpdl,9jbenext1adddl,7next1:adddl,30hmovah,2int21hmovdl,blanddl,0fhcmpdl,9jbenext2adddl,7next2:adddl,30hmovah,2int21hmovah,4chint21hcodeendsendstart2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。codesegmentassumecs:codestart:movah,1int21hcmpal,0dhjzdonecmpal,‘0’jbnextcmpal,‘9’jacharupmovdl,almovah,2int21hjmpstartcharup:cmpal,41hjbnextcmpal,5ahjachrdndispc:movdl,‘C’movah,2int21hnext:jmpstartchrdn:cmpal,61hjbnextcmpal,7ahjanextjmpdispcdone:movah,4chint21hcodeendsendstart四.实验步骤1.用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。2.对其进行汇编及连接,产生.EXE文件。3.对.EXE文件进行调试运行。(1)用DEBUG调试运行,学会修改AL内容的方法;(2)对DSPKEY.EXE键入不同的字符,分别进行调试;(3)在MS-DOS下运行这两个.EXE文件。实验6循环程序实验一.实验目的1.掌握循环程序的设计方法;2.学会针对不同的问题,选用不同的组织循环的方法;3.进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。二.实验环境PC微机DOS操作系统、Windows操作系统MASM汇编集成环境三.实验内容1.编写一个程序,显示BX寄存器中的两位十六进制数;codesegmentassumecs:codestart:movcl,2again:pushclmovcl,4rolbl,clmovdl,blanddl,0fhcmpdl,9jbeshowadddl,7show:adddl,30hmovah,2int21hpopclloopagainmovah,4chint21hcodeendsendstart2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。codesegmentassumecs:codestart:movah,1int21hcmpal,0dhjzdonecmpal,‘0’jbnextcmpal,‘9’jacharupmovdl,almovah,2int21hjmpstartcharup:cmpal,41hjbnextcmpal,5ahjachrdndispc:movdl,‘C’movah,2int21hnext:jmpstartchrdn:cmpal,61hjbnextcmpal,7ahjanextjmpdispcdone:movah,4chint21hcodeendsendstart四.实验步骤1.用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM;2.对其进行汇编及连接,产生.EXE文件;3.对.EXE文件进行调试运行。(1)用DEBUG调试运行,学会修改BL内容的方法;(2)对DSPKEY.EXE键入不同的字符,分别进行调试;(3)在MS-DOS下运行这两个.EXE文件。实验7子程序实验一.实验目的1.掌握主程序与子程序之间的调用关系及调用方法;2.掌握子程序调用过程中近程调用与远程调用的区别;3.掌握通过堆栈转送参数的方法。二.实验环境PC微机DOS操作系统、Windows操作系统MASM汇编集成环境三.实验内容1.将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。datasegmentbufdb0abh,0cdh,0deh,01h,02h,03hdb3ah,4bh,5ch,6fhdataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovcx,10leabx,bufagain:moval,[bx]callhexascincbxloopagainmovah,4chint21hhexascprocnearmovdl,alpushcxmovcl,4shrdl,clpopcxcalldispmovdl,alanddl,0fhcalldisprethexascendpdispproccmpdl,9jbenextadddl,7next:adddl,30hpushaxmovah,2int21hpopaxretdispendpcodeendsendstart2.编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符’b’.子程序返回字符’b’的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符’b’及其个数(设为一位十六进制数)。datasegmentchardb‘b’bufdb'abcdab123456',0dh,0ah,'$'dataendsmcodesegmentassumecs:mcode,ds:datastart:movax,datamovds,axleadx,bufmovah,9int21hleasi,bufmovcl,[si+1]movch,0incsiincsimoval,charmovah,0pushsipushcxpushaxcallcheckpopaxmovdl,charmovah,2int21hmovdl,alanddl,0fhcmpdl,9jbenextadddl,7next:adddl,30hmovah,2int21hmovah,4chint21hmcodeendsscodesegmentassumecs:scodecheckprocfarpushbpmovbp,spmovsi,[bp+10]movcx,[bp+8]movax,[bp+6]xorah,ahagain:cmpal,[si]jnenext1incahnext1:incsiloopagainmoval,ahmov[bp+10],axpopbpret4checkendpendstart四.实验步骤1.编辑、汇编两个源程序,生成相应的可执行文件(.EXE)2.用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。3.检查程序执行的结果是否正确。
本文档为【IBM-PC汇编语言程序设计实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
正方体
暂无简介~
格式:doc
大小:5MB
软件:Word
页数:36
分类:成人教育
上传时间:2022-03-31
浏览量:1