您好,欢迎访问三七文档
合肥工业大学计算机与信息学院实验报告课程:汇编语言程序设计专业班级:学号:姓名:实验一Debug程序的使用一.实验目的1、熟悉DEBUG程序中的命令,学会在DEBUG下调试运行汇编语言源程序。2、掌握8086/8088的寻址方式及多字节数据的处理方法。二.实验内容1、利用DEBUG程序中的“E”命令,将两个多字节数“003F1AE7H”和“006BE5C4H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。2、分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。要求:本次实验的内容均在DEBUG下完成,实现数据的装入、修改、显示;汇编语言程序段的编辑、汇编和反汇编;程序的运行和结果检查。三.实验过程和程序1、启动DOS操作系统2、运行DEBUG.COM程序(若当前盘为C)C:>DEBUG↙–;(“–”为DEBUG提示符,仅当屏幕出现该提示符后,才可输入DEBUG命令)3、用“A”命令编辑和汇编源程序-A136C:0100MOVAX,[0200]136C:0103MOVBX,[0202]136C:0107ADDAX,[0204]136C:010BADCBX,[0206]136C:010FMOV[0208],AX136C:0112MOV[020A],BX136C:01164、用“U”命令反汇编验证源程序-UCS:0100136C:0100A10002MOVAX,[0200]136C:01038B1E0202MOVBX,[0202]136C:010703060402ADDAX,[0204]136C:010B131E0602ADCBX,[0206]136C:010FA30802MOV[0208],AX136C:0112891E0A02MOV[020A],BX136C:01160000ADD[BX+SI],AL136C:01180000ADD[BX+SI],AL136C:011A0000ADD[BX+SI],AL136C:011C3400XORAL,00136C:011E5BPOPBX136C:011F1300ADCAX,[BX+SI]-5、程序未执行前,用“R”命令观察,相关寄存器的内容。–R↙如:(AX)=0000,(BX)=0000,(SI)=0000,(DI)=0000,(CS)=136C,(IP)=0100。6、在程序未执行前,用“D”命令观察DS:0200H,DS:0204H、DS:0208H单元的内容–D20020B↙7、用“G”命令运行源程序–G=01000116↙8、再用“D”命令观察DS:0200H~DS:020BH字节单元中的内容–D20020B↙9、用“T”单步操作命令对源程序单步执行,观察AX、BX、CS、IP寄存器内容的变化,并与预计的结果相比较。四.实验结果(包括必要的截图)1-4截图5-9截图实验结果分析1、程序运行结果:(AX)=00AB,(BX)=00ABDS:0208H四字节单元的内容:2、试用寄存器间接寻址方式编写程序段,完成上述程序段的功能。(参考下列程序流程图)SI←200HDI←204HBX←208HAX←[SI]DX←[SI+2]AX←AX+[DI]DX←DX+[DI+2][BX]←(AX)[BX+2]←(DX)开始结束附加题1.从DS:0000H开始的5个16位带符号数分别记为x,y,z,v,w,用E命令初始化为:540,1,-1,1080,0,试求w=(v-(x*y+z-540))/x-E00001C020100FF003804-D00001361:00001C020100FF003804-1DF04F03C50D8A031361:0010C50D1703C50D1104-0101010002FFFFFF1361:0020FFFFFFFFFFFFFFFF-FFFFFFFF7C0D4E011361:00308512140018006113-FFFFFFFF000000001361:00400500000000000000-00000000000000001361:0050CD21CB0000000000-00000000002020201361:00602020202020202020-00000000002020201361:00702020202020202020-0000000000000000-A1361:0100MOVAX,[0000]1361:0103MOVBX,[0002]1361:0107IMULBX1361:0109ADDAX,[0004]1361:010DADCDX,00001361:0110SUBAX,21C1361:0113SBBDX,00001361:0116MOVCX,AX1361:0118MOVBX,DX1361:011AMOVAX,[0006]1361:011DMOVDX,00001361:0120SUBAX,CX1361:0122SBBDX,BX1361:0124MOVBX,[0000]1361:0128IDIVBX1361:012A-G=0100012AAX=0001BX=021CCX=00FFDX=011DSP=FFEEBP=0000SI=0000DI=0000DS=1361ES=1361SS=1361CS=1361IP=012ANVUPEIPLZRNAPENC1361:012A0000ADD[BX+SI],ALDS:021C=00-五、实验体会1.DEBUG约定在其命令或源程序中所涉及到的数据均被看作十六进制数,其后不用“H”说明。2.在DEBUG下,源程序中不能使用“标号”、“变量”和一些伪指令。3.在DEBUG下,大小写不敏感。4.使用DEBUG进行实验,非常麻烦。实验二汇编语言程序设计(顺序、循环)一.实验目的1、掌握顺序和循环程序结构和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。二.实验内容1、X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:①计算表达式值(V–(X*Y+Z-720))/X;②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。2、求一个班50名学生成绩的平均值(附加题:最大值和最小值,并将结果显示出来)3、从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串(附加题:查找中间是否有‘asm’子串。如果有,输出‘Yes’;否则,输出‘No’)。三.实验过程和程序1.DATASEGMENTXDW45YDW67ZDW89VDW12SUM1DW?SUM2DW?DATAEDNSCODESEGMENTASSUMEDS:DATA,CS:CODESTART:MOVAX,DATAMOVDS,AXMOVAX,XMOVBX,YIMULBXMOVBX,ZADDAX,BXADCDX,0MOVBX,720SUBAX,BXSBBDX,0MOVBX,AXMOVCX,DXMOVAX,VCWDSUBAX,BXSBBDX,CXMOVBX,XIDIVBXMOVSUM1,AXMOVSUM2,DXMOVAH,4CHINT21HCODEENDSENDSTART2.DATASEGMENTGRADEDW10DUP(55,65,75,85,95)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,50MOVBX,0MOVAX,0AGAIN:ADDAX,GRADE[BX]INCBXINCBXLOOPAGAINMOVBX,50DIVBXMOVAH,4CHINT21HCODEENDSENDSTART3.LENEQU51DATASEGMENTSTRINGDBLEN,?,LENDUP(?)LFDB0AHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,STRINGMOVAH,0AHINT21HMOVDL,LFMOVAH,2INT21HMOVCL,STRING[1]MOVCH,0LEABX,STRING[2]ADDBX,CXMOVBYTEPTR[BX],'$'LEADX,STRING[2]MOVAH,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTART四、实验结果(包括必要的截图)1.2.3.四.实验体会1.通过实验,掌握了masm下的汇编格式,运行和调试的主要过程:masm1.txtlink1.objdebug1.exe;2.在第一个实验中,需要注意,如果数的类型不同,需要进行扩展,而且在masm中,数默认为十进制,而在debug环境下,数默认为是十六进制的;3.在第二个实验中,需要掌握循环程序设计的方法;4.在第三个实验中,需要注意串的操作指令,注意当题目给定字符串不超过50时,应当LENEQU51,这样程序才能正确运行。实验三汇编语言子程序设计(分支、子程序)一.实验目的1、掌握分支和子程序结构和设计方法;2、熟悉在PC机上建立、汇编、连接、调试和运行8086/8088汇编语言程序的过程。3、通过汇编语言了解高级语言的参数传递等知识。二.实验内容1.BL中的只有一位为1。编写程序测试,并输出提示信息“TheXBitis1”,要求:地址表和转移表。2.编写一个子程序计算z=f(x,y)=x*y+x-y(x,y,z有符号数内存数)。要求通过堆栈(寄存器、内存)传送所有参数。三.实验过程和程序1.地址表Datasegment;AddTdwL0,L1,L2,L3,L4,L5,L6,L7S0db'The0Bitis1$'S1db'The1Bitis1$'S2db'The2Bitis1$'S3db'The3Bitis1$'S4db'The4Bitis1$'S5db'The5Bitis1$'S6db'The6Bitis1$'S7db'The7Bitis1$'Serrordb'NOBITis1$'DataendsCodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovbl,01000000Bcmpbl,0jnznextjmperrornext:movsi,0movcx,8Again:shrbl,1JcSwitchincsiloopAgainSwitch:movBx,sishlsi,1addsi,Bxaddsi,offsetJMPTablejmpsiJMPTable:JMPL0JMPL1JMPL2JMPL3JMPL4JMPL5JMPL6JMPL7org$+80HL0:movdx,offsetS0movah,9int21hjmpexitL1:movdx,offsetS1movah,9int21hjmpexitL2:movdx,offsetS2movah,9int21hjmpexitL3:movdx,offsetS3movah,9int21hjmpexitL4:movdx,offsetS4movah,9int21hjmpexitL5:movdx,offsetS5movah,9int21hjmpexitL6:movdx,offsetS6movah,9int21hjmpexitL7:movdx,offsetS7movah,9int21hjmpexiterror:movdx,offsetSerrormovah,9int21hexit:movah,4chint21hCodeendsendstart转移表:DATASEGMENTS0DB'The0bitis1',0AH,0DH,'$'S1DB'The1bitis1',0AH,0DH,'$'S2DB'The2bitis1',0AH,0DH,'$'S3DB'The3bitis1',0AH,0DH,'$'S4DB'The4bi
本文标题:汇编语言实验报告
链接地址:https://www.777doc.com/doc-2279428 .html