资源描述:
《北京工业大学 微机原理 实验二 熟悉汇编程序建立及其调试方式 实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、微机原理实验报告——实验二熟悉汇编程序建立及其调试方式姓名:学号:8一、实验目的1.熟悉汇编语言源程序的框架结构,学会编制汇编程序。2.熟悉汇编语言上机操作的过程,学会汇编程序调试方法。二、实验内容1.学习编写汇编语言源程序的方法,了解数据存放格式。2.阅读给出的程序,找出程序中的错误。3.通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立、汇编、链接、调试、修改和运行等全过程。(一)修改后的程序:STACKSG:SEGMENTPARASTACK‘STACK’;不能有冒号DB256DUP(?)STACKSGENDSDATASG:SE
2、GMENTPARA‘DATA’;不能有冒号BLOCKDW0,-5,8,256,-128,96,100,3,45,6,512DW23,56,420,75,0,-1024,-67,39,-2000COUNTEQU20MAXDW?DATASGENDSCODESG:SEGMENT;不能有冒号ASSUMESS:STACKSG,CS:CODESGASSUMEDS:DATASGORG100HBEGINMOVDS,DATASG;BEGIN:应改为MOVAX,DATASGMOVDS,AXLEASI,BLOCKMOVCX,COUNTDECCXMOVAX,[SI
3、]CHKMAXADDSI,2;应加冒号CHKMAX:CMP[SI],AXJLENEXTMOVAX,[SI]DECCX;删除NEXT:LOOPCHKMAXMOVMAX,AXMOVAH,4CHINT21HCODESGENDSENDBEGIN8(一)程序注解STACKSGSEGMENTPARASTACK'STACK'DB256DUP(?)STACKSGENDS;定义堆栈段DATASGSEGMENTPARA'DATA';数据段定义BLOCKDW0,-5,8,256,-128,96,100,3,45,6,512DW23,56,420,75,0,-10
4、24,-67,39,-2000;定义变量BLOCK包含20个字COUNTEQU20;COUNT=20MAXDW?;定义字变量MAX并不赋值DATASGENDSCODESGSEGMENT;代码段定义ASSUMESS:STACKSG,CS:CODESG;说明STACKSG是堆栈段ASSUMEDS:DATASG;CODESG是代码段,DATASG是数据段ORG100HBEGIN:MOVAX,DATASGMOVDS,AX;DS指向DATASGLEASI,BLOCK;取BLOCK的有效地址给SIMOVCX,COUNT;CX=20DECCX;CX=CX
5、-1MOVAX,[SI];将DS:[SI]里的值送到AXCHKMAX:ADDSI,2;SI=SI+2CMP[SI],AX;比较DS:[SI]与AX值的大小JLENEXT;如果DS:[SI]的值小于AX里的值,则跳转到NEXTMOVAX,[SI];将DS:[SI]的值送到AXNEXT:LOOPCHKMAX;循环CHKMAXMOVMAX,AX;将AX的值送到变量MAXMOVAH,4CH;结束INT21HCODESGENDSENDBEGIN(三)程序功能:找出20个数中的最大值并保存。8(一)流程图开始从内存取数SI=SI+2[SI]>AX??Y
6、AX=[SI]NCX减1CX=0??NY保存最大值结束8(一)实验步骤1、建立汇编语言源程序,编译、链接、建立成可执行文件2、运行DEBUG调试程序,装入别调试程序,用U命令查看调入的程序3、用R命令查看当前寄存器内容代码段段基址:19E2数据段段基址:19BFAX=0000BX=0000CX=0548DX=0000SP=0100BP=0000SI=0000DI=0000DS=19BFES=19BFSS=19E2CS=19E2IP=01004、用D命令查看并记录下内存中数据存放格式跳转到G011D执行到MOVAH,4C再执行D命令:DDS:
7、029查看数据段内的存储内容8从这里可以看出存入的20个数字5、用T命令但不运行程序,观察各条指令执行结果,以及对寄存器,标志位,内存单元的影响,若找出程序中的错误,用Q命令退出DEBUG环境,修改汇编语言源程序,重复上述步骤,直至整个程序无误。6、若将LEASI,BLOCK语句改为LEASI,BLOCK+2*COUNT-2,并将ADDSI,2改为SUBSI,2,,重新运行程序观察结果:和之前的结果一样。87、若重新给出一组数据,可用E命令输入新数据后运行程序,观察并记录运行结果。8、若要求找出数据区中最小数,程序将如何修改,试上机调试。将
8、JLENEXT改为JGENEXT实验结果如下:一、实验习题与思考1.在装入被调试程序后,如何知道分配给该用户程序的数据段在内存中的位置?答:在DEBUG环境中用R命令2.数据区以