微机原理及接口技术实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

....页脚.实验一DEBUG命令及其基本操作一.实验目的:1.熟练掌握DEBUG的常用命令,学会用DEBUG来调试程序。2.深入了解数据在存储器中的存取方法,了解堆栈中数据的压入与弹出方法。3.掌握各种寻址方法,了解简单指令的执行过程。二、实验容:1.打开计算机,在WINXP操作系统下,点击“开始”,选择“运行”,在“打开”一栏中输入“debug”,运行DEBUG应用程序,将出现DEBUG的提示符“-”。2.在DEBUG提示符后键入字母“-a100”,回车后,屏幕上就会出现下面类似的容:(具体到每个计算机所产生的段地址和偏移地址可能有所不同)这表示在地址1383:0100处,DEBUG等待用户键入程序助记符,下面键入程序:3.在DEBUG的提示符后键入G,这是执行程序的命令,然后回车,就可以看到结果了。4.现在让我们用“d”命令来看一下存储器在100H~107H这8个单元,程序覆盖了原来的容,右边的字符是组成程序的ASCII码等价字符,圆点表示不可显示字符。5.下面我们用反汇编命令来查看一下所键入的程序。“U”命令的格式是“U起始地址,终止地址”,即把起始地址到终止地址之间的十六进制码反汇编成汇编语言助记符语句。键入:大家在屏幕上不仅可以看到地址和助记符,而且还可以看到与汇编语言等价的机器语言。6.现在我们修改存储单元的容,看看显示情况和变化。我们看到显示的结果发生了变化,这是因为DOS的2号功能调用是显示输入数据的ASCII码字符。7.下面我们给程序命名并存盘。在键入“n”后紧跟程序名及扩展名....页脚.因为文件的字节数必须事先放在BX和CX中,其中BX保存高16位,CX保存低16位,整个32位的数保存文件的字节数,一般来说,BX设置为0,因为CX可存放的字节数为64K,对于一般的程序已足够了。8.结束后可用Q命令退出DEBUG程序。三、实验习题1.写出完成下列功能的指令序列(1)传送20H到AL寄存器(2)将(AL)*2(3)传送25H到BL寄存器(4)(AL)*(BL)问最后的结果(AX)=?单步执行结果:2.分别写出完成下列指令要求的指令:(1)将BX的低4位清零;(2)将AX的高4位置1;(3)将DX的低4位取反;(4)将CX的中间八位清零;(5)将AX中与BX中的对应位不相同的位均置1.....页脚.解答:(1)andbx,fff0。设bx=c4b5,则运行结果(2)orax,f000。设ax=c4b5,则运行结果(3)xordx,000f。设dx=c4b5,则运行结果(4)andcx,f00f。设cx=c4b5,则运行结果(5)xorax,bx。设ax=c4b5,bx=5229,则....页脚.运行结果3.上机运行下面指令序列,分析运行后(AX)=?MOVAX,4312MOVCL,8SARAL,CLDECAXMOVCX,8MULCX运行结果4.设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~305H连续单元装入0AH,0BH,0CH,0DH,0EH,0FH。在DEBUG状态下送入下面的程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的容是什么?程序清单如下:....页脚.MOVAX,BXMOVAX,0304HMOVAX,[0304H]MOVAX,[BX]MOVAX,0001[BX]MOVAX,[BX][SI]MOVAX,0001[BX][SI]....页脚.实验二简单程序设计一、实验目的:1.进一步熟悉DEBUG常用命令及使用2.掌握编写汇编语言源程序的基本方法和基本框架3.学习设计顺序结构程序,学会使用DEBUG命令调试程序和查看结果。二、实验容:1.开机后,解压clab文件,打开clab.exe,然后进入MASM子目录。2.在MASM子目录下进入EDIT编辑环境,编写汇编语言源程序。3.源程序编写完后,保存源程序4.在NASM子目录中利用MASM.EXE汇编程序对源程序进行汇编和编译。当源程序中无语法错误时,则在当前工作目录下自动生成一个.OBJ文件,即目标代码文件。5.若源程序有语法错误时,会出现错误提示信息。例如:××Warningerrors(警告错误)××Severeerrors(严重错误)若存在严重错误时,则无法生成.OBJ文件,需回到编辑状态下修改源程序,直到错误数为零为止。6.当源程序编译通过后,在MASM目录下,我们利用连接程序LINK.EXE对一个或多个目标文件进行编译连接,生成可执行文件(*.EXE)7.最后利用DEBUG命令对汇编程序进行调试并查看结果。8.编程:求两个数的平均值。这两个数分别方程在X单元和Y单元中,而平均值放在Z单元中。即Z=(X+Y)/2参考程序如下:DATASEGMENTXDB2YDB6ZDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:手工编写的源程序汇编语言源文件(.asm)机器语言目标文件(.obj)机器语言执行文件(.exe)编辑程序编辑汇编程序汇编连接程序连接....页脚.MOVAX,DATAMOVDS,AXMOVAL,XMOVAH,0ADDAL,YADCAH,0MOVBL,2DIVBLMOVZ,ALMOVAH,4CHINT21HCODEENDSENDSTART9.输入下面源程序,并对程序进行汇编、连接、调试并说明程序的功能。DATASEGMENTNUMBERDW0168HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAORG0100HSTART:MOVAX,DATAMOVDS,AXMOVDX,0MOVBX,0001HMOVDI,8000HMOVSI,0MOVAX,NUMBERMOVCX,16....页脚.NEXT:TESTAX,BXJZCONTINUEORDX,DIINCSICONTINUE:ROLBX,1RORDI,1LOOPNEXTMOVAH,4CHINT21HCODEENDSENDSTART三、实验习题1.编写程序:求1+2+3+……+100的和DATASEGMENTRESULTDW?;存放和DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,1;从1开始加MOVRESULT,0;和的初值赋0MOVCX,100;循环100次NEXT:ADDRESULT,AX;每次向和中累加AXINCAX;然后AX加1LOOPNEXTMOVBX,RESULT....页脚.MOVAX,4C00H;结束程序INT21HCODEENDSENDSTART2.在存中以tab为首的地方存有1—9的立方值,从键盘输入某一数字(1—9),将该数存入X单元,立方值送入XXX单元中。datasegmentinputdb'pleaseinputx(0~9):$'tabdw0,1,8,27,64,125,216,343,512,729xdb?xxxdw?dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,offsetinputmovah,9int21hmovah,1int21handal,0fhmovx,aladdal,almovbl,almovbh,0movax,tab[bx]movxxx,ax....页脚.movah,4chint21hcodeendsendstart

1 / 10
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功