微机原理实验指导书.doc_第1页
微机原理实验指导书.doc_第2页
微机原理实验指导书.doc_第3页
微机原理实验指导书.doc_第4页
微机原理实验指导书.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理实 验 教 学 指 导 书撰写人:刘院英审核人:孙立辉河北经贸大学信息技术学院2009年11月30日前 言一、 实验总体目标通过一系列使用80x86汇编语言的实验练习,把汇编语言程序设计的概念和理论知识融入到实践当中。一方面加深对汇编语言程序设计的认识和理解,另外一方面为后续的微机接口课程的学习和实验奠定坚实的理论基础,培养学生分析问题、解决问题的能力。使学生具有运用现代微机技术进行软、硬件系统开发的能力。二、 适用专业年级本实验指导书适用于计算机专业学生以及电子专业学生三、 先修课程计算机组成原理、C语言程序设计四、 实验环境微型计算机、MASM、LINK、DEBUG五、 实验总体要求1、实验是学习微机原理这门课程的重要环节,实验课请勿迟到,缺席。2、爱护设备,保持清洁,不随意更换设备。3、认真完成实验任务,实验结果经教师检查,教师对实验内容提问,对完成者做记录。4、做硬件实验时,注意断电操作,即所有的接线、改线及拆线操作均应在不带电的状态下进行,严禁带电操作,并注意防止导线堵塞插孔。5、 发生事故,应立即切断电源,并马上向教师报告,检查原因,吸取教训。实验完毕,请整理实验设备,再离开实验室。6、 每次实验后,应递交一份实验报告,报告中应包括下列内容:实验名称、实验人姓名、学号、班级、所用的设备号;实验目的、任务;各任务程序流程图、程序清单(应加适量注释);记录和分析实验结果,回答思考题;根据实验目的认真做总结六、本课程实验的重点、难点及教学方法建议本课程实验的重点是要求学生掌握用指令实现顺序、分支、循环、子程序等程序结构,具备用指令进行汇编语言程序设计的能力。难点是DEBUG调试工具的使用。为了让学生能够正确上机实践,一方面要加大例题的数量。讲授例题的一般过程是分析问题,确定算法,编写流程,用汇编指令编写源程序。这样学生就能从一个个例题中逐渐掌握汇编语言的格式,汇编指令,程序流程,汇编程序设计。另一方面,在教学过程,对于某些难于理解的地方,尽量多利用现代化的多媒体教学手段,以便帮助学生更好地掌握所学知识,例如制作CAI课件,把那些难于理解的部分以直观、动态动画的形式进行演绎,使得学生易于接受和理解。最后,由于计算机技术的飞速发展,硬件集成度的增加,会出现很多新的汇编指令,所以在教学过程中,介绍一些带有新技术标志的指令,使学生了解最新的发展情况,提高学生的学习积极性。19实验一 汇编程序的上机调试操作一、 实验目的1. 熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程;2. 掌握DEBUG 的基本命令及其功能二、 实验要求1、实验前,预习汇编语言上机过程;2、预习DEBUG的基本命令。三、 实验仪器设备和材料清单1、PC机一台2、实验指导书一份四、 实验内容(一)上机实验过程1、编辑源程序,建立一个以后缀为 ASM的文件(程序的扩展名必须是.ASM)。如:C:EDIT SHIYAN1.ASM2、汇编源程序,检查程序有否错误。有错时系统会提示源程序中哪一行有错误,然后回到编辑状态,修改程序中的错误行。无错时继续第3步。C:MASM SHIYAN1.ASMMicrosoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.Obect filename SHIYAN1.OBJ Source listing NUL.LST: Cross-reference NUL.CRF: 50792 + 450136 Bytes symbol space free 0 Warning Errors 0 Severe Errors汇编程序的输入文件是.ASM文件,其输出文件有三个。表示于回答的中间三行。第一行是OBJ文件,这是我们汇编的目的,所以这个文件是我们需要的,对于SHIYAN1.OBJ 后的:可以直接回车,这样就建立了SHIYAN1.OBJ文件,当然也可以另起其它名字。第二个是LST文件,称为列表文件。这个文件同时列出源程序和机器语言程序清单,并给出符号表。这个文件是可有可无的,需要时可以回答文件名,不需要可以直接回车。第三个是CRF文件,用来产生交叉引用表REF,对于一般程序不需要建立此文件,可以直接回车。3、连接目标程序,产生可执行程序。C:LINK SHIYAN1.OBJMicrosoft (R) Overlay Linker Version 3.60Copyright (C) Microsoft Corp 1983-1987. All rights reserved.Run File SHIYAN1.EXE:List File NUL.MAP: Libraries .LIB: Warning:NO STACK segmentThere is 1 error detected.连接程序的输入文件有两个,一个是OBJ文件,一个是LIB文件。LIB是一个库文件,如无特殊需要,直接回车即可。LINK程序有两个输出文件,一个是EXE文件,这个是我们必须的,所以 SHIYAN1.EXE:后面直接回车就生成了可执行文件SHIYAN1.EXE,如果需要修改文件名也可以在冒号后面直接键入;另外一个输出文件是MAP文件,它是连接程序的列表文件,给出了每个段在存储器中的分配情况,可以直接回车。连接程序给出的无堆栈段的警告错误并不影响程序的执行。4、程序的执行在建立了EXE文件后,就可以直接在DOS下执行程序了,如下所示:C:SHIYAN1.EXEC:文件扩展名.EXE可以省略。程序运行后就可以返回DOS。如果程序有显示功能,那么我们可以通过终端得到运行结果。如果程序没有显示功能,那么我们只能通过DEBUG程序得到运行结果。方法如下:C:DEBUG SHIYAN1.EXE用DEBUG程序调试可执行程序,记录数据段的内容。(二)DEBUG命令的使用DEBUG是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。1、DEBUG程序的启动在DOS提示符下,可键入命令:C:DEBUGpath文件名 参数1参数2其中文件名是被调试文件的名称,它须是执行文件(EXE或COM),两个参数是运行被调试文件时所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。在启动DEBUG时,如果输入了文件名,则DEBUG程序把指定文件装入内存。用户可以通过DEBUG的命令对指定文件进行修改、显示和执行。如果没有文件名,则是以当前内存的内容工作,或者用命名命令和装入命令把需要的文件装入内存,然后再用DEBUG的命令进行修改、显示和执行。DOS的提示符不一定是“ C: ”, 可以是其它的形式,请使用者根据具体情况自行确定。2、DEBUG的主要命令(1)汇编命令A格式:Aaddress说明:该命令从指定地址开始输入汇编语句,把它们汇编成机器代码相继存放在从指定地址开始的存储器中。address 是要进行汇编程序(编码)输入的首地址,地址包括段地址和偏移地址,如果省略,则从当前的默认地址开始。如:-a 16D8:020016D8:0200 MOV AH,216D8:0202 MOV AL,116D8:0204 MOV BX,020016D8:0207 MOV CX,000116D8:020A MOV DX,000116D8:020D INT 1316D8:020F INT 316D8:0210-或:-a 16D8:0100 MOV AH,216D8:0102 MOV AL,116D8:0104 MO BX,020016D8:0107 MVO CX,000116D8:010A MOV DX,000116D8:010D INT 1316D8:010F INT 316D8:0110 -系统把操作者在DEBUG调试系统中输入的所有数字均按十六进制数处理(下同)。(2)反汇编命令U格式:Uaddress 或 Urange说明:该命令从指定地址开始,反汇编32个字节,即把机器语言反汇编成汇编语言。显示的格式为:内存地址 指令代码 反汇编的程序代码address 是要反汇编的指令存储单元的首地址,range是要反汇编指令的存储单元的首地址和末地址,均可省略。 如:-u100 11516A7:0100 1E PUSHDS16A7:0101 33C0 XOR AX,AX16A7:0103 50 PUSHAX16A7:0104 B012 MOVAL,1216A7:0106 B90400 MOVCX,000416A7:0109 32DB XORBL,BL16A7:010B D0E0 SHL AL,116A7:010D D0D3 RCLBL,116A7:010F E2FA LOOP010B16A7:0111 B104 MOVCL,0416A7:0113 D2E8 SHRAL,CL16A7:0115 CB RETF若地址省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。这种做法极有可能将内存中的数据垃圾或其它方面的数据也当成指令代码来进行反汇编。如:-u16A7:0100 1E PUSHDS16A7:0101 33C0 XOR AX,AX16A7:0103 50 PUSHAX16A7:0104 B012 MOVAL,1216A7:0106 B90400 MOVCX,000416A7:0109 32DB XORBL,BL16A7:010B D0E0 SHL AL,116A7:010D D0D3 RCLBL,116A7:010F E2FA LOOP010B16A7:0111 B104 MOVCL,0416A7:0113 D2E8 SHRAL,CL 16A7:0115 CB RETF16A7:0116 0101 ADD BX+DI,AX16A7:0118 0201 ADD AL,BX+DI16A7:011A 0000 ADD BX+SI,AL16A7:011C 00FF ADD BH,BH16A7:011E FF01 INCWORD PTR BX+DI-(3)显示存储单元命令D格式:Daddress 或 Drange说明:该命令从指定地址开始,以十六进制显示内存单元内容。显示时屏幕分成三部分,最左边是段地址和起始的偏移地址,中间是每个存储单元的内容,右边是每个存储单元内容对应的ASCII字符。每行显示十六个存储单元内容。address 是要显示的存储单元的首地址,range是要显示的存储单元的首地址和末地址,均可省略。如:-d16D8:012016D8:0120 00 DB D2 D3 E0 03 F0 8E-DA 8B C7 16 C2 B6 01 16 .16D8:0130 C0 16 F8 8E C2 AC 8A D0-00 00 4E AD 8B C8 46 8A .N.F.16D8:0140 C2 24 FE 3C B0 75 05 AC-F3 AA A0 0A EB 06 3C B2 .$.u.6.16D8:01A0 9A CF F0 01 06 02 00 2D-B1 0A 00 BB BB F5 FA 8E .-.或:-d16D8:0100 0F 00 B9 8A FF F3 AE 47-61 03 1F 8B C3 48 12 B1 .Ga.H.16D8:0110 04 8B C6 F7 0A 0A D0 D3-48 DA 2B D0 34 00 C7 16 .H.+.4.16D8:0120 00 DB D2 D3 E0 03 F0 8E-DA 8B C7 16 C2 B6 01 16 .16D8:0130 C0 16 F8 8E C2 AC 8A D0-00 00 4E AD 8B C8 46 8A .N.F.16D8:0140 C2 24 FE 3C B0 75 05 AC-F3 AA A0 0A EB 06 3C B2 .$.u.(.!附加段从首地址0B72开始40个字节中存储了40个空字符-d 0b72:0000 0B72:0000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0030 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o.r.60B72:0040 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 .(.!0B72:0050 CB 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0060 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa0B72:0070 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa3)、从反汇编地址中找到把数据段的首地址0B6F传给寄存器AX的指令地址0B75:0007,用G命令执行到地址0007,然后用T命令单步执行,看寄存器AX,DS,ES的内容的变化-G 0007AX=0B6F BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B5F ES=0B5F SS=0B6F CS=0B75 IP=0007 NV UP EI PL ZR NA PE NC 0B75:0007 8ED8 MOVDS,AX -TAX=0B6F BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B5F SS=0B6F CS=0B75 IP=0009 NV UP EI PL ZR NA PE NC 0B75:0009 B8720B MOVAX,0B72 -TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B5F SS=0B6F CS=0B75 IP=000C NV UP EI PL ZR NA PE NC 0B75:000C 8EC0 MOVES,AX -TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=000E NV UP EI PL ZR NA PE NC 0B75:000E 8D360000 LEASI,0000 -TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0012 NV UP EI PL ZR NA PE NC 0B75:0012 8D3E0000 LEADI,0000 -TAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0016 NV UP EI PL ZR NA PE NC 0B75:0016 FC CLD 4)、让程序执行到传送准备工作完成后的地址0B75:0016 ,查看源偏移地址SI 和目标偏移地址DI的值,以及移动次数存放的寄存器CX,然后用T命令单步执行,看寄存器源地址(DS:DI)和目标地址(ES:SI)的内容的变化 -g0016AX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0016 NV UP EI PL ZR NA PE NC 0B75:0016 FC CLD -tAX=0B72 BX=0000 CX=0111 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=0017 NV UP EI PL ZR NA PE NC 0B75:0017 B92800 MOV CX,0028 -tAX=0B72 BX=0000 CX=0028 DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC 0B75:001A F3 REPZ 0B75:001B A4 MOVSB -tAX=0B72 BX=0000 CX=0027 DX=0000 SP=FFFC BP=0000 SI=0001 DI=0001 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC 0B75:001A F3 REPZ 0B75:001B A4 MOVSB -tAX=0B72 BX=0000 CX=0026 DX=0000 SP=FFFC BP=0000 SI=0002 DI=0002 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC 0B75:001A F3 REPZ 0B75:001B A4 MOVSB -tAX=0B72 BX=0000 CX=0025 DX=0000 SP=FFFC BP=0000 SI=0003 DI=0003 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC 0B75:001A F3 REPZ 0B75:001B A4 MOVSB -d ds:0000 ;进行了三次传送操作后,查看一下源缓冲区和目的缓冲区的内容0B6F:0000 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa0B6F:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa0B6F:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa.0B6F:0030 61 61 61 00 00 00 00 00-00 00 00 00 00 00 00 00 aaa.0B6F:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B6F:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B6F:0060 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o.r.60B6F:0070 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 .(.!-d es:00000B72:0000 61 61 61 00 00 00 00 00-00 00 00 00 00 00 00 00 aaa.0B72:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0030 1E 2B C0 50 B8 6F 0B 8E-D8 B8 72 0B 8E C0 8D 36 .+.P.o.r.60B72:0040 00 00 8D 3E 00 00 FC B9-28 00 F3 A4 B4 02 CD 21 .(.!0B72:0050 CB 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B72:0060 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa0B72:0070 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa-r ;用R命令查看一下各个寄存器的内容:AX=0B72 BX=0000 CX=0025 DX=0000 SP=FFFC BP=0000 SI=0003 DI=0003 DS=0B6F ES=0B72 SS=0B6F CS=0B75 IP=001A NV UP EI PL ZR NA PE NC 0B75:001A F3 REPZ 0B75:001B A4 MOVSB 用E命令修改源缓冲区的内容,然后执行传送操作,看目的缓冲区的内容的变化:-e 0b6f:00040B6F:0004 61.67 61.68 61.69 61.70 0B6F:0008 61.71 61.71-d ds:00000B6F:0000 61 61 61 61 67 68 69 70-71 71 61 61 61 61 61 61 aaaaghipqqaaaaaa0B6F:0010 61 61 61 61 61 61 61 61-61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa0B6F:0020 61 61 61 61 61 61 61 61-00 00 00 00 00 00 00 00 aaaaaaaa.0B6F:0030 61 61 61 00 00 00 00 00-00 00 00 00 00 00 00 00 aaa.0B6F:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .0B6F:0050

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论