ImageVerifierCode 换一换
格式:DOCX , 页数:112 ,大小:133.78KB ,
资源ID:14209573      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14209573.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理课程上机实验指导书.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

微机原理课程上机实验指导书.docx

1、微机原理课程上机实验指导书第一部分 汇编语言程序设计实验实验一 汇编语言编程基础汇编语言是一种面向机器的“低级”语言,是计算机能够提供给用户的最快而最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。要真正理解计算机的工作过程,理解计算机程序的执行过程,就必须学习汇编语言。也正是因为如此,汇编语言程序设计是计算机专业和电子,自动控制等相关专业的重要课程。但是,对于刚开始学习汇编语言的学生而言,汇编语言的一些命令非常抽象,很难理解,往往学习了很长时间也编不出满意的程序,更别说自如的应用,以致我们认为汇编语言很难掌握,影响我们学习汇编语言的兴趣。实际上,为了掌握好汇编语言,我们

2、可以从熟悉、使用DEBUG调试工具开始,先来分析和读懂一些与硬件相关的小程序,这也是我们实验一的目的。1.1 汇编语言程序的上机步骤 以下列源程序为例,先学习汇编语言的上机步骤。文件名为1.asm:DATA SEGMENTNUM1 DB 35,35HNUM2 DW 35,35HNUM3 DB 4 DUP (34,3 DUP (34H)NUM4 DB 34AB NUM5 DW 34,ABDATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV BX,OFFSET NUM1MOV AL,BXMOV BX

3、,OFFSET NUM5MOV AX,BXMOV AH,4CHINT 21HCODE ENDS END START一.上机步骤汇编语言程序MASM软件由EDIT.COM编辑器,汇编MASM.EXE程序,连接LINK.EXE程序以及DUEBUG.EXE调试程序四个部分组成。汇编语言编制完成后,在计算机上的操作过程就分为四个阶段。1. 编辑EDIT.COM首先输入源程序,有两种方法:(1)在记事本里录入,特别注意的是:在保存时文件格式必须选择所有文件,文件后缀名为.ASM, 即保存时文件名为XXX.asm。(2)双击MASM软件中的编辑软件EDIT.COM文件框,在EDIT下输入源程序。用ALT+

4、F键打开file菜单,用其中的save功能键将文件存盘。特别注意的是:汇编语言源程序文件的后缀必须为.asm,即保存时文件名为XXX.ASM。 图1-1 EDIT编辑界面2用汇编程序MASM.Exe对源程序.ASM文件汇编,生成目标文件.OBJ汇编阶段的任务是把汇编语言源程序翻译成机器代码(称为目标),产生二进制格式的目标文件XXX.OBJ(名字与源程序名相同,只是后缀名不同),如果源程序有语法错误,则汇编过程结束后,MASM.EXE汇编程序会指出源程序中错误的行号和错误的原因,我们可以再用编辑程序EDIT.com来修改源程序中的错误,汇编无错后,方可得到正确的.OBJ目标文件,才能进行下一部

5、的连接LINK。双击MASM软件中的MASM.Exe文件框,在命令行后键入源程序名XXX.asm,(如果源程序与MASM软件在同一路径下,可以只键入文件名,而不要后缀),如以下界面: 图1-2 MASM编译1.asm文件无错误时的界面3.连接LINK.EXE由于汇编所得到的目标代码的存放地址并不是可执行的绝对地址,而是浮动的相对地址, 汇编产生的目标文件.OBJ还不能在计算机上运行,需要用连接程序LINK.EXE把目标文件.OBJ文件转换为可执行文件XXX.EXE文件.双击MASM软件中的LINK.Exe文件框,在命令行后键入目标文件名XXX.OBJ(如果源程序,目标文件与MASM软件在同一路

6、径下,可以只键入文件名,而不要后缀),如以下界面: 图1-3 LINK连接1.OBJ文件界面如果连接没有错误,就会产生一个XXX.EXE的可执行文件,如果.OBJ文件有错误,连接时会指出错误的原因。对于无堆栈警告(warning: no stack segment)的提示,可以不予理睬,它是由于我们在源程序中没有定义堆栈段的原因,对于比较小的程源序和不需要再特别定义堆栈段的源程序,我们可以不定义堆栈段,它并不影响程序的正确执行。反而,如果连接时有其他的错误,则要检查并修改源程序XXX.ASM,然后再重新汇编MASM.EXE,连接link.exe的步骤,直到得到正确的XXX.EXE文件为止。4.

7、运行和调试DEBUG.exe 运行可执行文件,即双击XXX.EXE文件框即可,或在DOS下运行此程序,E:XXX.EXE。1.2熟悉、使用DEBUG调试工具以下重点介绍一些调试命令:以1.asm源程序为例:图1-4 运行和调试DEBUG界面1)N命令:用于指定进行读写的磁盘上的文件。命令格式:Npathfilename如: -n 1.exe指定要装载(Load)或写入磁盘(Write)的文件名。2)L命令:将指定的文件装入内存中命令格式:L 回车键-l 回车键3)反汇编命令U就是将存放在制定范围内的目标代码,反汇编成8086/8088的汇编指令格式,并按目标代码首地址,目标代码和对应的源指令的

8、格式,在屏幕上显示出来。把目标代码反汇编后,用户可以方便地知道,程序从什么地址开始执行,执行的是哪一条指令,执行到什么地址为止。命令格式:U地址范围-u13FE:0000 B8FC13 MOV AX,13FC13FE:0003 8ED8 MOV DS,AX13FE:0005 BB0000 MOV BX,000013FE:0008 8A07 MOV AL,BX13FE:000A BB1A00 MOV BX,001A13FE:000D 8B07 MOV AX,BX13FE:000F B8004C MOV AX,4C0013FE:0012 CD21 INT 2113FE:0014 0000 ADD

9、BX+SI,AL13FE:0016 0000 ADD BX+SI,AL13FE:0018 0000 ADD BX+SI,AL13FE:001A 0000 ADD BX+SI,AL13FE:001C 0000 ADD BX+SI,AL13FE:001E 0000 ADD BX+SI,AL13FE为CS即代码段的段基地址,0000,0003,0005是偏移地址,B8FC13等是机器码(由代码段中的二进制机器指令反汇编得到)也就是程序在机器中的代码, MOV AX,13FC是助记符,帮助记忆机器中的指令。(源指令)4)运行命令:T命令:单步运行命令以1.EXE调试为例,单步运行二次13FE:0000

10、 B8FC13 MOV AX,13FC13FE:0003 8ED8 MOV DS,AX13FE:0005 BB0000 MOV BX,000013FE:0008 8A07 MOV AL,BX13FE:000A BB1A00 MOV BX,001A13FE:000D 8B07 MOV AX,BX13FE:000F B8004C MOV AX,4C0013FE:0012 CD21 INT 2113FE:0014 0000 ADD BX+SI,AL13FE:0016 0000 ADD BX+SI,AL13FE:0018 0000 ADD BX+SI,AL13FE:001A 0000 ADD BX+S

11、I,AL13FE:001C 0000 ADD BX+SI,AL13FE:001E 0000 ADD BX+SI,AL-tAX=13FC BX=0000 CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13EC ES=13EC SS=13FC CS=13FE IP=0003 NV UP EI PL NZ NA PO NC13FE:0003 8ED8 MOV DS,AX-tAX=13FC BX=0000 CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC C

12、S=13FE IP=0005 NV UP EI PL NZ NA PO NC13FE:0005 BB0000 MOV BX,0000可以看到机器随机分配给该程序的数据段的段基地址被AX赋予给DS。该程序的代码段的段基地址为13FE,数据段的段基地址为13FC 。 单步执行命令T执行一条命令,并显示CPU中寄存器中的内容和要执行的下一条命令,大家可以看到AX,BX,CX等寄存器的内容,T命令可以跟踪程序中的每一条指令的执行情况.P命令:也是单步运行命令。但是P命令对于每一条指令语句都是一次执行完成. 比如CALL、LOOP和DOS功能调用的INT n等指令语句T命令能在程序的执行中,跟随IP指示

13、的地址,跟踪指令的执行,而P命令则是按指令语句,续进执行的.在调试中,用户可根据需要,选择不同的运行程序命令,以适应调试的要求。5)G (Go)命令:连续执行内存中的程序,还可以在程序中设置断点,逐段地执行程序,以便一段一段地对程序进行调试。命令格式:G =addressaddressaddress其中第一个参数=address,规定了执行的起始地址,即以CS的内容为段地址,以等号后面的地址为偏移地址,在输入时,等号是不可缺少的,若不输入起始地址,则以CS:IP为起始地址,后面的地址参数是断点地址。如果在G命令中没有设置断点,或设有断点但程序在执行中未能到达断点处,这时程序将一直运行,直至结束

14、。在结束时显示提示信息“Program terminated normally。在G命令中可以设置断点,格式为G=0000 000D13FE:000D 8B07 MOV AX,BX13FE:000F B8004C MOV AX,4C0013FE:0012 CD21 INT 21AX=1323 BX=0000 CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC CS=13FE IP=000A NV UP EI PL NZ NA PO NC13FE:000A BB1A00 MOV BX,001A-可以看到AL

15、中的数为23再设置一次断点G=0000 000F -g=0000 000fAX=3334 BX=001A CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC CS=13FE IP=000F NV UP EI PL NZ NA PO NC13FE:000F B8004C MOV AX,4C00-可以看到AX=33346)D (Dump)命令:显示指定范围(range)内的内存单元的内容。 其中,参数范围(range)有以下两种表示方式: a) 第一种表示方式:Addrl Addr2这里Addrl和Addr2

16、分别代表待显示内存单元的首地址和末地址。2) 第二种表示方式:Addrl L Value这里表示显示从地址Addrl开始、长度为Value个字节的内存单元。例如下面两条命令是等效的。 一D 200 2FF D 200 L 100显示内容分为三部分。最左边是本行内存单元首地址(XXXX:XXXX),第二部分是以十六进制形式显示的相继各字节单元的内容,前后八个单元间用符号“”隔开。第三部分是本行显示的十六进制值所对应的ASCII字符。如果某十六进制值的ASCII字符是不可显示的,便以“”代替。注意,每行只显示16个单元的内容,而且每行的首地址都是16的整倍数,或者说,每行的首地址都是以16为边界的

17、。对于D命令,又有两种简化格式,如: 一D 200 显示从DS:0200单元开始的80H个单元的内容,即在只给定第一个地址的命令中,约定隐含L 80参数。 一D 除第一次从DS:100开始,显示80H个单元的内容外,以后都继前次地址之后,依次显示80H个单元的内容。-d13FE:0000 B8 FC 13 8E D8 BB 00 00-8A 07 BB 1A 00 8B 07 B8 .13FE:0010 00 4C CD 21 00 00 00 00-00 00 00 00 00 00 00 00 .L.!.13FE:0020 00 00 00 00 00 00 00 00-00 00 00

18、00 00 00 00 00 .13FE:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13FE:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13FE:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13FE:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13FE:0070 00 00 00 00 00 00 00 00-00 00 00 00 00

19、 00 00 00 .我们从内存单元偏移地址0000单元开始,-d013FC:0000 23 35 23 00 35 00 22 34-34 34 22 34 34 34 22 34 #5#.5.444444413FC:0010 34 34 22 34 34 34 33 34-41 42 34 33 42 41 00 00 4444434AB43BA.13FC:0020 B8 FC 13 8E D8 BB 00 00-8A 07 BB 1A 00 8B 07 B8 .13FC:0030 00 4C CD 21 00 00 00 00-00 00 00 00 00 00 00 00 .L.!.1

20、3FC:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13FC:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13FC:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .13FC:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .-可以看到从偏移地址0000单元开始显示内存单元的内容。7)R (Register)命令 格式:R register_name功能

21、:显示CPU中的一个或所有16位寄存器(包括标志寄存器)的内容。对于标志寄存器来说,显示的是各标志位的状态(置位复位)。-rAX=3334 BX=001A CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC CS=13FE IP=000F NV UP EI PL NZ NA PO NC13FE:000F B8004C MOV AX,4C00-命令Rregister_name不但能显示出该寄存器的当前值,而且还显示提示符“:”。这时只要输入新的值,便可更新该寄存器的内容。若只按回车键,则寄存器的值将保持不变

22、。例如命令:-rAX=3334 BX=001A CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC CS=13FE IP=000F NV UP EI PL NZ NA PO NC13FE:000F B8004C MOV AX,4C00-raxAX 3334:6677-rAX=6677 BX=001A CX=0034 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000DS=13FC ES=13EC SS=13FC CS=13FE IP=000F NV UP EI PL NZ NA

23、 PO NC13FE:000F B8004C MOV AX,4C00RDS,RCS命令可以修改当前段的地址。同学们下来可以试以下。8)- F是标志寄存器的名字。命令RF将显示各状态位的当前状态,其后显示提示符“一”,这时只要输入合法的标志(对顺序无要求),便可修改标志位状态,若只按回车键,则标志位的状态将保持不变。如命令:一RFNV UP DI NG NZ AC PE NCPL EI CY显示了F中的各状态位,其后又通过输入PL EI CY,修改了对应的标志位。-rfNV UP EI PL NZ NA PO NC -pl ei cy-rfNV UP EI PL NZ NA PO CY -9)

24、E (Enter)命令格式:E address 1ist功能:用键入的字节(Byte)值或替换值(字节)列表修改指定内存单元的内容参数,address表示待修改的内存单元的首地址,list是一个选择项,它表示替换值(字节)列表。1) E address 在该命令格式中,没有给出替换值。DEBUG自动显示起始地址和它的内容,并等待用户键入替换值。用户这时可选择按空格键(Space)、横杠键(一)或回车键(Enter),以实现不同的操作: 按回车键(Enter)结束E命令。 按空格键(Space)自动显示下一个内存单元的内容,并等待键人替换值。按照这种方式,一直进行下去,直到按回车键(Enter)

25、,才结束E命令。 按横杠键(一)一一自动显示前一个内存单元的内容,并等待键人替换值。按照这种方式,一直进行下去,直到按回车键,才结束E命令。在上述两种修改方式中,如果在未键入替换值的情况下就按回车键,这时该单元的内容保持不变并结束E命令;如果只按空格键或横杠键,不键入替换值,则只显示内存单元的内容。-e Error-e013FC:0000 23. 35. 23. 00. 35. 00. 22. 34.13FC:0008 34. 34. 22. 34. 34. 34. 22. 34.13FC:0010 34. 34. 22. 34. 34. 34. 33. 34.13FC:0018 41. 42

26、. 34. 33. 42. 41. 00. 00.13FC:0020 B8. FC. 13. 8E. D8. BB. 00. 00.13FC:0028 8A.-e013FC:0000 23. 35.67 23.34 00. 35. 00. 22. 34.13FC:0008 34. 34. 22.-e013FC:0000 23. 67. 34. 00. 35. 00. 22. 34.13FC:0008 34. 34. 22. 34. 34. 34. 22. 34.13FC:0010 34. 34. 22. 34. 34. 34. 33. 34.13FC:0018 41. 42. 34. 33.

27、42. 41. 00. 00. -e0003 显示从0003开始的内容13FC:0003 00. 35. 00. 22. 34.13FC:0008 34. 34. 22. 34. 34. 34. 22. 34.13FC:0010 34. 34. 22. 34. 34. 34.10)F (Fill) 命令 格式:F range list 功能:用list所表示的字节值对指定范围(range)的内存单元进行填充在命令中,若指定范围的内存单元数多于list中的填充字节数,则F命令将反复使用填充字节,直到填满指定范围中的每个单元;若内存单元数少于填充字节数,则F命令将只使用list中的前面若干个字节值

28、,填充各个内存单元。-f ds:0003 L 10 6-e013FC:0000 23. 67. 34. 06. 06. 06. 06. 06.13FC:0008 06. 06. 06. 06. 06. 06. 06. 06.13FC:0010 06. 06. 06. 34. 34. 34. 33. 34.13FC:0018 41. 42. 34. 33. 42. 41. 00.11)A(Assemble)命令 格式:A address 功能:接收从键盘键入的80868088指令,将其汇编成目标代码,并存放在内存单元中。参数address是指定存放目标代码的起始地址,其后指令的起始地址将由系统自

29、动依次安排。一A CS:100 ;从CS:100H开始,编写程序1409:001C 0000 ADD BX+SI,AL1409:001E 0000 ADD BX+SI,AL-a1409:0000-a cs:000a1409:000A mov bx,00091409:000D这时我们再反汇编一下,可以看到,程序发生了变化。-u01409:0000 B80714 MOV AX,14071409:0003 8ED8 MOV DS,AX1409:0005 BB0000 MOV BX,00001409:0008 8A07 MOV AL,BX1409:000A BB0900 MOV BX,00091409

30、:000D 8B07 MOV AX,BX1409:000F B8004C MOV AX,4C001409:0012 CD21 INT 21A命令只是在DEBUG下,汇编程序,不能存盘,临时修改看结果。12)Q命令:结束DEBUG。至此,通过调试示例程序,学习了DEBUG调试命令,并了解了8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配,调试程序的方法,但这还只是简单的程序,调试复杂的程序比此例要复杂的多,还需要我们在学习过程中,勤动手,多动脑,加强练习,在实践中进步。1.3汇编语言程序上机操作和调试训练一。上机目的:了解并逐步熟悉汇编语言的编辑方法及特点.复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。掌握汇编语言的编辑、汇编及连接的过程。了解并逐步掌握运用DEBUG进行调试汇编语言程序。二。实验内容:运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。运用MASMEXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2