您好,欢迎访问三七文档
1微机原理实验内容实验一上机方法及寻址方式练习一.实验目的1.学习汇编语言上机方法。2.深入了解DEBUG动态调试软件的应用,掌握下列命令的使用方法:U反汇编G运行程序D显示内存内容R显示╱修改寄存器内容E修改内存内容T单步执行命令Q返回DOS3.实际感受段地址,偏移地址,存储器组织及CPU寄存器等概念。4.掌握8086/8088的主要寻址方式。二.实验任务一双字相加把内存字单元DATA1和DATA2中的两个数相加(例如123456H+456789H),结果存入SUM单元。此程序的功能很简单,目的是为了通过该例掌握上机过程和实验方法。首先,对书写好的源程序进行编辑,汇编及连接,生成可执行的EXE文件。然后对EXE文件进行动态调试,排除错误,最终形成一个完全正确的程序。1.建立源程序.ASM为了使大家对标准汇编语言程序结构有一个了解,并牢固掌握DEBUG调试程序的应用。在这里给出上面实验任务的程序清单。程序1是一个标准的汇编语言程序,共有三个段:数据段、堆栈段及代码段,在以后的编程中可以仿照这一结构。程序1:双字相加DATASEGMENT;definedatasegmentDATA1DW1234HDATA2DW5678HSUMDW?DATAENDSSTACKSEGMENTPARASTACK‘STACK’;definestacksegmentDW100DUP(?)TOPLABELWORDSTACKENDSCODESEGMENT;definecodesegmentASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATA;setDSregistertocurrentdatasegmentMOVDS,AXMOVAX,STACK;setupstackSSandSPregistMOVSS,AXMOVSP,OFFSETTOPMOVAX,DATA1ADDAX,DATA2MOVSUM,AXMOVAH,4CH;returntoDOSINT21HCODEENDS;endofcodesegmentENDSTART;endassembly22.汇编生成.OBJ文件对.ASM文件进行汇编,生成目标文件.OBJ。汇编结束时会显示警告错误的个数(WarningErrors)和严重错误的个数(SevereErrors),这两种错误属于.ASM文件中的语法性错误。若出现错误应对源文件(.ASM文件)进行修改,修改之后再进行汇编直至错误数为零时方可进行下一步操作。3.连接生成.EXE文件连接后生成.EXE可执行文件。4.利用DEBUG命令对.EXE文件进行调试DEBUG是DOS提供的一种调试软件。它可用于检查修改存储单元的内容,装载及运行用户程序。进入DEBUG后其状态提示符为一短横线“―”,在此状态下可用各种命令对.EXE进行操作。下面是DEBUG的主要命令。(1)对.EXE文件进行反汇编—U命令U命令格式一:―UCS:0000↙1501:0000B8F314MOVAX,14F3.....上述命令从CS段,偏移地址为0000的单元开始反汇编32个字节。在以上的反汇编清单中,最左一列是代码段的段地址值,第二列是各指令的偏移地址值(指令的起始地址),然后依次是指令的机器码与助记符。U命令格式二:―U↙在32个字节的指令代码反汇编完之后,可再次使用U命令对后续代码进行反汇编,在此,U命令之后省略了地址,则从上一个U命令的最后一条指令的下一个字节开始反汇编32个字节。可反复使用上述两种U命令格式,将原程序清单与反汇编清单进行对比分析,然后回答下列问题:问题1:.EXE装入内存后,其数据段的段地址是。在未运行.EXE程序前,数据段的段地址是否已装入到DS寄存器中?(请选择回答:是/否)。问题2:反汇编清单中倒数第一行(按实际显示行计算)是不是.EXE程序中的有效指令?(请选择:是/不是)。(2)检查RAM区中的数据—D命令D命令格式:―D数据段段地址:偏移地址(0000)D命令从给定地址开始连续显示内存单元中的数据,每行显示16个字节,每行的显示格式为段地址:偏移地址16个字节数据及各字节数据所对应的ASCII码字符。若D命令中没有给出地址,则从上一个D命令所显示的最后一个字节的下一个字节开始显示。合理使用U命令和D命令,分析所显示的信息并填写表1-1。(3)运行程序—G命令G命令格式:―G=CS:0000断点地址↙CPU从CS段,0000单元开始连续执行指令,当遇到断点时便会停止执行。用G命令执行完程序后再使用D命令显示内存单元的内容,填写表1-2中各项数据和运行结果,并分析结果是否正确。(4)检查寄存器内容—R命令3―RR命令会显示/修改CPU所有寄存器的内容,并给出程序执行后各标志位的当前状态。在此,不再列出执行情况。请用R命令显示CPU寄存器的内容,填写表1-3。(5)修改内存单元内容—E命令①不连续修改内存单元内容,命令格式如下:―E1500:0000↙设显示1500H:0000H单元内容为:1500:000024.―如果需要修改该单元内容可以由键盘输入数据,按空格则显示/修改下一单元的内容。例如:把1500H:0000H单元的24H内容修改成(注意,在DEBUG中显示的地址码﹑数据均默认为十六进制形式)78H,其操作如下:1500:000024.7836.―其中36H为1500H:0001H单元的内容。用户可以不断修改相继单元的内容,若某一字节无需修改可用空格键跳过,直到用回车结束该命令为止。②修改连续单元的内容。命令格式为:―E1500:00001234‘123’该命令将12H、34H、31H(‘1’的ASCII码)32H、33H存放到从1500:0000开始的连续单元中去。现在要求用E命令按表1-4中给出的数据修改DATA1和DATA2单元的内容,然后用G命令运行程序,填写表1-4的SUM栏。(6)单步执行命令—T命令使用T命令之前,先使用G命令执行程序,使程序暂停在断点处,然后可以使用T命令单步执行指令,其命令格式为:―T↙其功能是从当前的CS:IP处执行一条指令后暂停,自动显示各寄存器的内容、标志位的状态并给出下一次将要执行的指令地址及代码。注意,对REI指令、中断指令、DOS功能调用指令等不能用T命令单步执行。请用T命令单步执行程序,一次执行一条指令,注意观察各寄存器如AX、IP等的变化情况。(7)退出DEBUG—Q命令―Q↙Q命令后退出DEBUG,返回DOS。三.实验任务二:寻址方式练习下列程序用于练习8086/8088的立即寻址﹑寄存器寻址﹑直接寻址﹑寄存器间接寻址﹑寄存器相对寻址等七种寻址方式,为了方便调试程序,程序清单的代码段中给出了指令的行号,输入程序时请不要输入行号。程序清单如下:DATA1SEGMENTM1DB0A0H,0A1H,0A2H,0A3H,0A4H,0A5H,0A6H,0A7HM2DB0A8H,0A9HDATA1ENDSDATA2SEGMENTN1DB0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7HN2DB0B8H,0B9H4DATA2ENDSSTACKSEGMENTPARASTACK‘STACK’DB0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7HDB0C8H,0C9HDW100DUP(?)TOPLABELWORDSTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA1,ES:DATA2,SS:STACK1START:MOVAX,DATA12MOVDS,AX3MOVAX,DATA24MOVES,AX5MOVAX,STACK6MOVSS,AX7MOVSP,OFFSETTOP8MOVSI,0001H9MOVDI,0002H10MOVBP,0003H11MOVBX,0004H12MOVAL,10013MOVAL,BL14MOVAL,M115MOVAL,[BX]16MOVAL,ES:[BX]17MOVAL,[BP]18MOVAL,[BX+05H]19MOVAL,M1[BX]20MOVAL,ES:N1[BX]21MOVAL,[BX][SI]22MOVAL,M1[BX][SI]23MOVAL,N1[BX][DI]24MOVAL,[BP][DI]25MOVAH,4CH26INT21HCODEENDSENDSTART1.建立源程序,然后汇编、连接生成目标文件。2.合理使用DEBUG的U命令和D命令,检查RAM区中的数据,分析所显示的信息并填写表1-5。3.利用U命令对.EXE文件进行反汇编,分析反汇编清单,从第12条指令开始把每条指令的偏移地址填入表1-6的“指令的偏移地址”一栏中。4.利用T命令从第12条指令开始单步执行程序,每执行一条指令填写表1-6中对应行的其它栏(“SRC寻址方式”、“SRC的地址”、及“AL之值”)。5实验数据记录页实验一上机方法及寻址方式练习姓名:学号:实验室门牌号:实验桌号:表1-1数据存储情况标号(变量名)段地址偏移地址内存中的内容DATA1DATA2SUM表1-2运行结果标号(变量名)段地址偏移量内存中的内容DATA1DATA2SUM表1-3有关寄存器内容寄存器名CSDSIPAXBXCXSIDI内容表1-4另一组实验数据及运行结果标号(变量名)段地址偏移量内存中的内容DATA1(你学号的前4位)DATA2(你学号的最后4位)SUM6表1-5各段的数据分配情况DATA1区地址与数据DATA2区地址与数据STACK区地址与数据段地址偏移地址数据段地址偏移地址数据段地址偏移地址数据0000H0000H0000H0001H0001H0001H0002H0002H0002H0003H0003H0003H0004H0004H0004H0005H0005H0005H0006H0006H0006H0007H0007H0007H0008H0008H0008H0009H0009H0009H表1-6指令地址及执行情况行号指令指令的偏移地址SRC的寻址方式SRC的偏移地址指令执行后AL之值12MOVAL,10013MOVAL,BL14MOVAL,M115MOVAL,[BX]16MOVAL,ES:[BX]17MOVAL,[BP]18MOVAL,[BX+05H]19MOVAL,M2[BX]20MOVAL,ES:N2[BX]21MOVAL,[BX][SI]22MOVAL,M2[BX][SI]23MOVAL,N2[BX][DI]24MOVAL,[BP][DI]注:SRC指源操作数。
本文标题:微机原理实验一
链接地址:https://www.777doc.com/doc-2435669 .html