您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > PC汇编语言实验报告
实验报告实验课程:IBM-PC汇编语言程序设计学生姓名:学号:专业班级:2011年12月15日汇编语言实验指导前言汇编语言是计算机专业的一门重要的专业基础课,主要介绍汇编语言程序设计的基本原理和方法。汇编语言是一门理论性和实践性较强的课程,辅助课堂教学的实验有助于帮助学生理解汇编语言的基本原理,锻炼学生的动手能力,提高学生的综合应用知识的能力。本实验指导按照汇编语言程序设计的教学大纲要求编写。依据循序渐进、由浅入深的规律,通过实例复习巩固所学知识,借助实例开展汇编语言程序设计。通过这种既具有构造性又具有创造性的学习活动,更便于初学者的理解和掌握,通过上机实验,并在实验后完成实验报告,又能进一步加深和拓宽所学知识。为了帮助老师和学生开展实验,我们特编了这本实验指导,希望能对我校的《汇编语言》教学工作有所帮助。本实验指导所有实例均在PC机上调试通过。目录(1)利用DEBUG调试汇编语言程序段(2)初级程序的编写与调试实验(一)(3)初级程序的编写与调试实验(二)(4)汇编语言程序上机过程(5)分支程序实验(6)循环程序实验(7)子程序实验实验1利用DEBUG调试汇编语言程序段一.实验目的1.熟悉DEBUG有关命令的使用方法;2.利用DEBUG掌握有关指令的功能;3.利用DEBUG运行简单的程序段。二.实验内容1.进入和退出DEBUG程序;1)开始—运行,输入cmd,点确定进入命令窗口2)在命令窗口中输入dubug进入debug程序3)进入debug窗口后,输入q命令退出debug2.学会DEBUG中的1)D命令(显示内存数据D段地址:偏移地址)例1:-D100;显示DS段,0100开始的128个字节内容说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。①DSEGREG[起始地址][L长度];显示SEGREG段中(缺省内默认为DS),以[起始地址](缺省内为当前的偏移地址),开始的[L长度](缺省内默认为128)个字节的内容.②DSEGREG[段地址:偏移地址];显示SEGREG段中(缺省内默认为DS),[段地址:偏移地址]开始的[L长度](缺省内默认为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命令(修改指定内存)例1:-E1004142434448474645-D100,L08结果:08F1:01004142434448474645例2:-E100:08F1:01007642:42是操作员键入此命令是将原100号内存内容76修改为42,用D命令可察看。①E地址;从指定地址开始,修改(或连续修改)存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。②E地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。-EDS:100F3‘AB’8D;把DS段中0100H开始的四个字节修改为F3‘AB’(A和B的ASCII码)8D也可以按下面的方式实现3)R命令(显示当前寄存器的内容)显示修改寄存器命令RR;★显示所有寄存器和标志位状态;★显示当前CS:IP指向的指令。显示标志时使用的符号:标志标志=1标志=0OFOVNVDFDNUPIFEIDISFNGPLZFZRNZAFACNAPFPEPOCFCYNC4)T命令(设置陷井,单步执行)①T;从当前IP开始执行一条指令。②T数值;从当前IP开始执行多条指令,数值:执行的指令条数。②T=地址;从给定的地址执行一条指令③T=地址数值;从给定的地址执行多条指令,数值:执行的指令条数.-T;从当前IP开始执行一条指令-T5;从当前IP开始执行5条指令-T=1005;从当前0100H开始执行5条指令5)A命令(将指令直接汇编成机器码输入到内存中。)汇编命令AA[地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP开始(通常是CS:100)。注释:①在DEBUG下编写简单程序即使用A命令。②每条指令后要按回车。③不输入指令按回车,或按Ctrl+C结束汇编。④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。使用A命令在0100H开始输入指令movax,10inccxmovbl,al单步执行上述指令6)G命令等的使用(执行A命中输入的汇编指令)运行程序命令G①G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT3。②G=地址;从指定地址开始执行程序,直到程序结束或遇到INT3。③G断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。④G=地址断点1[,断点2,…断点10]-G;从CS:IP指向的指令开始执行程序。-G=100;从指定地址开始执行程序。-G=100105110120使用A命令在0100H开始输入指令movax,10inccxmovbl,alint3然后使用g命令执行上面的例子设断点在100H处然后用T命令单步执行3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。三.实验要求仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;四.实验环境PC微机DOS操作系统或Windows操作系统MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境五.实验步骤用DEBUG验证乘法、除法、加法、减法带进位加、带借位减、堆栈操作指令、串操作指令的功能:1.验证加法和带进位加,使用A命令,在DEBUG中键入以下代码:movax,f111movbx,f222movcx,2movdx,3addax,bxadccx,dx使用G命令查看结果2.验证减法和带借位减法,使用A命令,在DEBUG中键入以下代码:movax,2movbx,3movcx,5movdx,2subax,bxsbbcx,dx使用G命令查看结果3.验证乘法和除法,使用A命令,在DEBUG中键入以下代码:乘法:moval,b4movbl,11mulbl使用G命令查看结果除法:movax,400movbl,b4divbl使用G命令查看结果4.验证堆栈操作指令,使用A命令,在DEBUG中键入以下代码:movax,1111pushaxmovax,2222使用G命令查看结果后在使用A命令,在DEBUG中键入以下代码:popax使用G命令查看结果5.验证串操作指令,使用A命令,在DEBUG中键入以下代码:org1000db‘hello’movsi,1000movdi,1500movcx,5cldrepmovsb使用G命令查看结果六.实验报告要求1.如何启动和退出DEBUG程序;2.整理每个DEBUG命令使用的方法,实际示例及执行结果。七.思考题启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?答:进入DOS,输入DEBUGxxx.exe,其中xxx为文件名。实验2初级程序的编写与调试实验(一)一.实验目的1.进一步熟悉DEBUG命令;2.掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;3.熟悉数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;4.掌握简单的汇编语言程序编写与调试。二.实验内容1.内存操作数及各种寻址方式使用;2.求累加和程序;3.多字节加法程序;4.数据串搬家程序;5.段寄存器概念及字符串传送指令练习。三.实验要求1.仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子;2.阅读数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP的内容;3.用DEBUG的有关命令调试本实验中的求累加和程序、多字节加法程序、数据串搬家程序段。四.实验环境PC微机;DOS操作系统或Windows操作系统;MASM.EXE,LINK.EXE,DEBUG.COM或宏汇编集成环境。五.实验步骤1.内存操作数及各种寻址方式使用MOVAX,1234MOV[1000],AXMOVBX,1002MOVBYTEPTR[BX],20MOVDL,39INCBXMOV[BX],DLDECDLMOVSI,3MOV[BX+SI],DLMOV[BX+SI+1],DLMOVWORDPTR[BX+SI+2],2846步骤:(1)用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步骤:(1)用命令键入此程序(2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。分步计算并得到结果,如下图所示:4.数据串搬家程序(1)用A命令键入下列程序:MOVSI,1000MOVDI,2000MOVCX,0FLOP:MOVAL,[SI]MOV[DI],ALINCSIINCDILOOPLOPINT20(2)用A命令DB伪指令在1000H键入下列字符串:‘IBM_PCCOMPUTER'(3)用G命令运行此程序,并用D命令检查目的地址处的字符与源串a是否一致。5.段寄存器概念及字符串传送指令练习(1)用A命令键入下列程序:MOVSI,0MOVDI,0MOVAX,1000MOVDS,AXMOVAX,1500MOVES,AXMOVCX,0FCLDREPMOVSBINT20(2)用A命令DB伪指令在1000:0000处键入字符串'IBM_PCCOMPUTER',并用D命检查之(3)用D命令检查0F00:1000处内容,看是否一样。为什么?(4)用G命令运行此程序,检查目的地址1500:0000处内容。并记下DS与ES值。(5)修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址(是多少?)仍和原来一样。6.自编程序用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并
本文标题:PC汇编语言实验报告
链接地址:https://www.777doc.com/doc-3351349 .html