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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

微机实验指导书汇编部分本科09101.docx

1、微机实验指导书汇编部分本科09101第1章汇编语言程序设计概述 本章主要介绍了汇编语言源程序的编辑、汇编、连接的方法,DEBUG调试命令及其使用方法 1.1 实验系统及开发环境1.实验设备硬件设备 PC机一台2.软件开发环境(1)DOS环境:编辑软件EDIT.EXE汇编软件MASM.Exe连接程序LINK.exe调试程序DEBUG.EXE(2)WINDOWS集成开发环境 1.2 汇编语言源程序上机过程 在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单。编辑、汇编、连接、调试过程如图1.1所示。1. 编写汇编语言源程序:作用:用汇编语句编写的解决应用问题的程序。

2、软件工具:编辑软件,用于输入、建立和修改源程序。可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。全屏编辑软件:WPS、EDIT.COM、NE.COM、WORD、PE等。行编辑软件:EDLIN.COM2. 汇编作用:将汇编语言程序翻译成机器语言程序的过程,将*.ASM文件转换为*.obj文件。软件工具:汇编程序,将汇编语言源程序翻译成机器语言程序的系统。汇编程序有ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇

3、编工具。3. 连接作用:将不可执行的二进制文件转换为可执行文件,将*.obj文件转换为*.EXE文件。软件工具:连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的机器代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。4. DEBUG调试程序及辅助工具程序(.EXE)作用:进行汇编语言程序调试和文件格式转换软件工具: DEBUG.COM 动态调试程序 EXE2BIN.EXE 文件格式转换程序 CREF.EXE 交叉引用程序TD(turbo Debugger简称)也是动态调试程序,可在DOS和Windows环境下运行,用户界面十分友好。说明:上述汇编

4、语言源程序上机过程,在DOS环境进行汇编语言程序调试的详细步骤见1.3节;在WINDOWS集成开发环境 进行汇编语言程序调试的详细步骤见1.4节1.3 DOS环境进行汇编语言程序调试的详细步骤1.建立源程序运行编辑软件,输入源程序。文件的扩展名为 *.ASM2.汇编 用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。为此,需键入: C:MASM 或 C:MASM按前一种格式键入,屏幕上显示: Microsoft(R) Macro assemble Version 5.00 Copyright(C) Microsoft Corp 1981-1985,1987 ALL righ

5、ts reserved OBJ filename.obj: Source listingnul.lst: Cross-referencenul.crf:以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。汇编后生成以下几个文件:(1).OBJ文件.OBJ文件是必须生成的一个目标代码文件,当源程序中无语法错误时,则在当前工作盘上自动存入一个.OBJ文件,供下一步连接用。若源程序有语法错误时,会出现错误信息提示: 源程序文件行 错误信息代码 错误说明信息最后信息提示: Warning errors (警告错误) Severe errors (严重错误)若

6、严重错误总数不为0,则.OBJ文件没有生成,需回到编辑状态下修改源程序直到无错为止。(2).LST文件(列表文件).LST文件对调试程序有帮助,它是将源程序中各语句及其对应的目标代码和符号表以清单方式列出,如果需要,在屏幕显示的第二个提问的冒号后输入文件名即可,如果不需要,直接按回车键。(3).CRF文件(交叉引用文件)交叉引用.CRF文件给出了源程序中定义的符号引用情况,按字母顺序排列。.CRF文件不可显示,须用CREF.EXE系统程序将.CRF文件转换成为.REF文件后方可显示输出。若按后一种格式输入,系统会依次出现四个提示信息,比第一种格式多了一项源程序文件名的输入。应答方式与第一种格式

7、相同。3、 连接目标程序 汇编后生成的.OBJ文件,其所有目标代码的地址都是浮动的偏移地址,机器不能直接运行。必须用连接程序(LINK.EXE)对其进行连接装配定位,产生.EXE可执行文件,方可运行。在系统提示符下键入:LINK 或 LINK屏幕上出现以下提示信息: Microsoft(R) Macro assemble Version 5.00 Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reserved Run file .EXE: List File nul.map: Libraries .lib:连接后,可生成两种文件:.

8、EXE和.MAP(1).EXE文件(可执行文件)若采用方括号中的默认值,直接按回车键,否则需重新输入一文件名。若连接过程中无错误,则自动在当前工作盘生成.EXE文件。若有错误,则会给出错误信息提示,这时必须重新修改源程序,再汇编、连接。(2).MAP(连接映像文件)(3).LIB库文件连接程序询问是否使用某种库文件,不需使用库文件直接按回车键。(4)若要连接多个模块目标程序,可用“+”把它们连接起来。 如:LINK files1+files2+files3若直接键入:LINK会依次出现四个提示信息,应答方式应与LINK相同,仅增加了一项输出,询问被连接的目标文件名字:Object Modeul

9、es.OBJ:格式:LINK ;多了一个分号,表示结束后续询问。4、 调试和运行程序 经过汇编、连接后生成的.EXE文件,可在DOS系统直接运行,只要键入相应的文件名即可。如:C:MASMDOS的COMMAND.COM模块将该程序装配到内存,并设置和分配启动地址。也可在DEBUG调试程序下运行。如何用DEBUG程序来运行和调试程序将在DEBUG调试程序中详细讨论。5、 DEBUG调试程序 DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。它能使程序设计人员或用户触及到机器内部,因此可以说

10、它是80X86CPU的心灵窗口,也是我们学习汇编语言必须掌握的调试工具。 (1)DEBUG程序使用在DOS提示符下键入命令: CDEBUG 盘符:路径文件名.EXE参数1参数2 这时屏幕上出现DEBUG的提示符“-”,表示系统在DEBUG管理之下,此时可以用DEBUG进行程序调试。若所有选项省略,仅把DEBUG装入内存,可对当前内存中的内容进行调试,或者再用N和L命令,从指定盘上装入要调试的程序;若命令行中有文件名,则DOS把DEBUG程序调入内存后,再由DEBUG将指定的文件名装入内存。(2)DEBUG的常用命令汇编命令 A格式:A起始地址功能:将输入源程序的指令汇编成目标代码并从指定地址单

11、元开始存放。若缺省起始地址,则从当前CS:100地址开始存放。A命令按行汇编,主要是用于小段程序的汇编或对目标程序的修改。 反汇编命令 U 格式1:U起始地址 格式2:U起始地址结束地址|字节数 功能:格式1从指定起始地址处开始将32个字节的目标代码转换成汇编指令形式,缺省起始地址,则从当前地址CS:IP开始。 格式2将指定范围的内存单元中的目标代码转换成汇编指令。显示、修改寄存器命令 R格式:R寄存器名功能:若给出寄存器名,则显示该寄存器的内容并可进行修改。缺省寄存器名,则按以下格式显示所有寄存器的内容及当前值(不能修改)。 AX=0000 BX=0004 CX=0020 DX=0000 S

12、P=0080 BP=0000 SI=0000 DI=0000 DS=3000 ES=23A0 CS=138E IP=0000 NV UP DI PL NZ NA PO NC 138E:0000 MOV AX,1234 -R AX ;输入命令 AX 0014 ;显示AX的内容 : ;供修改,不修改按回车。 若对标志寄存器进行修改,输入:-RF 屏幕显示如下信息,分别表示OF、DF、IF、SF、ZF、AF、PF、CF的状态。 NV UP DI PL NZ NA PO NC不修改按回车键。要修改需个别输入一个或多个此标志的相反值,再按回车键。R命令只能显示、修改16位寄存器。显示存储单元命令 D格式

13、1:D起始地址 格式2:D起始地址结束地址|字节数 功能:格式1从起始地址开始按十六进制显示80H个单元的内容,每行16个单元,共8行,每行右边显示16个单元的ASCII码,不可显示的ASCII码则显示“”。格式2显示指定范围内存储单元的内容,其他显示方式与格式1一样。如果缺省起始地址或地址范围,则从当前的地址开始按格式1显示。例如: -D 200 ;表示从DS:0200H开始显示128个单元内容 -D 100 120 ;表示显示DS:0100-DS:0120单元的内容 说明:在DEBUG中,地址表示方式有如下形式: 段寄存器名:相对地址,如:DS:100段基值:偏移地址(相对地址),如:23

14、A0:1500修改存储单元命令 E格式1:E起始地址 内容表 格式2:E地址 功能:格式1按内容表的内容修改从起始地址开始的多个存储单元内容,即用内容表指定的内容来代替存储单元当前内容。 例如:E DS:0100 VAR 12 34 表示从DS:0100 为起始单元的连续五个字节单元内容依次被修改为 V、A、R、12H、34H。格式2是逐个修改指定地址单元的当前内容。 如:E DS:0010 156F:0010 41.5F其中156F:0010单元原来的值是41H,5FH为输入的修改值。若只修改一个单元的内容,这时按回车键即可;若还想继续修改下一个单元内容,此时应按空格键,就显示下一个单元的内

15、容,需修改就键入新的内容,不修改再按空格跳过,如此重复直到修改完毕,按回车键返回DEBUG“-”提示符。如果在修改过程中,将空格键换成按“-”键,则表示可以修改前一个单元的内容。运行命令 G格式:G=起始地址第一断点地址第二断点地址功能:CPU从指定起始地址开始执行,依次在第一、第二等断点处中断。若缺省起始地址,则从当前CS:IP指示地址开始执行一条指令。最多可设置10个断点。跟踪命令 T格式:T起始地址正整数功能:从指定地址开始执行正整数条指令,若缺省正整数,表示执行一条指令,若两项都缺省,表示从当前CS:IP指示地址开始执行一条指令。指定文件命令 N 格式:N功能:指定即将调入内存或从内存

16、写入磁盘的文件名。该命令应该用在L命令和W命令之前。装入命令 L 格式1:L起始地址盘符号扇区号扇区数 格式2:L起始地址 功能:格式1根据盘符号,将指定扇区的内容装入到指定起始地址的存储区中。格式2将N命令指出的文件装入到指定起始地址的存储区中,若省略起始地址,则装入到CS:100处或按原来文件定位约定装入到相应位置。写磁盘命令 W格式1:W驱动器号格式2:W起始地址 功能:格式1把指定地址开始的内容数据写到磁盘上指定的扇区中。格式2将起始地址的BX10000H+CX个字节内容存放到由N命令指定的文件中。在格式2的W命令之前,除用N命令指定存盘的文件名外,还必须将要写的字节数用R命令送入BX

17、和CX中。退出命令 Q 格式:Q 功能:退出DEBUG,返回到操作系统。 以上介绍的是DEBUG常用命令,其他命令请参考有关书籍。1.4 WINDOWS集成开发环境 进行汇编语言程序调试的详细步骤1. 实验内容及编程实验内容:从3500H内存单元开始建立015共16个数据(建立的数据为00H,01H09H.0AH0FH)。并运行之,检查记录程序的结果。分析 :3500H为偏移地址,对应的段基址采用默认的DS当前值;程序仅给出代码段即可。程序中,如果不涉及到堆栈,则堆栈段可省略;实验程序及流程如下:DATA SEGMENT ORG 3500H MEM1 DB 16 DUP(?)DATA ENDS

18、CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATASTART: MOV AX, DATA MOV DS,AXMOV DI,3500H ;程序开始设数据区首址 MOV CX,0010H ;字节数送入CX中MOV AH, 00H ;SAHF ; 清标志寄存器指令MOV AL, 00HA1: MOV DI,AL ;写入一字节INC DI ;修改地址指针INC AL ;修改数据 LOOP A1 ;未填完转移CODE ENDS ;代码段结束 END START ;程序结束 2.实验过程及详细步骤第1步 输入源程序打开WINDOWS环境下的汇编开发环境,输入源程序。在桌面

19、上找到快捷方式图标,如图1-1所示,双击;图1-1出现下面的源程序模板,如图1-2:按提示输入源程序。图1-2 汇编源程序模板图1-2 说明:在右侧窗口输入源程序,段结构模板已经给出,注意,你可以自己定义段名,没有涉及到的段可省略不写。输入源程序程序后,保存程序(规定扩展名为 *.ASM),使用ALT+X返回集成软件环境。输入源程序后,见图1-3所示。图1-3 输入源程序后的界面第2步:汇编 编译/汇编成目标文件,如图1-4所示.汇编信息显示于屏幕下面的窗口中,显示编译成功,进行第3步。如果显示错误提示信息,则返回第1步修改源程序。图1-4 编译/汇编命令第3步:连接连接生成可执行文件,如图1

20、-5,对汇编生成的*.obj文件进行连接,连接信息显示于屏幕上,生成相应*.EXE可执行文件。如果连接成功,显示生成.EXE文件成功,进行下一步DEBUG调试。否则,返回第1步,修改源程序。图1-5 连接命令第4步:在DEBUG调试环境下进行程序的调试过程目的:检查程序的每一条指令及程序的执行结果。单击DEBUG调试,如图 1-6所示,进入DEBUG调试环境(如图1-7所示),此时待调试的程序已装入内存。图 1-6 debug 调试命令图 1-7 debug 调试环境窗口在图1-7中键入反汇编命令:进行反汇编,显示内存装入的机器指令用汇编指令表示,命令如下:在“”提示符下键入:U 回车;从当前

21、的IP指令指针开始反汇编;或U0000 回车; 从起始偏移地址0000H开始反汇编;如图1-8所示。图1-8 反汇编结果图1-8说明: 键入U命令后,屏幕显示装入的汇编程序; 当源程序较长时,再次键入 U回车,继续显示后面的程序,直到屏幕上出现该调试程序的结尾语句; 在反汇编出来的程序中,符号地址已经用当前内存的地址表示,段寄存器已经装入了具体的段基址; 数据和地址全部用十六进制,省略H不写。 第1,2列 ,为程序所在内存的地址,为 段地址:偏移地址 的形式;第3列,为汇编指令对应的机器指令第110行为你所编写的程序,注意你自己的程序的结束语句,1B3C:0017 B44C MOV AH,4C

22、1B3C:0019 CD21 INT 21该指令之后的指令,为内存驻留的其他内容,与你的程序没有关系调试过程综述: 运行程序 运行程序可以用三种方式:单步运行、设断点运行、连续运行等方式,具体操作如下:a.单步运行目的:每运行一条指令后显示当前寄存器的内容及下一条待执行指令。在“”提示符下键入T=0000 ;,表示从偏移地址0000H开始执行一条语句;显示的结果见图1-9,屏幕显示的是CPU所有寄存器的内容,你仅查看与你的程序有关的寄存器结果,在这里,第一条指令的结果为:DI=3500H;继续执行下一条指令,在“”提示符下键入 T ;反复键入T命令,就可一步一步地运行,直至程序最后一条语句结束

23、。图 1-9单步调试b连续运行:在“”提示符下键入G=00000016(系统默认段基址CS情况下,可不写段基址),该命令表示从偏移地址0000开始执行到0016结束,可连续运行程序。图 1-10所示内存单元内容的显示: 程序结束后,使用D 17EB: 3500 可查看17EB :3500H单元开始的内存中的数据。17EB是DS的内容,3500是DI的内容。内存显示方法,每行16个字节,用16进制表示。图 1-11所示,17EB:3500350F是程序的运行结果.图 1-11内存单元内容的修改: 要若修改某一单元内容,使用E命令,可进行如下操作,例,修改35003505单元的内容为FF,见图1-

24、12。再用D命令查看内存时,内容已有变化。其中,“空格”键用于向下一个单元输入数据,用来响应,并退出E命令。图 1-12所示程序运行结束,请分析和记录结果。DEBUG调试的其他命令,见表 1-1第2章 80X86汇编语言实验1.实验设备硬件:PC计算机一台;软件,汇编软件2.实验目的1熟悉汇编语言程序设计方法;2. 熟悉汇编程序调试过程;3. 掌握使用数据传送、运算类、转移等指令编程及调试方法。4.掌握顺序结构、分支结构、循环结构和子程序调用的编程方法。3.实验及实验报告要求.编程、调试、运行、检查结果,并记录,要求:对程序反复输入几组数据,并运行程序,观察记录结果。 实验报告要求实验报告中应

25、包含实验内容、源程序、实验步骤、运行结果、分析结果是否正确及存在的问题。实验一 系统认识实验1-1. 从3500H内存单元开始建立015共16个数据(建立的数据为00H,01H09H.0AH0FH)。并运行之,检查记录结果。实验步骤见1.4节。1-2. 如果建立的数据为BCD码表示的十进制数据(建立的数据应为00H,01H09H,10H15H),应如何修改上述程序. 并运行之,检查记录结果。提示:BCD运算,是二进制编码的十进制运算,使用指令 ADD和DAA或INC和ADD共同完成,仅能使用AL进行运算。1-3.编程完成运算。1-4.编程完成+100运算。1-5.将内存3500H单元开始存放的

26、09共10个字节数传递到3600H单元开始的数据区中。提示:该程序应该编写数据段,存放09共10个数。如果要求偏移地址从3500H开始存放已知的数据应该如何编程?下面的数据段程序有何区别?数据段定义:通常定义的数据段格式如下:DATA SEGMENTMEM1 DB 0,1,2,3,4,5,6,7,8,9MEM2 DB 10 DUP(?)DATA ENDS该程序段定义的数据区段基址为DS表示,偏移地址从0000H开始的内存区开始存放数据。如果指明开始的偏移地址从3500H开始存放数据,3600H开始接收数据,则数据段定义为:DATA SEGMENT ORG 3500HMEM1 DB 0,1,2,

27、3,4,5,6,7,8,9 ORG 3600HMEM2 DB 10 DUP(?)DATA ENDS1-6.在5题中,如果采用字数据传送,应该如何修改程序?并运行之,检查记录结果。1-7.在5题中,如果采用串传送指令(MOVSB,MOVSW指令)如何修改程序?并运行之,检查记录结果。1-8.设计一数据块间的搬移程序设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储中可能有三种情况:如图(1),对于两个数据块分离的情况,数据的传送从数据块的首址开始,或者从数据块的末址开始均可。但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移

28、”而遭破坏,可以得出以下结论:如图(2)当源数据块首址目的块首址时,从源数据块首地址开始传送数据。实验二 顺序、分支、循环编程实验2-1编程完成 Z=3x+4y-4,其中x、y、z为字节单元。 问题1,如果x、y为字节单元,z为字单元,如何修改程序,并运行,给出结果2-2、编程求若干字节数的累加和,和的结果小于32767(即累加和不超过16位二进制数。 2-3、从BUFFER单元开始存放若干数据,求其中负数的个数存入MDAT字节单元中。2-4修改程序3,使其能求出数据区中正数的个数,存入PDAT单元中。2-5. 求某数据区内正数、负数和零的个数,分别放在PDAT,MDAT,ZDAT单元中。2-

29、6. 将某数据区内正数、负数和零分别放在PDAT,MDAT,ZDAT开始的单元中。2-7、求无符号字节序列中的最大值,放入MDATA单元2-8求有符号字节序列中的最小值,放入NDATA单元2-9若求有符号字型序列中的最大值和最小值,放入MDATA单元和NDATA单元2-10,.调用DOS功能,在屏幕上显示 09.2-11、调用DOS功能,在屏幕上显示 0+1+2+3的结果。2-12、调用DOS功能,在屏幕上显示 0+1+2+3+4+5+6+7+8+9的结果。实验三 作业编程实验3-1、教材 习题3.12已知从DS:2200H,ES:3200H单元起分别存放20个ASCII的字符。找出这两个字符串中第一个不同字符的位置(段内偏地址),并放入DS:22A0H开始的连续两个字单元中。请设计完成此任务的程序段。(1)使用通常用的比较指令(CMP)实现;(2)使用数据串比较指令(CMPSB)实现。3-2、教材 习题 3.21编写程序段,在数据区0000H:2000H开始100字节范围内,查找字符A,若找到,则将偏移地址送入DX,没有找到,则结束。3-3、教材 习题 3.33编程实现求S=(X2Y2)/Z的值,并将结果放入RESULT单元。3-4、教材 习题 3.34在数据区中,以TABLE开始连续存放06的立方值(称为立方表),设任给一数x(0x6),x在TAB1单元,查表求x的立方值,并

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1