实验一汇编基本操作_第1页
实验一汇编基本操作_第2页
实验一汇编基本操作_第3页
实验一汇编基本操作_第4页
实验一汇编基本操作_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

实验一汇编基本操作第一页,共三十九页,2022年,8月28日一、实验目的熟悉在PC机上建立、汇编、链接、调试、和运行汇编语言程序的全过程;设计一个完整的顺序结构汇编语言程序,学习数据传送和算术运算指令的用法。第二页,共三十九页,2022年,8月28日源程序(文本文件)*.ASM目标文件(二进制文件)*.OBJ可执行文件(二进制文件)*.EXE库文件(各种函数)编译连接masm.exelink第三页,共三十九页,2022年,8月28日二、实验内容示例题:在屏幕上显示信息:“5A”DATASEGMENT;定义数据段x db‘5’

;定义字节型变量x,x值存放于内存DATA段字节偏移量0处y db‘A’

;定义字节型变量y,y值存放于内存DATA段字节偏移量1处DATAENDS

CODESEGMENT;定义代码段(伪指令,编译器使用)ASSUMECS:CODE,DS:DATA(伪指令,编译器使用)

START:MOVAX,DATA;数据段在内在重定位,以便程序能够正确引用的在数据段中MOVDS,AX

第四页,共三十九页,2022年,8月28日MOVDL,x;

x值即48D(或31H)-“5”的ASCII码存入寄器DLMOVAH,2;INT21H ;调用2号DOS中断,用于显示DL中存放的字符

MOVBX,01MOVDL,[BX]

;通过BX寄存器间接址将y值存入DL(与第3行有相同的作用)MOVAH,2INT21H

;此段语句功能同上一段

MOVAH,4CHINT21H

;4C号DOS中断,功能是结束程序,将系统控制权返给操作系统

CODEENDS;以下两句为伪指令,不占用内存,编译器使用ENDSTART第五页,共三十九页,2022年,8月28日实验步骤1、从“开始”->“运行”->输入“CMD”命令,进入仿真DOS状态;2、键入D:↙,进入D盘(↙表示回车键);3、输入CDMASM6↙,进入MASM6目录(即汇编程序所在目录);4、输入EDIT↙(即DOS下的文本编辑程序)编辑宏汇编语言源程序,或者用TC编辑环境,或者用Windows的文本编辑程序均可。选用你熟悉的文本编辑程序,按要求逐条输入给出的源程序,并对输入完毕的源程序存盘,其文件名由自己定,但文件的扩展名必须是.ASM(如果用Windows编辑程序,文件格式一定要选纯文本文件),文件保存位置为D:\MASM6。例如把示例题源程序文件取名为hello.asm。第六页,共三十九页,2022年,8月28日5、对源程序进行编译以生成.OBJ目标文件(框内为键盘输入的内容,↙表示回车):D:\MASM6\>MASMhello.asm↙Microsoft(R)MacroAssemblerVersion5.0Copyright(C)MicrosoftCorp1981-1985,1987,Allrightsreserved.

Sourcefilename[hello.ASM]:↙ 注:源文件名,上边已输入在此直接回车即可

Objectfilename[hello.OBJ]:↙ 注:目标文件名,默认与源文件同名

SourceListing[NUL.LST]:↙ 注:列表文件,直接回车表示不生成该文件

Cross-reference[nul.CRF]:↙ 注:交叉索引文件直接回车表示不生成该文件

50636+408356Bytessymbolspacefree0WarningErrors 注:编译过程没有警告性错误

0SevereErrors 注:没有严重错误,编译成功,如不为0刚需打开源程序按此处给出的错误提示修改错误

D:\>注:返回DOS环境第七页,共三十九页,2022年,8月28日

不同版本时,以上显示内容可能不同,但基本原理是一致的。MASM完成对源程序的编译,若编译过程中发现语法错误,则列出错误的语句代码及错误类型,最后列出警告错误和语法错误的总数。此时,就可以根据错误的性质分析错误,并使用编辑程序修改源程序,再重新汇编源程序,直至汇编后无错误发生为止。第八页,共三十九页,2022年,8月28日6、链接目标文件,对上步生成的目标文件进行链接生成扩展名为.exe的可执行文件

D:\MASM6\>LINK↙Microsoft(R)8086Object,linkerVersion3.05

Copyright(C)MicrosoftCorp1983,1984,1985,Allrightsreserved.ObjectModules[.OBJ]:hello↙ 注:目标文件名,扩展名不用输入

RunFile[HELLO.EXE]:↙ 注:可执行文件名,默认与目标文件同名

ListFile[NUL.MAP]:↙ 注:不输出MAP文件

Libraries[.LIB]:↙ 注:不链接库文件若连接过程有错,则显示错误信息,此时需要重新调用编辑程序修改源程序,然后再重新汇编,再经过链接,直至无错为止。第九页,共三十九页,2022年,8月28日7、运行程序及调试程序连接成功后,在D:\MASM6\目录下生成了一个可执行文件(扩展名为.exe),DOS下用DIR命令可以看见该文件(或者在Windows中文件管理器中也可看见该文件)。操作者可在该目录下直接键入文件名(或在文件管理器中双击)运行此程序:D:\MASM6\>hello.exe↙注:大小写均可,扩展名可不输入回车后屏幕将显示:5A第十页,共三十九页,2022年,8月28日自己编程:仿照上面程序,将自己的英文名字打印到屏幕上。反复对以上过程进行练习,认真理解各步的作用,掌握“编辑”、“编译”和“链接”的概念,了解各步的需要的输入文件,输出文件是什么。第十一页,共三十九页,2022年,8月28日实验报告要求(实验1)1.实验题目;2.实验目的;3.实验内容(1).编程任务(2).解决问题的基本思路(3).源程序(4).程序运行步骤4.实验结论;5.本次实验的主要收获和体会(100字左右);第十二页,共三十九页,2022年,8月28日利用debug调试宏汇编程序debug.exe是DOS系统自带的汇编调试软件,debug命令是DOS的内部命令,只要进入DOS系统在任何目录下都可以运行。debug调试程序有多种命令,可以显示修改内存、汇编、反汇编、单步运行程序,中断运行程序等,是调试汇编程序的常用工具。第十三页,共三十九页,2022年,8月28日debug可以直接在运行中汇编指令,进行调试,但由于使用这一功能要记住内存地址,所以在这里不做介绍,有兴趣可以看有关的参考书,在这里只介绍完整的源程序的调试方法。第十四页,共三十九页,2022年,8月28日调试步骤:首先编写源程序,可以用任何文本文字(不带格式符)编辑系统编写源程序,如Windows下的记事本,在这里我们一般使用DOS下的文本编辑器edit.exe,与debug.exe一样,edit也是DOS系统的内部命令,在任何目录下都可以运行。但是要注意,无论用哪种编辑器,源程序的后备名必须是.asm。如a.asm等。第十五页,共三十九页,2022年,8月28日用记事本编辑源程序文件名为b.asm第十六页,共三十九页,2022年,8月28日在DOS下运行edit,编辑a.asm源程序第十七页,共三十九页,2022年,8月28日输入源程序第十八页,共三十九页,2022年,8月28日文件菜单,可以存盘、重命名、退出等第十九页,共三十九页,2022年,8月28日源文件编辑完成后,存盘退出,这时应将源文件编译成目标程序.obj文件。同样在DOS下运行宏汇编编译程序masm.exe。这个程序不是DOS系统命令,须将该可执行文件拷贝至源程序的目录处。第二十页,共三十九页,2022年,8月28日在DOS下运行masm命令,同时输入源文件名第二十一页,共三十九页,2022年,8月28日编译程序依次询问三个选项,均输入回车如果源程序无语法错误,提示0个错误,表示已生成a.obj文件第二十二页,共三十九页,2022年,8月28日如果存在错误,指出源程序的错误行数,错误类型,应返回编辑器修改。两个错误第二十三页,共三十九页,2022年,8月28日错误,多个逗号错误,少个逗号当前光标所在行数第二十四页,共三十九页,2022年,8月28日成功生成a.obj文件后,对obj文件进行连接,在DOS的当前目录下执行link.exe文件。执行linka第二十五页,共三十九页,2022年,8月28日对这三个选项均回车跳过如果源程序没有堆栈段,程序会提示第二十六页,共三十九页,2022年,8月28日这时,我们已经成功地生成了a.exe文件,因为这个汇编程序没有涉及到屏幕的输入输出,即运行结果存在内存中,虽然能在DOS及Windows下正确运行,但什么结果都看不到。为了观察程序的运行结果或为了调试程序,我们需要运行debug.exe调试程序来观察cpu的寄存器的运行状态及数据段内存的数据。第二十七页,共三十九页,2022年,8月28日在当前目录下输入debuga.exe第二十八页,共三十九页,2022年,8月28日进入debug程序,这是debug的提示符,可以在这个提示符下直接输入debug的各项命令第二十九页,共三十九页,2022年,8月28日U反汇编,可以看源程序格式:U[地址]功能:把指定地址范围的内存块全部反汇编,一次最多显示32字节机器码。第三十页,共三十九页,2022年,8月28日机器码CS:IP原指令第三十一页,共三十九页,2022年,8月28日T:单步运行程序格式:T[=地址]功能:从指定地址处,(默认为当前CS:IP地址)处运行一条指令,并显示寄存器内容、标志寄存器的状态和下一条指令。第三十二页,共三十九页,2022年,8月28日t命令CPU各寄存器内容标志寄存器状态下一条指令及地址、机器码第三十三页,共三十九页,2022年,8月28日G:执行程序,直至程序结束或断点处。格式:G[=地址]断点地址功能:从指定地址或当前地址开始运行,遇到断点则停止,并显示断点处的各种状态。第三十四页,共三十九页,2022年,8月28日运行到0015H0015H处寄存器状态下一条指令第三十五页,共三十九页,2022年,8月28日D显示内存命令格式:D地址(例如DDS:0000)功能:显示指定范围的地址内容,最多128个字节。如DDS:0020L40显示数据段从0020H开始的40个字节的内容。第三十六页,共三十九页,2022年,8月28日显示内存命令DS:偏移地址内存内容,均为16进制形式对应内容的ASCII码第三十七页,共三十九页,2022年,8月28日Q退出debug程序。返回DOS第三十八页,共三十九页,2022年,8月28日标志寄存器的含义:溢出标志OFOV(溢出)NV(不溢出)方向标志DF

温馨提示

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

评论

0/150

提交评论