文档库 最新最全的文档下载
当前位置:文档库 › 详解汇编语言开发环境搭建方法

详解汇编语言开发环境搭建方法

详解汇编语言开发环境搭建方法
详解汇编语言开发环境搭建方法

于这些日子一直都在研究底层的技术,从 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 命令

输入 Edit 命令从而弹出汇编源码编辑框

在源码输入框中输入汇编源码

将编辑好的汇编源码保存到 xx.asm 文件中

然后就是要编译编辑好的汇编源代码

在 Dos 环境下进入到 MASM 5.0 汇编编译器所在的目录

然后运行 masm.exe

可以从上面的截图中看到 [. ASM] 的标记,这个标记代表的是需要在这里输入要编译的源程序文件名,

这里有一点特别的是,由于默认的文件扩展名为 .asm ,所以在编译 .asm 的汇编源程序时可以不用指定源程序所在文件的扩展名。

我们将一开始编辑好的汇编源程序所在的文件输入以进行编译

指定文件所在路径后按 Enter 键

此时可以看到编译器提示需要输入要编译出的目标文件的名称,由于在一开始已经指定了 BoyXiao. asm ,

所以编译器自动指定了目标文件的名称为 BoyXiao. obj 的名称,如果在这里不做修改的话,

则编译器会以默认目标文件名称 BoyXiao. obj 进行输出,在这里我并不改变名称,所以直接按 Enter 键即可

此时又提示需要输入列表文件的名称,其实是完全可以不要让编译器生成这个 LST 文件的,所以也不需要进行输入,

直接按 Enter 键即可

此时又提示需要输入交叉引用文件的名称,这里也完全可以不要让编译器生成这个 CRF 文件,

所以也不需要进行输入,直接按 Enter 键即可

至此,汇编源程序编译成功,

编译得到的结果就是在我的 E:\Tools\MASM\MASM 5.0 目录下生成了一个

BoyXiao.obj 文件

下面就是要实现对目标文件的连接

经过编译操作后,我们得到了一个 .obj 的目标文件,但很显然,这还并不是一个可执行文件,

下面就需要对目标文件进行连接,从而得到一个可执行文件。

一般来说,需要准备一个连接器,这里我使用的是微软提供的 Linker 连接器,即LINK.EXE ,

进入 LINK.EXE 文件所在目录,直接运行 LINK.EXE

此时提示需要输入被连接的目标文件的名称,这里也就是 BoyXiao.obj ,

由于我的 BoyXiao.obj 和 Link.exe 在同一目录下,所以不需要指定路径,直接给出 .obj 的名称即可,

按 Enter 键

这里提示需要输入要生成的可执行文件的名称,此时如果想要将可执行文件输入到指定目录下,

则需要指定目录,否则只需要指定名称即可,并且可以看到名称已有默认值:BOYXIAO.EXE

在这里我选择默认值,所以直接按 Enter 键即可

按 Enter 键

又继续提示需要输入映像文件的名称,在这里,不需要生成这个文件,所以直接按 Enter 键即可

此时又提示需要输入库文件的名称,由于我们的这个程序中没有使用任何的子程序,也就是根本没有调用什么库文件,所以这里也可以直接按 Enter 键处理

至此,整个目标文件的连接工作结束,得到的结果是一个 EXE 文件

执行汇编程序

其实执行起来是看不到什么结果的,因为上面的汇编代码没有输出任何内容,而只是改变了几个寄存器的值而已,

自然也就看不到任何的输出了。

第二种方式:使用 Edit + MASM 5.0 编译器 + Linker 连接器(简化版)

这种方式其实和第一种方式说不上有什么区别,只不过在编译和连接过程中使用了很多编译器和连接器的默认设置而已

软件准备:

和第一种方式一样

编辑汇编源代码:

和第一种方式一样,也可以是直接使用文本编辑器编辑即可

编译编辑好的汇编源代码

直接到 MASM.EXE 文件目录,然后直接使用 masm 编译指定路径的文件即可

特别注意的是,需要在目录的后面加上“;”

同样在 E:\Tools\MASM\MASM 5.0 目录下生成了 BoyXiao.obj 目标文件

实现目标文件的连接

同样,直接下到连接器 LINK.EXE 文件所在的目录,然后直接使用 LINK 连接指定的目标文件即可

同样需要注意在目录或文件名的后面加上“;”第三种方式:MASM For Windows 集

成开发环境

上面的两种方式都显得非常麻烦,编译了还要连接,谁有那么多时间去浪费啊,

所以,下面介绍的这个 MASM For Windows 集成开发环境就显得非常有优势了,

软件准备:

MASM For Windows 集成开发环境,我这里使用的是 2010 版本,大小 15.5 MB

实现 HelloWorld

直接打开 MASM For Windows 集成开发环境,然后找到范例程序,然后直接运行即可

可以看出,使用这个东东确实会方便很多很多

种方式中一样,

即看不到任何输出

第四种方式:使用 Visual Studio 来实现开发汇编程序

软件准备:

既然是使用 Visual Studio 来开发了,自然就需要 Visual Studio IDE 了,在这里呢,我使用的是 Visual Studio 2010 ,当然 2008 和 2005 都是可以的,只不过在一些设置上有些许区别而已,在这里,我也不做区分,大家感兴趣的可以去网上淘一大把,

然后就是<>中的 Irvine 包,这个在网上也有一大把

VS 2010 设置:

在 VC++ 中新建一个空项目,取名为 Test

定制 VC++ 工程构建规则

32位汇编语言程序设计上机指导

《32位汇编语言程序设计》上机指导 《32位汇编语言程序设计》上机指导 (1) 实验一建立windows环境下32位汇编语言开发环境 (2) 实验2 指令格式与寻址方式 (4) 实验3 数据操作编程 (5) 实验4 分支和循环程序设计 (6) 实验5 子程序设计 (8) 实验6 输入输出程序设计 (9) 实验7:字符串操作 (10) 实验8:宏结构设计 (11) 实验9:混合编程 (12) Windows环境下32位汇编语言开发环境的建立 (13) 调试程序Windbg (19) 宏汇编命令ML和连接命令LINK常用参数速查 (22) 输入输出宏命令 (23)

实验1 建立windows环境下32位汇编语言开发环境 实验目的:建立windows环境下32位汇编语言开发环境,并熟悉它的使用方法。 实验要求:(1)建立windows环境下32位汇编语言开发环境; (2)熟悉自己建立的开发环境的使用方法; (3)熟悉调试工具的使用 实验内容:(1)定制masm32集成开发环境,使之符合教学要求。 (2)分别建立汇编,连接,和汇编&连接批处理命令,能够生成包含调试信息的目标文件,列表文件,以及能够进行调试的可执行WIN32控制台程序。 (3)建立16位和32位汇编语言框架程序。 (4)在自己建立的开发环境下汇编,连接,运行教材中的例3-1和例3-2。 实验步骤: 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” 1、建立汇编连接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 ……;子程序代码 end start ;汇编结束

不要把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/e48684304.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 调出内存查看窗口)理解每步的执行结果。(注意课件中只是大部分代码,请补全头文件以及程序退出宏。)

详解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 命令

汇编语言程序设计实验教程

汇编语言程序设计实验教程

目录 第一章上机过程 (4) 1.1编辑源程序 (4) 1.2 汇编源程序 (5) 1.3连接目标程序 (6) 1.4运行程序 (7) 第二章DEBUG命令祥解 (8) 2.1 DEBUG程序使用 (8) 2.2 DEBUG的常用命令 (8) 第三章汇编语言程序设计实验 (13) 3.1实验一顺序与分支程序设计 (13) 3.2 实验二循环与子程序程序设计 (15) 3.3 实验三算术运算与代码转换程序设计 (16) 3.4 实验四字符串的匹配与替换程序设计 (18) 3.5 实验五输入输出程序设计 (19) 第四章部分实验参考答案 (21)

第一章上机过程 1.1编辑源程序 汇编语言源程序:用汇编语句编写的解决应用问题的程序。 汇编程序:将汇编语言源程序翻译成机器语言程序的系统。 汇编:将汇编语言程序翻译成机器语言程序的过程。 在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。 (1)编辑软件 编辑软件:EDIT、QE、WORD、NOTEPAD等。 当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。 (2)汇编程序 有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。 (3)连接程序 用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的目标代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。 (4)辅助工具程序(.EXE) 进行汇编语言程序调试和文件格式转换的程序有: https://www.wendangku.net/doc/e48684304.html, 动态调试程序 EXE2BIN.EXE文件格式转换程序

使用VS2015调试罗云彬的32位汇编语言源代码

使用VisualStudio2015 调试罗云彬的32位汇编语言附属光盘中的汇编源代码 (第三版琢石成器版) 整理:太虚野老

本文介绍使用Visual Studio 2015 调试汇编源代码。以罗云彬的《Windows环境下32位汇编语言程序设计(最新琢石成器版)》附属光盘中的汇编源代码为例。 1.创建ASM项目 打开Visual Studio 2015,选择新建一个VC++项目。选择“空项目”,输入项目名称,点确定。 在工程中的“源文件”文件夹新建“.asm”类型的源文件: 在这里会发现不能新建“.asm”类型的文件,选择“C++文件(.cpp)”,然后在文件结尾加上扩展名.asm。

现在项目和源文件都有了,但是这毕竟是个VC++的空项目,VC++项目在默认情况下是不会编译.asm类型的源文件的。所以你点击“生成解决方案”发现根本什么都没有生成,Debug文件夹是空的,就会出现这样的现象。 事实上在创建源文件时,可以使用任意格式的源文件。例如使用文本文件:

要经过下面两步设置。 第一步,右击解决方案选择“生成依赖项”→“生成自定义”: 把“MASM”那项勾上,确定。

第二步,右击你创建的.asm源文件,选择属性,在配置属性->常规->项类型下拉菜单中选择“Microsoft Macro Assembler”。这样就指定了你源文件的类型是.asm格式的,如果不指定默认就是按照.cpp也就是c++语法去编译自然是行不通的。 设置这些之后还要去修改项目配置,这样程序才能得以运行。这包括是否连接其他的库文件(.lib)、是否调试、子系统的原型环境。这些全部都在项目属性中设置。打开项目属性的方法:你可以在刚才右键点“生成自定义”那里选择最下面的属性,也可以在项目选项卡里找到“属性”一项然后选择。 选择配置属性->连接器。 把调试->生成调试信息改为“是(/Debug)”。在Visual Studio 2015中默认是“true”; 把系统->子系统改为“控制台(/SUBSYSTEM:CONSOLE)”:

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)

80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著) 《计算机操作系统原理》 《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。 《数据结构和算法》——这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时) 《软件工程》——这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华) 《Windows 程序设计》——《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本 建议:你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书 关于编程的网站 计算机编程 郭新明-FTP服务器体验式学习课程(张孝祥监制) https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=3997 https://www.wendangku.net/doc/e48684304.html,快速开发新闻系统在线播放 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=4708 数字电路基础[宁波电大] https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=774 计算机组成与汇编语言程序设计(赵丽梅)宁波电大 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=1242 操作系统(陈访荣)宁波电大(在线播放) https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=4708 计算机网络(马敏飞)宁波电大 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=1243 https://www.wendangku.net/doc/e48684304.html, 2.0快速入门(12)-https://www.wendangku.net/doc/e48684304.html, 2.0网站快速导航 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=2501 Internet和Intranet应用(薛昭旺)宁波电大 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=1245 2004年电脑硬件安装调试维修视频教学讲授 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=4825 https://www.wendangku.net/doc/e48684304.html, 高级排错技巧 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=768 SQL Server 2000管理专家系列课程 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=4832 开心三人行系列(2):使用Atlas 构建AJAX应用 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=2564 Visual Basic 2005开发技巧系列课程(4): 在Visual Basic 2005中使用.NET Framework 2.0新增功能 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=2526 SQL Server 2005 系列课程-使用ADO https://www.wendangku.net/doc/e48684304.html,开发SQL Server 2005 OLAP应用 https://www.wendangku.net/doc/e48684304.html,/so/so138.aspx?id=2535

汇编语言程序设计(钱晓捷)课后答案

汇编语言程序设计(第二版) 钱晓捷习题答案 第二章(01) 2.1 (1)AX=1200h (2)AX=0100h (3)AX=4C2Ah (4)AX=3412h (5)AX=4C2Ah (6)AX=7856h (7)AX=65B7h 2.2(1) 两操作数类型不匹配 (2) IP指令指针禁止用户访问 (3) 立即数不允许传给段寄存器 (4) 段寄存器之间不允许传送 (5) 两操作数类型不匹配 (6) 目的操作数应为[ BP ] (7) 源操作数应为[BX+DI] (8) 立即数不能作目的操作数 2.3 lea bx,table ;获取table的首地址,BX=200H mov al,8 ;传送欲转换的数字,AL=8 xlat ;转换为格雷码,AL=12H 2.4 堆栈是一种按“先进后出”原则存取数据的存储区域。 堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP。 2.5 mov ax,8057h push ax mov ax,0f79h push ax pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h 2.6 AL=89h CF ZF SF OF PF AL=12h 1 0 0 1 1 AL=0afh 0 0 1 0 1 AL=0afh 1 0 1 0 1 AL=00h 0 1 0 0 1 AL=0ffh 0 0 1 0 1 AL=00h 0 1 0 0 1 2.7 W=X+Y+24-Z

2.8 (1)ADD DX,BX (2)ADD AL,[BX+SI] (3)ADD [BX+0B2H],CX (4)ADD WORD PTR [0520H],3412H (5)ADD AL,0A0H 2.9;为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,D mov ax,X ;ax=A imul Y ;dx,ax = A*B (将操作数看作符号数,以下同) mov cx,ax mov bx,dx ;bx,ax <-- dx,ax =A*B mov ax,Z ;ax = C cwd ;dx,ax =C (扩展符号后为双字) add cx,ax adc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+C sub cx,540 sbb bx,0 ;bx,cx<-- A*B+C-540 mov ax, V ;ax= D cwd ;dx,ax= D (扩展符号后为双字) sub ax, cx sbb dx, bx ;dx,ax = dx,ax - bx,cx = D-(A*B+C-540) idiv X ;运算结果:[D-(A*B+C-540h)]/A ;ax存商,dx存余数 2.10;(1)xchg的操作数不能是立即数 (2不能对CS直接赋值 (3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数 第二章(02) 2.11; 指令AX的值CF OF SF ZF PF Mov ax,1407h1470h----- And ax,ax1470h00000 Or ax,ax1470h00000 Xor ax,ax000011 Not ax0ffffh----- Test ax,0f0f0h0ffffh00101 注意: 1. mov, not指令不影响标志位 2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位。

2位数计算器程序-汇编语言课程设计

信息学院课程设计题目:2位数计算器程序设计 __ 姓名: __ _____ 学号: ____ ___ 班级: 课程:汇编语言 ________ 任课教师:侯艳艳 ____ 2011年12月

课程设计任务书及成绩评定

目录 摘要 (2) 1.设计目的………………………………………………………………………………………………?2 2.概要设计………………………………………………………………………………………………?3 2.1系统总体分析…………………………………………………………………………?3 2.2程序流程图 (3) 3.详细设计......................................................................................................? (4) 3.1主程序及子程序说明 (4) 3.2程序代码编写 (4) 4.程序调试 (6) 4.1运行界面分析 (6) 4.2算法的分析 (6) 4.3调试过程及分析 (6) 5.心得体会 (7) 5.1设计体会...................................................................................................? (7) 5.2系统改进...................................................................................................? (7) 参考文献 (8)

8086汇编语言程序设计

实验1 简单汇编语言程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握简单汇编语言程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG 工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG 工具调试程序,验证程序的正确性。 1. 若X、Y、R、W 是存放8 位带符号数字节单元的地址,Z 是16 位字单元的 地址。试编写汇编程序,完成Z←((W-X) ÷5-Y)?(R+ 2) 。 2.试编写一个程序,测试某数是否是奇数。如该数是奇数,则把DL 的第0 位置1,否则将该位置0。 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验2 分支及循环程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握分支程序和循环程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,汇编连接汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编写汇编程序,统计某存储区若干个数据中英文字母的个数,并将结果在屏幕上显示。 2.从键盘任意输入一组字符数据,请编写汇编程序将该组数据加密后在屏幕上显示。参考加密方法是:每个数乘以2。(说明:本题的加密方法,同学们可以自己拟定) 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

实验3 子程序程序设计 一、实验目的与要求 1.熟悉汇编语言运行、调试环境及方法。 2.掌握子程序的设计方法。 3.熟悉调试工具DEBUG,并运用DEBUG工具调试程序。 二、实验内容 根据下列要求,编写汇编源程序,并利用DEBUG工具调试程序,验证程序的正确性。 1.编程以十进制形式和十六进制形式显示AX的内容,并把两个显示功能分别封装成子程序dispDEC和dispHEX。 2.设在以EXAMSCORE为首地址的数据缓冲区依次存放某班10名同学5门功课的成绩,现要统计各位同学的总分,并将总分放在该学生单科成绩后的单元,并调用第1个程序封装好的子程序,以十进制方式显示统计情况,显示格式自行设计。请编程完成此功能。数据缓冲区参考数据定义如下: EXAMSCORE DB 01 ;学号 DB 89,76,54,77,99 ;单科成绩 DW ? ;该学生的总分 DB 02 ;学号 DB 79,88,64,97,92 ;单科成绩 DW ? ;该学生的总分 三、实验报告要求 1.程序算法流程图。 2.源程序清单。 3.程序运行结果。 4.调试过程中遇到的问题和解决的方法。

STM32汇编语言 左右跑马灯

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;; STM32 LED左右跑马灯实验 ;;8个LED接在PE口(PE[0..7]) ;;LED先向右跑,跑完再向左跑,不停左右跑动 ;;2011-5-3 by 追梦;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; BIT6 EQU 0X00000040 GPIOE EQU 0X40011800 ;GPIOE 地址 GPIOE_CRL EQU 0X40011800 ;低配置寄存器 GPIOE_CRH EQU 0X40011804 ;高配置寄存器 GPIOE_ODR EQU 0X4001180C ;输出,偏移地址0Ch GPIOE_BSRR EQU 0X40011810 ;低置位,高清除偏移地址10h GPIOE_BRR EQU 0X40011814 ;清除,偏移地址14h IOPEEN EQU BIT6 ;GPIOE使能位 RCC_APB2ENR EQU 0X40021018 STACK_TOP EQU 0X20002000 AREA RESET,CODE,READONLY DCD STACK_TOP ;MSP主堆栈指针 DCD START ;复位,PC初始值 ENTRY;指示开始执行 START LDR R1,=RCC_APB2ENR LDR R0,[R1] ;读 LDR R2,=IOPEEN ORR R0,R2 ;改 STR R0,[R1] ;写,使能GPIOE时钟 ;PE[0..7] 8个引脚均设置成推挽式输出 LDR R0,=0x33333333 LDR R1,=GPIOE_CRL STR R0,[R1] LDR R1,=GPIOE_ODR LDR R0,=0X7F ;初始时最高位点亮 MOV R2,#0 LOOP STR R0,[R1] PUSH {R0} MOV R0,#300 BL.W DELAY_NMS ;延时300ms POP {R0} ADD R2,#1

实验一 搭建开发环境

实验一搭建开发环境 一、实验目的 搭建汇编语言的开发环境,熟悉汇编程序开发的基本步骤,掌握基本的调试操作。 二、实验内容与要求 基于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;[注释] ………………

汇编语言程序设计教程(第3版 卜艳萍)参考答案

汇编语言程序设计教程(第3版) 习题参考答案 第1章汇编语言基础知识 思考与练习 1.计算机系统分哪几个层次?简述计算机系统的硬件结构。 1)数字逻辑层 2) 微体系结构层 3) 指令系统层 4) 操作系统层 5) 汇编语言层 6) 高级语言层 7) 应用层 硬件系统是指构成计算机系统的物理实体或物理装置。它由控制器、运算器、存储器、输入设备和输出设备等部件构成。 2.简述用汇编语言进行程序设计的必要性。 1)程序要具有较快的执行时间,或者只能占用较小的存储容量。例如,操作系统的核 心程序段,实时控制系统的软件,智能仪器仪表的控制程序等。 2)程序与计算机硬件密切相关,程序要直接、有效地控制硬件。例如,I/O接口电路 的初始化程序段,外部设备的低层驱动程序等。 3)大型软件需要提高性能、优化处理的部分。例如计算机系统频繁调用的子程序、动 态连接库等。 4)没有合适的高级语言或只能采用汇编语言的时候。例如,开发最新的处理器程序时, 暂时没有支持新指令的编译程序。 5)汇编语言还有许多实际应用,例如分析具体系统尤其是该系统的低层软件、加密解 密软件、分析和防治计算机病毒等。 3.汉字编码主要分哪几类?每类的功能如何? 汉字编码主要分为四类:汉字输入码、汉字交换码、汉字机内码和汉字字形码。 1)为了能直接使用西文标准键盘进行输入,就必须为汉字设计相应的编码方法,即用 西文标准键盘上的字母数字串表示汉字的编码。目前,汉字输入编码方法主要有三 种:数字编码、拼音编码和字形编码。 2)汉字交换码:在不同汉字信息处理系统间进行汉字交换时所使用的编码,就是国标 码。无论采用哪种方法输入汉字,一旦输入到计算机中,必须采用统一的国标码标 识每个汉字。 3)汉字机内码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息 处理系统内部存储、处理、传输汉字用的编码。 4)字形编码也称为字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式。4.计算机的字长是怎么定义的,试举例说明。 计算机能同时处理二进制信息的位宽定义为计算机的字长。如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。 5.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值? 用相应进制的数值加上进制标记即可。

16、32位微机原理、汇编语言与接口技术教程课后复习题答案

《16/32位微机原理、汇编语言及接口技术教程》 部分习题参考解答 第1章微型计算机系统概述 〔习题1.2〕 什么是通用微处理器、单片机(微控制器)、DSP芯片、嵌入式系统? 〔解答〕 通用微处理器:适合较广的应用领域的微处理器,例如装在PC机、笔记本电脑、工作站、服务器上的微处理器。 单片机:是指通常用于控制领域的微处理器芯片,其部除CPU外还集成了计算机的其他一些主要部件,只需配上少量的外部电路和设备,就可以构成具体的应用系统。 DSP芯片:称数字信号处理器,也是一种微控制器,其更适合处理高速的数字信号,部集成有高速乘法器,能够进行快速乘法和加法运算。 嵌入式系统:利用微控制器、数字信号处理器或通用微处理器,结合具体应用构成的控制系统,其典型的特点是把计算机直接嵌入到应用系统之中。 〔习题1.5〕 说明微型计算机系统的硬件组成及各部分作用。 〔解答〕 CPU:CPU也称处理器,是微机的核心。它采用大规模集成电路芯片,芯片集成了控制器、运算器和若干高速存储单元(即寄存器)。处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。 存储器:存储器是存放程序和数据的部件。 外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。I/O设备通过I/O接口与主机连接。

总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。 〔习题1.6〕 什么是总线?微机总线通常有哪3组信号?各组信号的作用是什么? 〔解答〕 总线:传递信息的共用通道,物理上是一组公用导线。 3组信号线:数据总线、地址总线和控制总线。 (1)地址总线:传输将要访问的主存单元或I/O端口的地址信息。 (2)数据总线:传输读写操作的数据信息。 (3)控制总线:协调系统中各部件的操作。 〔习题1.7〕 简答如下概念: (1)计算机字长 (2)取指-译码-执行周期 (3)ROM-BIOS (4)中断 (5)ISA总线 〔解答〕 (1)处理器每个单位时间可以处理的二进制数据位数称计算机字长。 (2)指令的处理过程,即指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。 (3)ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。 (4)中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍返回被中断的指令继续执行的过程。 (5)ISA总线是指IBM PC/AT机上使用的系统总线。 〔习题1.8〕 下列十六进制数表示无符号整数,请转换为十进制形式的真值: (1)FFH (2)0H (3)5EH (4)EFH 〔解答〕 (1) 255 (2) 0 (3) 94 (4) 239

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

汇编语言的编程步骤与调试方法 一、汇编源程序的建立 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窗口

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