文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言_研究试验1_搭建一个精简的C语言开发环境

汇编语言_研究试验1_搭建一个精简的C语言开发环境

汇编语言_研究试验1_搭建一个精简的C语言开发环境
汇编语言_研究试验1_搭建一个精简的C语言开发环境

汇编语言课程实验报告

实验名称

搭建一个精简的C语言开发环境

实验环境

硬件平台:Intel Core i5-3210M

操作系统:DOSBox in Windows 8.1

软件工具:Turbo C 2.0

实验内容

在TC2.0的安装目录下,有很多的文件和子目录,子目录下面还有很多的程序和文件。我们需要知道,哪些程序和文件是用于解决哪些问题的。通过编译链接一个最简单的C语言程序,我们可以将已知的需要用到的程序和文件与其他的程序和文件分离开来。

实验步骤

1.在D盘建立一个目录tc2,0。在DOS环境中,方法如下:

D:\md tc2.0

然后将 tc2.0的所有文件都拷贝到D:\ tc2.0目录下。

2.在C盘建立一个目录minic(用来存放我们已知的解决问题要用的程序和文件)。在

DOS 环境中,方法如下:

C:\md minic

3.把我们都已知的tc.exe拷贝到C:\minic下:

C:\minic\copy D:\tc2.0\tc.exe

经过此步骤后,C:\minic下结构如下:

4.运行tc.exe

C:\minic\tc

用tc环境中的菜单项“Options”中的“Directories”选项,对tc的工作路径进行清空并保存。如下:

5.在tc.exe环境中编辑程序simple.c,保存到C:\minic下。

6.用tc环境中的菜单项“Compile”中的“Compile to OBJ”,对程序simple.c进行编译。

显示编译成功,如图:

7.用tc环境中的菜单项“Compile”中的“Link EXE file”,对程序simple.obj进行连接。

显示连接不成功,如下:

按任意键后,程序显示了连接所缺失的文件:

8.根据提示,将缺失的文件在D:\tc2.0下找到,拷贝至C:\minic。继续进行连接,程序再

次提示连接失败,并显示下一个缺失的文件,将此文件在D:\tc2.0下找到,拷贝至C:\minic。反复进行此操作,直至连接成功。如下:

此时,在C:\minic目录下,除了已有的TC.EXE,SIMPLE.C文件和编译连接生成的SIMPLE.OBJ,SIMPLE.EXE文件外,我们已经拷贝了5个和连接相关的文件,如下:

这5文件就是我们编译链接一个最简单的C语言程序需要用到的文件。

实验总结

经过此次实验,我们顺利的找出了TC中和编译链接一个C语言程序相关的文件,熟悉了TC

的使用,也更加深入地理解了TC的运行机制和原理。

不要把MASM32开发环境和MASM汇编器版本搞混了!

不要把MASM32开发环境和MASM汇编器版本搞混了! MASM32是一个为那些对学习或者编写32位微软汇编(MASM)感兴趣的程序员提供的工作环境,它最流行的版本是8.0版,而我所知道最新版本是9.0版。但是请大家一定要注意,这里的8.0版和9.0版不是指MASM编译器(即ML)的版本,而是MASM32开发环境的版本。经常看到网上有网友发的贴把这两个概念都搞混了。 那么MASM(ML)编译器的版本到底有哪些呢?教学上常用的版本是 5.0版的,之前还有个 4.0版的记得“全国计算机等级三级考试”就是用的 4.0版。 5.0版之后有个 5.1版本,在这之后,从 6.0版开始MASM就改名ML了,因为它把编译和连接组合在一起了。而且 6.0版还对汇编语言进行了大幅改造,使之支持高级语言的很多特性。 6.0版之后常看到的就是6.11、6.13、6.14MASM32(V8.0和V9.0)就是包含有ML6.14版,而不是ML8.0版。 6.14之后就是6.15但不常见,我手头上有6.15的ML,有兴趣的朋友可以向我索取或点此处进入下载。但Microsoft从 6.15版开始好象就不再单独发布MASM的开发工具包了。 以后的ML还有7.0、7.1版,最新的是ML8.0版。但它们都只包含在Visual https://www.wendangku.net/doc/db15882289.html,和Visual Studio 2005里面。而且如果你安装了Visual Studio 2005的64位开发环境,你将得到一个MASM for x64 (ml64.exe)哈哈,各位这可是支持Intel 和AMD的64位CPU的汇编语言编译器!有志于64位底层开发的赶快去试用看看吧。 MASM 4.00这是最先广泛使用的一个 MASM 版本,适用于 DOS 下的汇编编程。它很精巧,但使用起来不是很智能化,需要用户自己一板一眼地写出所有的东西。 很多教科书上讲的 8086 汇编语法都是针对这个版本的,对程序员来说。它 只比用 Debug 方便一点点 MASM 5.00MASM 5.00 比 4.00 在速度上快了很多,并将段定义的伪指令简化为类 似 .code 与 .data 之类的定义方式,同时增加了对 80386 处理器指令的 支持,对 4.00 版本的兼容性很好 MASM 5.10对程序员来说,这个版本最大的进步是增加了对 @@ 标号的支持。这样,程序员可以不再为标号的起名花掉很多时间。另外, MASM 5.10 增加了对 OS/2 1.x 的支持 MASM 5.10B1989 年推出,比上一个版本更稳定、更快,它是传统的 DOS 汇编编译器中最完善的版本 MASM 6.001992 年发布,有了很多的改进。编译器可以使用扩展内存,这样可以编译更大的文件,可执行文件名相应从 Masm.exe 改为 Ml.exe 。从这个版本开 始可以在命令行上用 *.asm 同时编译多个源文件,源程序中数据结构的使 用和命令行参数的语法也更像 C 的风格。最大的改进之一是开始支 持 .if/.endif 这样的高级语法,这样,使用复杂的条件分支时和用高级语 言书写一样简单,可以做到几千行的代码中不定义一个标号;另外增加了 invoke 伪指令来简化带参数的子程序调用。这两个改进使汇编代码的风格 越来越像 C ,可读性和可维护性提高了很多 MASM 6.00A未发售的版本 MASM 6.00B最后一个支持 OS/2 的 MASM 版本,修正了上一版本中的一些错误 MASM 6.10修正了一些错误,同时增加了 /Sc 选项,可以在产生的 list 文件中列出

《汇编语言》实验报告-搭建开发环境

《汇编语言》实验报告 得分:

1)VC6平台下的汇编语言开发环境搭建(使用MASM32的汇编器 +VC6) 配置IDE环境: –在VC的tools/option/Directories页面中添加Irvine32.inc等所在的目录到include files中; 添加 Irvine32.lib等所在的目录到library files. –将masm32中的ml.exe和ml.err拷贝到VC的Microsoft Visual Studio\VC98\Bin目录中 创建与配置project: –新建VC的win32 console类型空工程 –创建一个asm后缀的文件,并把汇编代码(教材第85页addsub3.asm)输入该文件中,然后将该asm文件添加到 Source Files –选中asm文件,在project settings/Custom Build页面中命令行加: ml /c /coff /Fo$(TargetDir)\$(InputName).obj $(InputPath) 输出中加上: $(TargetDir)\$(InputName).obj –“Project setting”页面的”link”选项卡中“object/library module ”中加入irvine32.lib 2)汇编与链接不带输出的加减法程序(即教材第85页 addsubTest.asm); 3)在程序最后加入调用DumpRegs过程的语句,以输出各寄存器的 值。 4)以单步执行的方式调试该程序,查看每步结果,并解释每步结果, 并写成注释。(特别注意对标志位的影响) 5)(可选)尝试修改程序。 6)(可选)单步跟踪课件中4.3.3节的程序“ptr应用示例”,结合 VC6的内存查看功能(通过菜单view debug windows Memory 调出内存查看窗口)理解每步的执行结果。(注意课件中只是大部分代码,请补全头文件以及程序退出宏。)

汇编语言程序设计练习题

汇编语言程序设计练习题 一、字符与串处理类 1.逆序输出字符串“BASED ADDRESSING”。 2.试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。 3.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。 4.从键盘上输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果。 5.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。)放在STRING中,试编制一个程序测试字符串中是否存在数字。如有,则把CL的第5位置1,否则将该位置置0。 6.从键盘上输入一串字符(用回车键结束,使用0A号功能调用。),将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。 7.试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。 8.试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等则显示“MATCH”, 若不相同则显示“NO MATCH”。 9.试编写一段程序,要求输入两个字符串,如两个字符串相等则显示“MATCH”, 否则显示“NO MATCH”。 10.试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。 11.在内存区域0B800:0000-0B800:0FFFF(都是16进制数)内查找首地址为SOURCE的串(SOURCE的首字节为串长度),如果找到,则把AL的第0位置0,否则将该位置置1。 12.已知数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中。 13.在附加段中,有一个首地址为LIST和未经排序的字数组。在数组的第一个字中,存放着该数组的长度,数组的首地址已存放在DI寄存器中,AX寄存器中存放着一个数。要求编制一个程序:在数组中查找该数,如果找到此数,则把它从数组中删除。 二、数字输入输出类 1. 试编制一个程序,把BX寄存器内的二进制数以十六进制数的形式在屏幕上显示出来。 2. 试编制一个程序,把BX寄存器内的二进制数以八进制数的形式在屏幕上显示出来。 3. 试编制一个程序,把BX寄存器内的二进制数以十进制数的形式在屏幕上显示出来。 4.从键盘上输入2个一位数,求出它们的和(假设和不超过1位)。 5.试编写一段程序,从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数。 6.试编写一段程序,从键盘接收一个0-65535间的十进制无符号数,并在终端上显示与它等值的二进制数。 7.试编写一段程序,从键盘接收一个-32768-32767间的十进制有符号数,并在终端上显示与它等值的二进制数。 8.编写一个程序,从键盘输入一个0~65535之间的10进制无符号数,然后以16进制

详解VS2010如何搭配汇编程序开发环境的图解教程

详解VS2010如何搭配汇编程序开发环境的图解教程 本文和大家分享一下如何搭配汇编程序开发环境的图解教程,非常不错的文章哦。 引子 由于这些日子一直都在研究底层的技术,从Windows 驱动程序,到Windows 内核等等技术的学习, 让我对底层的技术越发有兴趣了,而刚好,在研究WRK 时, 对内存管理,寄存器,地址总线,数据总线,控制总线等的理解不够透彻, 所以越发的想学习汇编程序设计来提升功力, 而由于近来在公司里一直都有项目压着,所以在公司里也实在不好拿本汇编程序设计看, 所以只好晚上回来学习了,汇编看了几个晚上,也算是蛮有感觉的。 今天就先来搭个开发环境再说吧。 开发环境搭配 我介绍四种开发汇编程序的方式: 第一种:直接在Dos 环境下使用Edit 命令调出源码编辑框, 生成源码后,可以使用由微软提供的masm 汇编编译器来对源码进行编译, 编译完后再使用Linker 连接器即可得到可执行文件, 这种方式现在几乎被灭绝了(当然使用masm 汇编编译器还是很普遍的), 除非你真要在DOS 环境下运行汇编程序; 第二种:通过简化第一种方式而来; 第三种:直接使用Masm for Windows 集成实验环境,这个开发环境呢,非常适合汇编语言的初学者,

因为这个IDE 本身就是由一些从事汇编程序教学的大学老师开发的出来用于汇编初学者进行学习和实验的, 所以使用简单,方便,这里可以对这个IDE 稍加推荐; 第四种:则是通过Visual Studio 这个强大的IDE 来实现汇编程序的编译,运行和调试,至于Visual Studio 就不多做介绍了,.Net 用了这么多年,这东西强大到什么程度那是总所周知的; 第一种方式:使用Edit + MASM 5.0 编译器+ Linker 连接器 其实这种方式是很简单的,只是很麻烦,因为简单而且麻烦, 所以我采用尽可能的将截图传上来,然后稍加注解的方式进行介绍, 软件准备: 需要MASM 5.0 或者以上的汇编编译器 首先,是要编辑汇编源代码: 其实对于源码的编辑根本不需要向如下这么麻烦,直接拿个记事本就OK 了 运行cmd 命令

实验一 搭建开发环境

实验一搭建开发环境 一、实验目的 搭建汇编语言的开发环境,熟悉汇编程序开发的基本步骤,掌握基本的调试操作。 二、实验内容与要求 基于VISUAL STUDIO 平台,结合MASM32的汇编器,构建IA-32汇编语言的开发环境。 三、仪器、设备 PC机 四、实验步骤 1)VC6平台下的汇编语言开发环境搭建(使用MASM32的汇编器+VC6) 配置IDE环境: –在VC的tools/option/Directories页面中添加Irvine32.inc等所在的目录到include files中; 添加Irvine32.lib等所在的目录到library files. –将masm32中的ml.exe和ml.err拷贝到VC的Microsoft Visual Studio\VC98\Bin目录中 创建与配置project: –新建VC的win32 console类型空工程 –创建一个asm后缀的文件,并把汇编代码(教材第85页addsub3.asm)输入该文件中,然后将该asm文件添加到Source Files –选中asm文件,在project settings/Custom Build页面中命令行加: ml /c /coff /Fo$(TargetDir)\$(InputName).obj $(InputPath) 输出中加上: $(TargetDir)\$(InputName).obj –“Project setting”页面的”link”选项卡中“object/library module ”中加入irvine32.lib

2)汇编与链接不带输出的加减法程序(即教材第85页addsubTest.asm); 3)在程序最后加入调用DumpRegs过程的语句,以输出各寄存器的值。 4)以单步执行的方式调试该程序,查看每步结果,并解释每步结果,并写 成注释。(特别注意对标志位的影响) 5)(可选)尝试修改程序。 6)(可选)单步跟踪课件中4.3.3节的程序“ptr应用示例”,结合VC6的 内存查看功能(通过菜单view→debug windows→Memory调出内存查看 窗口)理解每步的执行结果。(注意课件中只是大部分代码,请补全头文 件以及程序退出宏。) 参考资料1: 1. VC6.0等visual studio集成开发环境对标志位的称呼与通常的不同,它们的对应关系如下:OV=overflow flag (OF) UP=direction flag (DF) EI=interrupt flag (IF) PL= Sign Flag (SF) ZR=zero flag (ZF) AC=auxiliary flag (AF) PE= parity flag (PF) CY=carry flag (CF) 2. 参考资料2: 上述实验使用的是Visual Studio 6.0。实验完成以后也可以偿试其它的开发环境的配置。以下是Visual Studio 2010环境的配置,供参考: VS2010平台下的汇编语言开发环境搭建 a.在VC++ 中新建一个空项目,取名为Test

SI02汇编语言集成开发环境的设计开发.

SI02汇编语言集成开发环境的设计开发 摘要:实现了一种全集成可变带宽中频宽带低通滤波器,讨论分析了跨导放大器-电容(OTA—C)连续时间型滤波器的结构、设计和具体实现,使用外部可编程电路对所设计滤波器带宽进行控制,并利用ADS软件进行电路设计和仿真验证。仿真结果表明,该滤波器带宽的可调范围为1~26 MHz,阻带抑制率大于35 dB,带内波纹小于0.5 dB,采用1.8 V电源,TSMC 0.18μm CMOS工艺库仿真,功耗小于21 mW,频响曲线接近理想状态。关键词:Butte 汇编语言作为可以直接对计算机硬件进行操作的语言,无论语言和架构如何发展,其最高的执行效率和最直接的硬件操作都是不可替代的,这也是为什么绝大多数语言中都可以内嵌汇编语言的原因。而在实际工作中,能使用汇编语言熟练编写程序的工作人员却相当匮乏,究其原因,除了汇编语言比较抽象,难于掌握以外,一个主要的原因就是汇编语言的上机环境普遍使用的是基于命令行的编译、链接程序,没有集成开发环境,造成程序在编制和调试上的困难。 基于上述原因及实际工作需要,我们开发一个专用于SI02汇编语言的集成开发环境,以改善程序开发环境、提高编程效率。 2.SI02汇编语言简介 SI02是自行研制的一种16位的微处理器芯片,该芯片有自己的指令系统和汇编语言—SI02。SI02汇编语言不支持数据结构和数据类型,但是在语法、格式和结构等方面和C语言几乎完全一致,从而使用户更加易于掌握。SI02编程语言不区分大小写,但建议用户用小写字母编写程序,以便提高编译效率;SI02编程语言支持十进制和十六进制两种数据表示方法,其中十六进制的数据应以“0x”作为数据的开头。在使用该汇编语言编程时,要求遵循图1所示的程序结构。 以上各结构之中,除主程序之外都不是必要部分,但如若用到,则必须按照图中所示顺序出现。另外,程序结构中的数据块是指在一些应用问题中,需使用一些固定数据,如变换表格等,这些数据在SI02编程语言中以数据块的形式出现,数据块部分一般出现在程序的末尾,格式如下: 标号:数据1;[注释] ………………

如何编写和汇编语言程序

如何编写和汇编语言程序 可以用普通文本编辑器编辑汇编语言源程序。常用的有 MS-DOS 下的 EDIT 文本编辑程序, Windows 下的写字板( WORDPAD.EXE )等。用户通过屏幕编辑程序键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为· ASM 。 软件运行基本环境 运行汇编程序必备的软件环境: DOS 操作系统;汇编系统。 汇编系统盘应包含如下文件: MASM 宏汇编程序文件 LISK 连接程序文件 CRFF 索引程序文件(也可不用) 汇编源程序编写 1 )源程序的书写格式 当 CPU 访问内存时,是把存储器分成若干个段,通过 4 个段寄存器中存放的地址对内存储器访问,因此在编源程序时必须按段的结构来编制程序。由于每个段的物理空间为≤ 64KB ,所以程序中各段可以分别为一个或几个。源程序的书写一般有如下形式: 逻辑堆栈段堆栈段名 SEGMENT STACK 用变量定义预置的堆栈空间 · · 堆栈段名 ENDS 逻辑数据段数据段名 SEGMENT 用变量定义预置的数据空间 · · 数据段名 ENDS 逻辑代码段代码段名 SEGMENT ASSUME 定义各段寻址关系 过程名 PROC … 程序 · · 过程名 ENDP 代码段名 ENDS END 过程名或起始标号 在源程序中最少要有一个代码段,数据段根据需要可有可无,也可以增设附加段。对于堆栈段也可以根据需要可有可无,但在连接( LINK )时计算机将显示警告性的错误: Warning : N STACK segment There was 1 error detected. 在程序中如果没有用到堆栈时,该错误提示不影响程序的运行,如果程序中用到堆栈时必须设置堆栈段。 其中: SEGMENT 、 ASSUME 、 PROC … ENDP 为伪指令,伪指令是发给汇编程序 ASM 的,而不和微处理器打交道,在汇编时不产生目标代码,只是把源程序中各段的设置情况告诉汇编程序。 2 )段寄存器的段地址的装入 Assume 伪指令语句只是建立了当前段与段寄存器的联系,但不能把各段的段地址装入相应的段寄存器中,段寄存器的段地址的装入是在程序中完成的。 ( 1 ) DS 、 ES 、 SS 的装入 由于段寄存器不能用立即数寻址方式直接传送,所以段地址装入可通过通用寄存器传送给段寄存器。 MOV AX ,逻辑段名 MOV 段寄存器, AX

汇编语言的编程步骤与调试方法

汇编语言的编程步骤与调试方法 一、汇编源程序的建立 1. 使用工具 (1)EDIT,记事本等文本编辑软件,编辑源程序,保存为.asm文 件; (2)ASM,MASM汇编程序,对源程序进行汇编,生成.obj文件- 目标文件,以及调试用.LST-列表文件和.CRF-交叉引用表; (3)Link连接程序,对使用的目标文件和库文件进行连接,生 成.exe文件,同时调试用.map-地址映像文件; 如果源程序无语法错误,上述三步将生成可运行的.exe文件, 如果运行结果无误,则完成对汇编程序的编程,如果运行后结果存 在错误,需要进行调试。 (4)Debug调试程序,对.exe文件进行调试,修改,直到程序正 确。 图3 目标程序生成步骤图2. 编程过程 (1)用文本编辑软件,编写扩展名为.asm的源文程序文件。 (2)用汇编程序对编好的源文件进行汇编。 命令行:masm [*.asm] ↙ 如果源文件中存在语法错误,则汇编程序将指出错误类型及位置,可根据这些信息重新编辑源文件,直至无语法错误,汇编后,将生成指定名称的目标文件.obj。 使用MASM50汇编程序进行汇编,输入命令行masm或者masm *.asm后,根据提示,输入文件名,在汇编没有错误的情况下,如屏幕所示:汇编程序可生成三个文件,*.obj,*.lst和*.crf。 *.obj-目标文件,用于连接生成可执行文件; *.lst-列表文件(可选),汇编语言汇编的机器语言与汇编语言对照表,可用于

调试; *.crf-交叉引用文件(可选),给出了用户定义的所有符号和对每个符号定义、引用的行号。 (3)目标文件的连接 命令行:link [*.obj] [*.obj] [*.lib] ↙ 连接程序,将多个目标程序及库文件,连接生成可执行的*.exe文件,同时可选择生成*.map文件。 *.map-地址映像文件,给出内存地址分配的有关信息。 下图所示屏幕,为Link连接两个目标文件,没有错误的情况下,生成*.exe 文件。 (4)执行程序 执行*.exe文件,观察程序运行结果,如果存在错误,需要进行调试。调试工具DEBUG是针对汇编语言程序设计的一种调试工具,熟练使用DEBUG有助于汇编语言程序员对于逻辑错误的调试。 二、汇编程序的调试

实验一 ADS集成开发环境及汇编语言指令实验

实验一 ADS集成开发环境及汇编语言指令实验 1.1 实验目的 1.熟悉ADS1.2 软件开发环境; 2.理解ARM920T 汇编指令的用法,并能编写简单的汇编程序; 3.理解常用的ARM伪指令和伪操作的功能和使用。 1.2 实验内容 1.使用LDR 指令读取0x30003100 上的数据,将数据加1,若结果小于10,则使用STR 指令把结果写回原地址,若结果大于等于10,则把0 写回原地址。 2.使用ADS1.2 软件仿真,单步,全速运行程序,设置断点,打开寄存器窗口(ProcessorRegisters)监视R0,R1 的值,打开存储器观察窗口(Memory)监视0x30003100 上的值。 3.使用数据定义伪操作定义两个内存数据块,通过汇编指令将源数据块的内容复制到目的数据块,并对程序运行时相关寄存器、内存中的数据进行跟踪。 1.3 预备知识 1.ARM 指令系统内容; 2.ADS1.2 工程编辑和AXD 调试的内容。 1.4 实验设备 硬件:PC 机一台。 软件:Windows XP系统,ADS1.2 集成开发环境。 1.5 实验步骤 1.启动ADS1.2,使用ARM Executable Image 工程模板建立一个工程arm1.mcp。 2.建立汇编源文件arm1.s,编写实验程序(见1.6实验参考程序1),然后添加到工程中。 3.设置工程连接地址RO Base 为0x30000000,RW Base 为0x30003000,设置options 中的调试口地址Image entry point 为0x30000000。 设置方法:选择Edit->DebugRel Settings,打开下图所示的窗口: 图1.1 DebugRel Settings窗口

实验一 DOS环境下的汇编语言编程环境使用

第一章汇编语言程序设计的实验环境及实验步骤 知识提要: 本章主要进行汇编语言实验环境及实验步骤,涉及到的知识点包括: 1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行: (1)编辑源程序(生成.ASM文件) (2)汇编源程序(.ASM→.OBJ) (3)连接目标程序(.OBJ→.EXE) (4)调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5)运行程序输出结果。 2、Windows环境下的汇编语言集成编程环境的使用 实验一DOS环境下的汇编语言编程环境使用(基础与验证型) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用。 二、软硬件环境 1、硬件环境:微机CPU486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM5.0、DEBUG、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。 三、实验涉及的主要知识单元 1、汇编语言源程序的汇编过程 汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中以ASCII码表示的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立3个文件:扩展名为.OBJ的目标文件、扩展名为.LST的列表文件和扩展名为.CRF的交叉索引文件。目标文件是必须建立的,它包含了程序中所有的机器码指令和伪指令指出的各种有关信息,但该文件中的操作数地址还不是内存的绝对地址,只是一个可浮动的相对地址。列表文件(.LST)中包含了源程序的全部信息(包括注释)和汇编后的目标程序,列表文件可以打印输出,可供调试

汇编语言程序设计的实验环境及实验步骤

汇编语言程序设计的实验环境及实验步骤 1、汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行: (1) 编辑源程序(生成.ASM文件) (2) 汇编源程序(.ASM → .OBJ) (3) 连接目标程序(.OBJ → .EXE ) (4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5) 运行程序输出结果。 2、Windows环境下的汇编语言集成编程环境的使用 实验一 DOS环境下的汇编语言编程环境使用(基础与验证型) 实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏汇编程序MASM的使用; 4、熟练掌握连接程序LINK的使用。 实验涉及的主要知识单元 1、编辑源程序 例如,编写程序,可以在DOS模式下用编辑程序edit.exe建立汇编语言源程序文件Hello.asm,注意文件名的扩展名必须是.asm。 也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“cmd”进入DOS模式,运行edit软件,例如:C:> edit hello.asm

2、汇编语言源程序的汇编过程 汇编程序调入后,首先显示版本号,然后出现三个提示行。 第一个提示行为:Object filename [HELLO.OBJ]: 询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示)。 第二个提示行为:Source listing [NUL.LST]: 询问是否建立列表文件。若不建立,直接回车;若要建立,可以输入文件名hello再回车。列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序调试。 第三个提示行为:Cross-reference [NUL.CRF]: 询问是否要建立交叉索引文件。若不建立,则直接回车;若要建立,可以输入文件名。 以上过程也可用masm hello;一步完成。最后的;表示masm命令全部用默认选项,不出现三个提示。 2、目标程序的连接过程 在连接程序调入后,首先显示版本号,然后出现三个提示行。 第一个提示行为:Run File [HELLO.EXE]: 询问要产生的可执行文件的文件名。一般直接回车采用规定的隐含文件名。 第二个提示行为:List File [NUL.MAP]: 询问是否要建立连接映象文件。若不建立,则直接回车;若要建立,则输入文件名再回车。

试编写一个汇编语言程序

1、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来. 答案: abc: mov ah,1 int 21h cmp al,'a' jb stop cmp al,'z' ja stop sub al,20h mov dl,al mov ah,2 int 21h jmp abc stop: ret 2、编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示"MATCH",若不同则显示"NO MATCH". 答案: datarea segment string1 db 'asfioa' string2 db 'xcviyoaf' mess1 db 'MATCH','$' mess2 db 'NO MATCH','$' datarea ends prognam segment main proc far assume cs:prognam,ds:datarea start: push ds sub ax,ax push ax mov ax,datarea mov ds,ax mov es,ax begin: mov cx,string2-string1 mov bx,mess1-string2 cmp bx,cx jnz dispno lea dx,addr lea si,string1 lea di,string2 repe cmpsb jne dispno

lea dx,mess1 int 21h ret dispno: mov ah,9 lea dx,mess2 int 21h ret main endp prognam ends end start 3、试编写程序,要求从键盘输入3个16进制数,并根据对3个数的比较显示如下信息: (1)如果3个数都不相等则显示0; (2)如果3个数中有2个数相等则显示2; (3)如果3个数都相等则显示3. 答案: data segment array dw 3 dup( ) data ends code segment main proc far assume cs:code,ds:data start: push ds sub ax,ax push ax mov ax,data mov ds,ax mov cx,3 lea si,array begin: push cx mov cl,4 mov di,4 mov dl,' ' mov ah,02 int 21h mov dx,0 input: mov ah,01 int 21h

实验1_建立windows环境下32位汇编语言开发环境

实验1 win 32汇编程序的编程环境 实验步骤: 1安装开发环境 解压masm32v11r.zip,并运行MASM32 SDK开发软件“install.exe”,将MASM32安装在根目录下。 2 EditPlus多功能编辑器 EditPlus的配置方法如下: 1、在“工具”->“首选项…”中转到“文件类型及语法”。 2、在“文件类型”中选中WIN32ASM文件类型,并进行修改,将文件扩展名设为“ASM”, 扩展名设为“ASM”。语法文件选择asm.stx。 3 定制开发环境 为这个环境建立一个设置环境变量的批处理文件 Var.bat,其内容如下: @echo off set Masm32Dir=f:\Masm32 set include=%Masm32Dir%\Include;%include% set lib=%Masm32Dir%\lib;%lib% set path=%Masm32Dir%\Bin;%Masm32Dir%;%PATH% set Masm32Dir= echo on 文件中设置了3个环境变量: ●include变量指定头文件的搜索目录。在asm和rc文件中可以根据这个变量寻找include语句指定的文件名,避免了使用头文件的全路径名,这样以后移动了MASM32的安装位置就不必修改每个源文件中的include语句。如果使用Visual C++的集成环境来建立rc文件的话,为了使rc.exe 能找到头文件,还要把VC++安装目录下的Include和MFC\Include目录包含进来,多个路径之间用

“;”隔开; ● lib变量指定导入库文件的搜索目录。在asm文件中可以根据这个变量寻找includelib语句指定的导入库文件,Link.exe也根据这个变量寻找库文件的位置。 ● path变量就不必多解释了。它只是使我们不必在键入命令时带长长的路径而已。 4、使用EditPlus建立TEST.asm源程序并保存 .386 .model flat,stdcall option casemap:none include windows.inc include user32.inc includelib user32.lib include kernel32.inc includelib kernel32.lib .const szCaption db '恭喜',0 szText db '当您看到这个信息的时候,您已经可以编译Win32汇编程序了!',0 .code start: invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK invoke ExitProcess,NULL end start 5 、建立汇编连接32位应用程序的makefile文件 make可以根据文件的时间正确判断文件的新旧并执行相应的步骤。Makefile作为一个描述文件来告知make文件之间的依赖关系。执行make工具的时候,它会默认用makefile做描述文件名来进行相应的工作,书写描述文件有规定的语法。本试验使用的makefile内容如下:EXE = Test.exe #指定输出文件 OBJS = Test.obj #需要的目标文件 RES = Test.res #需要的资源文件 LINK_FLAG = /subsystem:windows #连接选项 ML_FLAG = /c /coff #编译选项 $(EXE): $(OBJS) $(RES) Link $(LINK_FLAG) $(OBJS) $(RES) .asm.obj: ml $(ML_FLAG) $< .rc.res: rc $< clean: del *.obj del *.res 6 、在命令行窗口下运行nmake,进行编译连接,显示结果

实验1 建立windows环境下32位汇编语言开发环境

实验1 建立windows环境下32位汇编语言开发环境 实验目的:建立windows环境下32位汇编语言开发环境,并熟悉它的使用方法。 实验要求:(1)建立windows环境下32位汇编语言开发环境; (2)熟悉自己建立的开发环境的使用方法; (3)熟悉调试工具的使用 实验内容:(1)定制masm32集成开发环境,使之符合教学要求。 (2)分别建立汇编,连接,和汇编&连接批处理命令,能够生成包含调试信息的目标文件,列表文件,以及能够进行调试的可执行WIN32控制台程序。 (3)建立16位和32位汇编语言框架程序。 (4)在自己建立的开发环境下汇编,连接,运行教材中的例3-1和例3-2。 (5)练习使用WinDbg调试工具,运行教材中的例3-5。 实验步骤: 1、安装开发环境 运行《32位汇编语言程序设计》教材配套开发环境软件“开发工具.exe”,将MASM32安装在根目录下(例如:c:\masm32)。接着运行Exmasm32.exe,将其它软件安装在masm32的目录下(例如:c:\masm32)。建立masm32文件夹中的qEditor.exe和Windbg.exe桌面快捷方式。 2、定制开发环境 修改文件msm32\bin\buildc.bat中的内容,使得执行Project\Console Assemble & Link后能够汇编连接可调试的32位控制台应用程序,同时生成列表文件。 汇编命令改为: \masm32\bin\ml /c /coff /Fl /Zi “%1.asm” 连接命令改为: \masm32\bin\link /debug “%1.obj” 3、建立汇编连接16位应用程序的批处理文件make16.bat 建立汇编连接16位应用程序的批处理文件make16.bat,可以用于汇编连接可调试的实模式应用程序,同时生成列表文件。 make16.bat的主要内容: \masm32\bin\ml /c /Fl /Zi "%1.asm" \masm32\bin\Link16 /debug "%1.obj" 4、建立适合在定制开发环境下使用的32位应用程序框架 .386 ;必须是第一条非注释语句,说明这是一个32位应用程序 .model flat, stdcall ;定义程序的存储模式(32位应用程序中必须采用flat) include \masm32\include\io32.inc ;可选,如果在程序中使用作者自定义的宏命 令需要这一句 .stack 4096 ;定义堆栈段 .data ;定义数据段 ……;数据定义 .code ;定义代码段 start: ;程序起始点 ……;程序代码 ret ;程序结束点,返回WINDOWS

汇编语言之程序的基本结构

第6章程序的基本结构在前面几章,我们分别介绍了用汇编语言进行程序设计所需要的几个最基本的知识:存单元的寻址方式,变量定义和各种汇编指令格式。在掌握了这些基本容之后,就需要学习如何把它们组成一个完整的汇编语言程序。 6.1 源程序的基本组成 汇编语言源程序的组成部分有:模块、段、子程序和宏等。一个模块对应一个目标文件,当开发较大型的应用程序时,该程序可能由若干个目标文件或库结合而成的。有关模块和子程序的知识和宏在第7章介绍,有关宏的知识将在第9章中叙述。 6.1.1 段的定义 微机系统的存是分段管理的,为了与之相对应,汇编语言源程序也分若干个段来构成。8086CPU有四个段寄存器,在该系统环境下运行的程序在某个时刻最多可访问四个段,而80386及其以后的CPU都含有六个段寄存器,于是,在这些系统环境下开发的运行程序在某个时刻最多可访问六个段。 不论程序在某个时刻最多能访问多少个段,在编程序时,程序员都可以定义比该段数更多的段。在通常情况下,一个段的长度不能超过64K,在80386及其以后系统的保护方式下,段基地址是32位,段的最大长度可达4G。 段的长度是指该段所占的字节数:

、如果段是数据段,则其长度是其所有变量所占字节数的总和; 、如果段是代码段,则其长度是其所有指令所占字节数的总和。 在定义段时,每个段都有一个段名。在取段名时,要取一个具有一定含义的段名。 段定义的一般格式如下: 段名 SEGMENT [对齐类型][组合类型][类别] …;段的具体容 … 段名 ENDS 其中:“段名”必须是一个合法的标识符,前后二个段名要相同。可选项“对齐类型”、“组合类型”和“类别”的说明作用请见6.3节中的叙述。 一个数据段的定义例子: DATA1 S EGMENT word1 D W 1, 9078H, ? byte1 DB 21, 'World' DD 12345678H DATA1 E NDS 一个代码段的例子: CODE1 S EGMENT

在微机上开发汇编语言程序的过程可以概括为以下四个步骤

在微机上开发汇编语言程序的过程可以概括为以下四个步骤:建立汇编语言源程序文件(.ASM);生成目标程序(.OBJ);产生可执行文件(.EXE);程序执行。 1.建立汇编语言源程序文件(.ASM) 可在记事本中编辑汇编源程序,如图1。但一般记事本文件(即文本文件)保存以后的后缀名为“.txt”,见图2;而汇编源程序的后缀名必须是“.ASM”,所以在保存时,需对“文件名”及“保存类型”作相应的修改,如图3。 图1 记事本中编辑汇编源程序 图2 记事本文件(txt文件) 图3 汇编源文件(ASM文件) 2.生成目标程序(.OBJ) 由编辑程序建立的汇编语言源程序文件是不能为机器所识别的,必须要经过汇编程序对其进行汇编,生成二进制代码的机器语言程序,即目标程序(.OBJ),完成该任务需要使用汇编程序(MASM.EXE)。令汇编程序(MASM.EXE)、链接程序(LINK.EXE)及所编辑的源程序(.ASM)都保存在F盘的MASM子目录下。在汇编语言中,大小写不敏感。 首先进入DOS界面,进入F:\MASM目录下,键入masm命令,如图4。 图4 DOS界面

在转换的过程中,汇编程序将对源程序进行扫视,如果源程序中有语法错误,则汇编结束后,汇编程序将指出源程序中的错误(如图5),用户还可以用编辑程序来修改源程序中的错误,最后得到无语法错误的OBJ文件(如图6)。 图5 有语法错误时的汇编界面 图6 无语法错误时生成OBJ文件 3.产生可执行文件(.EXE) 汇编产生的.OBJ文件,其所有的地址都是可浮动的偏移地址,即相对地址,机器不能直接运行,必须用链接程序(LINK.EXE)对其进行链接装配,产生可执行文件,即EXE文件。 在F:\MASM目录下,键入LINK命令,再输入待链接的.OBJ的文件名,生成EXE文件,如图7。 图7 链接生成EXE文件 4.程序执行 经过汇编、链接后生成EXE文件,可在DOS下直接键入文件名(可不必键入扩展名.EXE)运行。比如,在实验一(顺序程序设计)中,汇编源程序为SHI1.ASM,汇编链接后生成SHI1.EXE 文件,运行“SHI1”,显示结果如图8。 图8 执行EXE文件

汇编语言_研究试验1_搭建一个精简的C语言开发环境

汇编语言课程实验报告 实验名称 搭建一个精简的C语言开发环境 实验环境 硬件平台:Intel Core i5-3210M 操作系统:DOSBox in Windows 8.1 软件工具:Turbo C 2.0 实验内容 在TC2.0的安装目录下,有很多的文件和子目录,子目录下面还有很多的程序和文件。我们需要知道,哪些程序和文件是用于解决哪些问题的。通过编译链接一个最简单的C语言程序,我们可以将已知的需要用到的程序和文件与其他的程序和文件分离开来。 实验步骤 1.在D盘建立一个目录tc2,0。在DOS环境中,方法如下: D:\md tc2.0 然后将 tc2.0的所有文件都拷贝到D:\ tc2.0目录下。 2.在C盘建立一个目录minic(用来存放我们已知的解决问题要用的程序和文件)。在 DOS 环境中,方法如下: C:\md minic 3.把我们都已知的tc.exe拷贝到C:\minic下: C:\minic\copy D:\tc2.0\tc.exe 经过此步骤后,C:\minic下结构如下: 4.运行tc.exe C:\minic\tc

用tc环境中的菜单项“Options”中的“Directories”选项,对tc的工作路径进行清空并保存。如下: 5.在tc.exe环境中编辑程序simple.c,保存到C:\minic下。 6.用tc环境中的菜单项“Compile”中的“Compile to OBJ”,对程序simple.c进行编译。 显示编译成功,如图:

7.用tc环境中的菜单项“Compile”中的“Link EXE file”,对程序simple.obj进行连接。 显示连接不成功,如下: 按任意键后,程序显示了连接所缺失的文件:

实验一 熟悉汇编语言开发环境及顺序程序设计

实验一熟悉汇编语言开发环境及顺序程序设计 一、实验目的 1.学习汇编语言的开发环境和过程。 2.掌握顺序程序的设计方法。 二、实验设备 1.PC机一台; 2.TDN86/88教学实验系统一台。 三、实验内容及步骤 1.系统认识实验 从3500H内存单元开始建立0-15共16个数据。 实验参考程序如下: STACK1SEGMENT STACK ;8088 宏汇编程序 DW 64 DUP(?) ;定义堆栈段 STACK1ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE START: MOV DI,3500H ;程序开始设数据区首址 MOV CX,0010H ;字节数送入CX中 MOV AX,0000H A1: MOV [DI],AL ;写入一字节 INC DI ;修改地址指针 INC AX ;修改数据 LOOP A1 ;未填完转移 A2: JMP A2 CODE ENDS;代码段结束 END START ;程序结束 实验步骤 (1)启动Wmd86联机软件 Wmd86联机软件的启动方式有两种,可以在【开始】/【程序】/【TangDu】菜单中单击“Wmd86”的程序组启动,也可以直接双击桌面上的“Wmd86”快捷键启动该程序组。启动应用程序进入主界面窗口后,应显示“串口通讯成功”小窗口,若显示“串口通讯不成功”,说明上位机和下位机的连接不正常或下位机死机,请确认下位机电源已经打开,串口线两端接触良好。 (2)输入源程序,检查无误后存盘。 (3)对源程序进行编译、链接和加载,可以使用编译菜单项,也可以使用编译工具栏。 (4)运行程序,观察结果。 连续运行程序,在输出区中的调试区用DEBUG命令观察运行结果,即键入D0000:3500 ↙,可查看3500H-350FH单元中的内容是否为0-F共16个数。注意,因本程序的结尾为死循环,应在程序运行后停止运行再观察结果。 (5)熟悉系统提供的单步运行、断点运行等功能,可以使用调试菜单项,也可以使用调试工具栏。 2.二进制双精度加法运算 计算X+Y=Z,实验程序如下: DATA SEGMENT

相关文档
相关文档 最新文档