[16位汇编语言程序的集成开发]调试器模块的设计与实现_第1页
[16位汇编语言程序的集成开发]调试器模块的设计与实现_第2页
[16位汇编语言程序的集成开发]调试器模块的设计与实现_第3页
[16位汇编语言程序的集成开发]调试器模块的设计与实现_第4页
[16位汇编语言程序的集成开发]调试器模块的设计与实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

16位汇编语言程序的集成开发调试器模块的设计与实现 Visual Masm 集成开发工具的设计-调试器模块的设计与实现 刘永坚 计算机科学与工程学院 指导教师 李 晟 摘要:本设计主要完成了16位汇编语言程序的集成开发环境Visual Masm的开发,改善现有的各种汇编程序开发环境并增加它们所不具有的功能。本文主要介绍了编译、调试两个功能部分,实现汇编代码的编译、链接、调试等功能,并提供友好的用户界面,为汇编语言的编译、链接、调试提供了可视化的开发环境,并详细介绍了管道管理模块、调试模块、寄存器管理模块。 关键词: 汇编 调试器 管道 重定向 Design and Realization of Debugger in Visual Masm Liu Yong-jian College of Computer Science and Engineering Faculty adviser Li Sheng Abstract: This thesis describes the design and realization of debugger in Visual Masm integrated development environment (IDE) for 16 bits assembly programming language, it improves the current existing IDE for assembly language and add some new feature. The Visual Masm IDE introduces two core modules, piler and linker. It provides the functions of piling, linking and debugging the assembly program, with a friendly user interface, such as the automatic locating of source code with errors. The system described in this thesis was designed for providing a visual integrated development environment for the piling, linking and debugging of assembly program, and try to describe the detail of the pipe management module, debugging module and registers management module. Key words: assembly language; debugger; pipe; redirection 汇编语言是一种低级语言,它具有直接操纵硬件的能力,一直以来在底层开发应用得比较多,比如说在单片机、板卡驱动程序、系统内核等领域。由于汇编语言与具体的机器指令有关,能直接操作硬件(例如:寄存器、端口、内存),而且没有结构化的控制语句,使得汇编语言难学难懂,用汇编语言来开发软件更难。传统的汇编语言开发工具一般是用一般的工具,如:记事本、Edit等文本工具来编写源文件,再在Dos下编译、连接成一个可执行文件。或者用Masm 6.0来开发汇编语言程序。在这两种开发方式中,程序员要负责每一行代码的编写,工作量大又容易出错。这也是每一个汇编语言初学者惧怕汇编语言的一个方面。长期以来汇编语言被认为是一门枯燥难学的语言,在入门时需要记忆大量的指令,而且往往需要对硬件的组成和运行机制有所了解,由于直接与系统底层打交道,要实现的每一部分功能都必须由程序员完全负责实现,哪怕是在高级语言里面看来是一行代码即可实现的最简单的一条语句,到了汇编语言则往往变成需要靠多行指令来完成。要解决这种问题,需要一个优秀的IDE(集成开发环境)来提高使用汇编语言学习和开发软件的效率。Visual Masm是一个集,编译(masm),连接(link),调试(debug)于一体;具有自动初始化代码能力,并提供一些常见操作的开发包,可以自动产生常见操作的汇编语言代码;拥有智能化的环境;具有关键字高亮功能,并可标记行数,记行报错,提供的可视化的调试界面。 多线程在各种流行的操作系统中都有实现,是一种是用来实现多种操作的并发执行的机制,它是操作系统代码的运行环境中的最小执行单位,每个进程都必须至少有一个线程,多线程编程在系统编程中属于较为复杂的技术,它涉及到对线程的控制问题。在本次设计中,必须运用多线程编程技术来配合管道技术实现调试模块的功能。 要达到捕获其他程序的输出(标准输出stdout、标准错误输出stderr)和向其输入(标准输入stdin)的目的,实际上就是要实现进程间的信息交换,进程之间互相交换信息的工作称之为通信IPC(Inter Process Communication)。 管道是用于进程间通信的一段共享内存,创建管道的进程称为管道服务端(Server),而连接这个管道的进程则称为管道客户端(Client)。事实上,和我们日常生活中的水管类似,管道这一术语非常形象地描绘了它在概念上的特征:通常它具有两端,用以连接两个进程;其中一个进程向管道写入数据,另外一个进程则从管道中读取数据。 600)makesmallpic(this,600,1800); src=file:/C:/DOCUME1/ADMINI1/LOCALS1/Temp/ksohtml/wps_clip_image-31584.png width=555 height=63 / 图1 管道的通信机制 由于需要引用别的程序(MASM汇编器、链接器、debug)来实现编译链接功能和调试功能,那么在通过管道来重定向他们的输入输出之前必须要先解决一个问题:那就是先让这些程序运行起来,此外为了便于控制,也必须要将它们作为程序的一个子进程来创建,只有这样才能用管道将子进程和用户的程序连接起来,并且能有效管理子进程,给用户提供了在执行操作的过程中取消操作的机会。 整个系统的架构如下图所示: 600)makesmallpic(this,600,1800); src=file:/C:/DOCUME1/ADMINI1/LOCALS1/Temp/ksohtml/wps_clip_image-12045.png width=541 height=260 / 图2 整体系统架构 Visual Masm开发工具具有三大模块:器、编译链接、调试器。其中有很大一部分工作在底层是依靠外部程序来完成的。编译程序使用masm.exe,链接程序使用link.exe,调试程序使用debug.exe。这些外部程序并非特别为本系统而设计,需要对它们进行进一步的封装,使它们能融入Visual Masm开发工具。 在Windows系列操作系统下,控制台程序可使用系统提供的IO库来实现对硬件设备的流式输入/输出,程序员可向标准输出(stdout,硬件目标通常是显示器或打印机)正常输出各种数据,或通过标准输入(stdin,硬件目标通常是键盘等输入设备)接受用户输入的数据,或在程序运行出错或崩溃时通过标准错误(stderr)输出调试、警告信息等: 600)makesmallpic(this,600,1800); src=file:/C:/DOCUME1/ADMINI1/LOCALS1/Temp/ksohtml/wps_clip_image-10724.png width=638 height=137 / 图3 管道的正常导向 比如,在C+中,通过stdin/stdout/stderr实现输入输出的典型代码如下: cin num; / 通过stdin输入数据 if(num = 0) cout num; / 通过stdout输出数据 else cerr 图4 被重定向的管道 重定向I/O是借助于管道来引导数据流,运用场合通常是在一些IDE(集成开发环境)上,比如在编译调试程序时会在output窗口中显示相关的信息。 采用I/O重定向技术,可以在程序中调用其他控制台程序来执行某些工作并将执行过程和结果输出。为了使外部16位的编译、链接、调试程序能在系统中受到控制,需要使用操作系统的命令行解释器程序来启动,通过把要运行的16位程序的路径作为参数传给命令行解释器才能成功重定向。 为了实现基于源代码的调试功能,需要先通过debug的u指令反汇编程序得到所有指令的内容和地址等信息,然后分析汇编代码,将源代码跟编译后的二进制汇编指令的关系对应起来,如下图所示: 600)makesmallpic(this,600,1800); src=file:/C:/DOCUME1/ADMINI1/LOCALS1/Temp/ksohtml/wps_clip_image-13173.png width=587 height=239 / 图5 分析对应关系 只有这样才能灵活地在任意一行源代码对应的汇编指令上设置/删除断点和对程序进行调试的各种操作(如step into、step over等)。而分析汇编代码的难度也比较大,需要分析汇编源代码里的所有标号、指令、声明等,依靠这些信息在反汇编结果中找出每一行汇编源代码对应的地址并记录起来以供使用。 这样做的目的是在实现调试的时候可使用

温馨提示

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

评论

0/150

提交评论