汇编语言程序设计 吴 向 军 中山大学计算机科学系 2003.03.20.

Slides:



Advertisements
Similar presentations
彰化縣和美鎮 和仁國民小學 本土語言教育暨 台灣母語日訪視 簡 報. 一. 學校概況 校地面積 校地面積廣達三公頃 學生活動空間寬廣!
Advertisements

第四章 衛生保健及急救 組員: 4990U002 何易芳 4990U021 張書涵 4990U035 沈采柔 4990U036 王孜瑜 4990U039 許佳靜 4990U043 黃懿華 4991U002 柳瑋翎 4991U008 陳禹伶 第五組.
C/C++ 程序设计 吉林财经大学 管理科学与信息工程学院 李艳东 : Tel :
主讲:王幸民 理学院计算机基础教学部.
本章重點 認識衣物的基本保養程序 處理不同污漬的方法 不同布料的保養方法
與櫻花有約 櫻花開放時間 櫻花前線 賞花便當 京都機場(附近) 夜櫻 哲學之道.
授课教师:江星玲 1.
培养目标 1.建立基本的程序设计概念体系,掌握基础程序设计方法。
第2章 微处理器 2.1 概述 /8086微处理器 微处理器 X86/Pentium微处理器
本章重點 認識香港不同年代時裝的特色 透過對服裝歷史的認識,了解香港的穿衣文化 透過服裝歷史加強對時裝潮流循環的洞悉力
了解你的輪廓線(三)體型篇 五官體型總體檢.
美洲集团散拼项目分享 李维迪.
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
单片机应用技术 项目一 循环彩灯装置 第7讲 Keil软件的使用 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
计算机体系结构 应用程序 软件 操作系统 编译器 固件 指令集 输入输出 CPU 硬件 内存 (I/O) 集成电路 元件,逻辑门.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
我国的宗教政策 第七课第三框.
第10章 DOS功能调用与BIOS中断调用.
Visual Basic程序设计 主 编  柳青.
認識拿破崙˙波拿巴 關於一位運氣很差的矮子的趣事兩三件 我不是矮子!! 本日主角 重點不是這個吧? 惡搞人員:橘蘋3顆和一隻小精靈.
北国江南 江南北国 信阳市,位于河南省南部,是中国河南省下辖的一个地级市,在唐代时简称“申州”,故又称“申城”。它是江淮河汉间的战略要地,豫南政治、经济、文化、教育、交通、物流中心,也是“鄂豫皖”区域性中心城市。信阳山水秀丽,气候宜人,素有“北国江南,江南北国”之美誉,是中国著名的宜居之城。信阳自古以来人杰地灵、英雄辈出,境内有中国四大避暑胜地之一的鸡公山、“中原第一湖”南湾湖、国家地质公园金刚台,唐、明两朝国庙灵山寺等著名旅游景点。
公務人員優惠存款制度再改善的 重點介紹 銓敘部退撫司
汇编语言与接口技术 教师:范新民.
CATIA V5 培训教程 工 程 图.
本周实验安排 实验内容:(P231)人名排序的例子。
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
第2章 高级编程的硬件基础 主要内容 计算机硬件组成 80x86微机系统 Turbo C编译方式 BIOS和DOS调用.
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
第6章 CCS集成开发环境 6.1 CCS系统安装与设置 6.2 CCS菜单和工具栏 6.3 CCS中的编译器、汇编器和链接器选项设置
陈 峦 副教授 研究院大楼316# 电子科技大学 能源科学与工程学院
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
第二十九章 DLL / LIB函式庫開發 當我們開發程式到一個階段之後,我們一定會希望各個Component的程式碼可以分開的越清楚越好。而這一章最主要就是要告訴各位讀者,我們常在Windows系統中看到的dll或是lib的檔案該怎麼實作?做出這樣的library我們又該如何運用?為什麼使用dll或是lib有利於我們開發程式?以上這些疑問都將會在這一章中得到解答。
汇编语言程序设计 Assembly Language Programming
微机原理与接口技术 第2章 8086系统结构 朱华贵 2015年09月17日.
簡易 Visual Studio 2010 C++ 使用手冊
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
单片机原理与应用 C/C++在现代数字计算机上的实现.
第4章 PIC软件开发设计基础.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
EViews操作簡介 2013/11/06.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第9章 DSP集成开发环境CCS 内容提要 CCS是TI公司推出的用于开发DSP芯片的集成开发环境,它采用Windows风格界面,集编辑、编译、链接、软件仿真、硬件调试以及实时跟踪等功能于一体,极大地方便了DSP芯片的开发与设计,是目前使用最为广泛的DSP开发软件之一。 本章对CCS开发软件的使用作了详细地介绍。首先,对CCS开发软件作了简要地说明,并介绍了该软件的安装及配置;其次,介绍了CCS的基本操作,包括:CCS的窗口和工具条、文件的编辑、反汇编窗口、存储器窗口、寄存器窗口、观察窗口
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
Gzip 编译及调试 Speaker: Lei Zhao (赵雷) September 13, 2006
簡易 Visual Studio 2005 C++ 使用手冊
第2章 绘制多谐振荡器电路原理图 教学目的及要求: 1.熟悉电路中的各种元器件之间建立连接 2.熟悉网络标记的含义,会正确放置网络标记
Captivate基礎好上手 教學也能很簡單
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
第二章 8086微处理器. 第二章 8086微处理器 微处理器的基本结构 8086微处理器的主要特性和内部结构 8086CPU的工作模式和引脚信号 8086的存储器管理 8086的总线操作和时序.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
上机环境介绍 杨斌
C程序设计.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
1.4 Turbo C V2.0的基本操作 运行一个C语言程序的一般过程 TC的启动、退出与命令菜单 编辑并保存一个C语言源程序
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微處理機 Microprocessor (100上)
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
Inspiration From Above 1 Chinese Evangelical Free Church
計算機程式 Visual BASIC 程式設計
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
符号 目录 页 绝对寻址和符号寻址… 符号寻址- 概述… 打开符号表 编辑:查找和替换…… 查看:过滤器 … 查看:排序…… 符号表:导出
馬路如虎口,行車當心走 ~汽、機車篇~ 設計者/ 中壢國小 楊雅玲 老師.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
BASIC語言的種類 進出BASIC語言的步驟 BASIC語言的操作模式 BASIC語言的功能鍵.
發展工具簡介 附錄A 2019/8/23 例說8051.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
熟悉VC++开发环境.
实验六、COM类型病毒分析实验 2019/10/9.
Presentation transcript:

汇编语言程序设计 吴 向 军 中山大学计算机科学系 2003.03.20

附录1 汇编语言编程和调试工具 1.1、汇编语言编程工具 1.1.1、宏汇编MASM系统 附录1 汇编语言编程和调试工具 1.1、汇编语言编程工具  学习汇编语言的目的就是要用汇编语言编程来解决实际问题,下面介绍二种常用的汇编语言编程环境:宏汇编MASM 6.11和Turbo Assember 5.0。 1.1.1、宏汇编MASM系统  在宏汇编MASM系统中,可用二种方法来处理源程序:命令行和集成环境。 一、命令行命令 1、编写源程序  可用计算机系统中各种能编辑文本文件的编辑器来编辑汇编源程序。常用的编辑器有:EDIT、Word、记事本、写字板、WPS等。源文件的后缀为:.ASM。 2、汇编程序  当源程序编写好后,可用MASM命令来汇编该源程序。如果源程序没有语法错误,那么,将生成目标文件(.OBJ文件),为最终生成可执行文件作准备,但如果源程序有错误,汇编程序将显示出错误位置和原因,也可用列表文件(.LST文件)来查看出错位置和原因。  下面给出一些使用该命令的实例情况。

附录1 汇编语言编程和调试工具 例1.1:查看MASM命令的功能 …>masm /?(*) …… 附录1 汇编语言编程和调试工具 例1.1:查看MASM命令的功能 …>masm /?(*)  ……  /Zi Generate symbolic information for CodeView  /Zd Generate line-number information  其中:选项/Zi和/Zd是经常被引用的二个选项,因为它们与符号跟踪有关。 例1.2:用MASM命令汇编源程序 …>masm test  Invoking: ML.EXE /I. /Zm /c test.asm  Assembling: test.asm  如果MASM命令显示了类似如上的处理结果,那么,表示源文件TEST.ASM已成功汇编,并已生成了其目标文件TEST.OBJ。 (*) 用户输入的命令用“下划线”来表示,系统显示的内容没有“下划线”。

附录1 汇编语言编程和调试工具 例1.3:用MASM命令汇编源程序 …>masm test …… 附录1 汇编语言编程和调试工具 例1.3:用MASM命令汇编源程序 …>masm test  ……  Invoking: ML.EXE /I. /Zm /c test.asm  Assembling: test.asm  test.asm(10): error A2070: invalid instruction operands  如果MASM命令显示了类似如上的处理结果,那么,表示源文件有错,没有生成其目标文件。在本例中,显示第10行有语法错:非法的指令操作数。这时,要用编辑器阅读源程序的第10行,看看输入指令时是否有误。  假如源程序有许多错误,很难记住全部出错位置,那么,可用列表文件来辅助查错。

附录1 汇编语言编程和调试工具 例1.4:在汇编源程序的同时,生成其列表文件。 …>masm test, ,test …… 附录1 汇编语言编程和调试工具 例1.4:在汇编源程序的同时,生成其列表文件。 …>masm test, ,test  ……  Assembling: test.asm  test.asm(10): error A2070: invalid instruction operands  列表文件TEST.LST是一个文本文件,可用编辑器直接阅读,并可看出其错误的位置和原因。下面是一个列表文件的实例。

附录1 汇编语言编程和调试工具 …>edit test.lst 附录1 汇编语言编程和调试工具 …>edit test.lst Microsoft (R) Macro Assembler Version 6.11 08/26/00 18:42:57 test.asm Page 1 - 1 .model small .486 0000 .data  .radix 7 0000 2A 08 0F  w2 db 60,11,18 0003 000A 0009  w1 dw 10T, 1001B 0000 .code  .startup  mov dl, 7777h test.asm(10): error A2070: invalid instruction operands 0010 8B C2  mov ax, dx 0012 0F A4 C2 01  shld dx, ax, 1 0016 D1 D0  rcl ax, 1  .exit 0  end 在此后面还有其它内容,但它们对查错没有帮助,所以,在此省略。

附录1 汇编语言编程和调试工具 3、连接程序 当由源文件汇编成功后,即可用连接程序(LINK.EXE)生成其可执行文件。 附录1 汇编语言编程和调试工具 3、连接程序  当由源文件汇编成功后,即可用连接程序(LINK.EXE)生成其可执行文件。 例1.5:查看连接程序(LINK.EXE)的具体选项。 …>link /? LINK <objs>,<exefile>,<mapfile>,<libs>,<deffile> Valid options are: /? /ALIGNMENT /BATCH /CODEVIEW …… /STACK /TINY /WARNFIXUP

附录1 汇编语言编程和调试工具 例1.6:用连接程序生成执行文件。 方法1: …>link test …… 附录1 汇编语言编程和调试工具 例1.6:用连接程序生成执行文件。 方法1: …>link test …… Run File [test.exe]: List File [nul.map]: Libraries [.lib]: Definitions File [nul.def]: LINK : warning L4021: no stack segment  这种方法需要确认连接过程中的各种文件名,如果使用文件名的默认值,那么直接按“回车”键即可。在上面四个文件名中,最重要二个文件名是:执行文件名和库文件名。一般情况下,无需更换最终生成的执行文件名;如果在连接过程中需要其它的库文件,则在显示第三行提示时,输入所需要的库文件名。  最后一行显示一个警告信息,提出本程序没有定义堆栈段,该警告信息可以不必理会,因为该执行文件是可运行的,在操作系统装入时会自动为其添加一个默认的堆栈段。

附录1 汇编语言编程和调试工具 方法2: 在文件名后面加上分号“;”,默认使用各类文件的缺省值。 …>link test; …… 附录1 汇编语言编程和调试工具 方法2:  在文件名后面加上分号“;”,默认使用各类文件的缺省值。 …>link test; …… LINK : warning L4021: no stack segment 4、运行程序  当要运行所生成文件时,可直接输入其文件名即可。 …>test 5、符号调试程序  当程序的运行结果不是预期结果时,就需要调试程序,找出错误的语句或逻辑关系。MASM系统提供了可用于源程序一级的调试工具CV(CodeView)。有关CV的使用参见“调试工具”中CodeView的介绍。 例1.7:用符号调试工具CV来调试程序TEST.ASM所生成可执行文件。 …>masm /Zi /Zd test ;假设其没有语法错 …>link /Co test …>cv test.exe

附录1 汇编语言编程和调试工具 二、编程集成环境PWB 附录1 汇编语言编程和调试工具 二、编程集成环境PWB  PWB(Programmer's WorkBench)是MASM 6.11提供的编程集成环境,在此环境下,程序员可直接编写源程序、汇编、连接和运行。  在汇编源程序时,如果有错误,系统将列举出所有出错位置和出错原因。还可用Shife+F3和Shife+F4来定位前一个错误和后一个错误;  在连接时,可指定堆栈的大小、附加的库文件、符号跟踪等选项;  在运行时,可设置命令行参数、直接运行、按调试方式运行、用DOS命令来运行等。 例1.8:查看PWB的启动方式 …>pwb /?  通常情况下,在PWB后面跟一个将要编辑的源文件名。假如要编辑源文件TEST.ASM,那么,可直接输入下面命令: …>pwb test.asm

附录1 汇编语言编程和调试工具 1、编辑源文件  PWB的编辑功能与许多编辑器的功能类似,有:建立新文件、保存文件、另存为、光标移动功能、块操作、插入/删除操作、恢复操作、查找/替换操作、设置编辑器的功能键和各类颜色等。要想了解更全面的编辑功能,可查看菜单:File、Edit、Search和Options的前四个菜单项。  在画面1.1(Options菜单中的“Colors…”)中,可选择各类窗口、菜单和文本等对象的背景色和前景色。比如:当要改变源程序的显示颜色时,可先在左边的列表框中选择“Text”列表项,然后再选择其背景色和前景色。

附录1 汇编语言编程和调试工具

附录1 汇编语言编程和调试工具  在连接时,如果需要某个库文件,那么,可选用Options菜单中的“Link Options”菜单项来设置,该菜单项的显示画面如画面1.2所示  在该画面上还可为程序设置一个缺省的堆栈段,其大小也可由用户自行决定。

附录1 汇编语言编程和调试工具 当生成执行文件需要多个模块连接时,就需要建立一个工程文件(.MAK)。建立工程文件的步骤和画面如下: 附录1 汇编语言编程和调试工具  当生成执行文件需要多个模块连接时,就需要建立一个工程文件(.MAK)。建立工程文件的步骤和画面如下: (1)、输入工程文件名,其默认的后缀为.MAK。输入画面如画面1.3所示  在画面1.3中还可选择工程目标文件的类型,该类型有:EXE、COM、LIB、Windows的EXE或DLL等二十几种。当然,对每种类型又有一些不同的要求,在此不在进一步展开叙述了。通常情况下,不必选择目标文件类型,其缺省类型就是DOS EXE。

附录1 汇编语言编程和调试工具 (2)、工程文件的编辑 附录1 汇编语言编程和调试工具 (2)、工程文件的编辑  在画面1.3中输入工程文件名,并且按“OK”按钮时,系统将进入画面1.4,在该画面中可向当前工程中添加源程序,也可把某源程序从当前工程中删除。

附录1 汇编语言编程和调试工具  若输入的文件名不在工程文件中时,可把该源文件添加到工程文件中,若在,也可将其从工程文件中删除。当所需要的源文件都添加到当前工程文件中时,可按“Save List”来保存该工程文件。此后就可用打开工程文件的方式来连接该工程中的文件。  如果需要修改工程文件的话,则可先用Project菜单中的“Open Project”菜单项打开工程文件,再用“Edit Project”菜单项来激活画面1.4进行编辑。 (3)、运行程序  在运行程序时,可设置命令行参数、直接运行、按调试方式运行、用DOS命令来运行等。通常情况下,在编写程序的初期,一般都用“调试方式”来运行程序。当选用这种方式时,系统会自动进入CV(CodeView)的调试环境。有关CV的使用参见“调试工具”中CodeView的介绍。

附录1 汇编语言编程和调试工具 (4)、符号调试的设置步骤 附录1 汇编语言编程和调试工具 (4)、符号调试的设置步骤  编写程序很难做到:编辑、汇编、连接、运行一次完成,除非程序的功能非常简单。当运行的结果不符合要求时,就需要跟踪程序的运行。  常用的调试手段有二种:执行代码的调试和符号调试。  前者是在没有任何源程序信息的情况下进行的调试,其工作难度大、效率低,后者是源程序一级上进行的调试,其目标代码的执行过程就象是源程序的执行,这种调试手段效率高、调试难度低,也是目前最流行的调试手段(在各种编程环境下都有类似的调试工具)。 一般来说,跟踪程序执行的工作又称为调试程序,即找出程序中不正常的逻辑关系和语句。

附录1 汇编语言编程和调试工具  为了能进行符号调试,需要告诉汇编程序和连接程序保留源程序中的各种符号信息。为此,可通过下面三步来设置一些命令选项。 (1)、设置生成选项  选择Options菜单中的“Build Options”菜单项,显示出画面1.5,并选择其中的“Use Debug Options”选项。

附录1 汇编语言编程和调试工具 (2)、设置汇编命令的选项 附录1 汇编语言编程和调试工具 (2)、设置汇编命令的选项  选择Options菜单中的“Project Templates”→“Customize Project Template”菜单项,显示出画面1.6。  在该画面的“Build Rule List”列表框中选择“macro AFLAGS_D “””,并把它修改为“macro AFLAGS_D “/Zi /Zd””。

附录1 汇编语言编程和调试工具 (3)、设置连接命令的选项 附录1 汇编语言编程和调试工具 (3)、设置连接命令的选项  选择Options菜单中的“Link Options”菜单项,与画面1.2所对应的是同一个画面,在此所要的部分画面如画面1.7所示,并选择“CodeView”选项。  经过上面三步设置后,在PWB环境下,用Run菜单中的“Debug”菜单项就可进行符号调试了。

附录1 汇编语言编程和调试工具 三、MASM的安装 附录1 汇编语言编程和调试工具 三、MASM的安装  宏汇编系统MASM 6.11共有5张软盘:Disk1~Disk5。在Disk1中运行Setup.exe文件即启动系统的安装过程。其安装过程与许多系统的安装大同小异,只有用户根据屏幕提示作适当的选择即可,所以,在此省略系统安装具体步骤的描述。

附录1 汇编语言编程和调试工具 1.1.2、Turbo Assember 附录1 汇编语言编程和调试工具 1.1.2、Turbo Assember  Turbo Assenmer系统是Borland C++程序设计系统的一部分,可有选择地安装它。该汇编系统有三个主要文件:TASM.EXE、TLINK.EXE、TD.EXE和TD32.EXE,其中:TD.EXE是16位程序的调试器,它只能显示16位寄存器,而TD32.EXE是32位程序的调试器。有关它们的显示画面请参见画面2.2和2.3。  Turbo Assenmer系统在汇编语言程序设计方面主要采用命令行的形式,当用其它文本编辑器编写好源程序(后缀为:.ASM)后,即可用TASM和TLINK文件来处理它。 一、汇编源程序 TASM.EXE 16-bit real-mode assembler TASMX.EXE 16-bit protected-mode assembler TASM32.EXE 32-bit protected-mode assembler

附录1 汇编语言编程和调试工具 例1.9 查看TASM的功能选项 …>tasm /? …… 附录1 汇编语言编程和调试工具 例1.9 查看TASM的功能选项 …>tasm /? …… /zi,/zd,/zn Debug info: zi=full, zd=line numbers only, zn=none 例1.10 汇编已有源程序TEST.ASM …>tasm test  假如源文件TEST.ASM有语法错的话,可用下面命令来生成其列表文件TEST.LST。 …>tasm test,,test …>type test.lst | more  假如源文件没有语法错,那么可用TLINK.EXE连接它,以生成可执行文件。

附录1 汇编语言编程和调试工具 二、连接程序 例1.11 查看TLINK的功能选项 …>tlink /? …… 附录1 汇编语言编程和调试工具 二、连接程序 例1.11 查看TLINK的功能选项 …>tlink /? …… /n Ignore default libraries  /f  Inhibit optimizing far calls to near /v Full symbolic debug information  /Gx Goodies 例1.12 连接汇编得到的目标文件TEST.OBJ …>tlink test 三、符号调试程序  当程序的运行结果不是预期结果时,就需要调试程序,找出错误的语句或逻辑关系。Turbo Assember系统提供了可用于源程序一级的调试工具TD/TD32(Turbo Debuger)。有关TD的使用参见“调试工具”中Turbo Debuger的介绍。

附录1 汇编语言编程和调试工具 例1.13:用符号调试工具TD来调试程序TEST.ASM所生成可执行文件。 附录1 汇编语言编程和调试工具 例1.13:用符号调试工具TD来调试程序TEST.ASM所生成可执行文件。 …>tasm /Zi /Zd test ;假设其没有语法错 …>tlink /v test …>td test.exe

附录1 汇编语言编程和调试工具 1.2、调试工具 1.2.1、DEBUG 启动DEBUG的一般命令如下: DEBUG 文件名 [参数表] 附录1 汇编语言编程和调试工具 1.2、调试工具 1.2.1、DEBUG  启动DEBUG的一般命令如下:   DEBUG 文件名 [参数表] 其中:文件名指定被调试的文件,其包括名和后缀,参数表是被调试文件运行时所需要的参数。  被调试的文件可以是系统中的任何文件,但通常它们的后缀为.EXE或.COM。  当DEBUG启动成功后,将显示连接符“-”,这时,可输入各种DEBUG命令。DEBUG中标志位的符号表示如表1所示,其所有命令及其含义如表2所示。 表1 DEBUG中标志位的符号表示 标志名称 溢出 OF 方向 DF 中断 IF 负号 SF 零 ZF 辅助进位 AF 奇偶 PF 进位 CF 置位状态 OV DN EI NG ZR AC PE CY 复位状态 NV UP DI PL NZ NA PO NC

附录1 汇编语言编程和调试工具 关于参数的几点说明: 进制:在DEBUG中输入或显示的数据都是十六进制形式 附录1 汇编语言编程和调试工具  关于参数的几点说明: 进制:在DEBUG中输入或显示的数据都是十六进制形式 分隔:命令和参数、参数和参数之间要用空格、逗号或制表符等分隔 地址:用“段值:偏移量”的形式来表示地址,也可用段寄存器来代表“段值” 例如:1000:0,ds:10,es:200,cs:30等 表2 DEBUG命令及其含义 命令格式 功能说明 A [地址] 输入汇编指令 C [范围] 起始地址 对由“范围”指定的区域与“起始地址”指定的同大小区域进行比较,显示不相同的单元 D [范围] 显示指定范围内的内存单元内容 E 地址 字节值表 用值表中的值替换从“地址”开始的内存单元内容 F 范围 字节值表 用指定的字节值表来填充内存区域

附录1 汇编语言编程和调试工具 命令格式 功能说明 G [=起始地址] [断点地址] 从起点(或当前地点)开始执行,到终点结束 附录1 汇编语言编程和调试工具 命令格式 功能说明 G [=起始地址] [断点地址] 从起点(或当前地点)开始执行,到终点结束 H 数值1 数值2 显示二个十六进制数值之和、差 I 端口地址 从端口输入 L [地址 [驱动器号 扇区 扇区数]] 从磁盘读 M 范围 地址 把“范围”内的字节值传送到从“地址”开始的单元 N 文件标识符 [文件标识符…] 指定文件名,为读/写文件做准备 O 端口地址 字节值 向端口输出 P [=地址] [指令数] 按执行过程,但不进入子程序调用或软中断 Q 退出DEBUG,不保存正在调试的文件 R [寄存器名] 显示和修改寄存器内容 S 范围 字节值表 在内存区域内搜索指定的字节值表。如果找到,显示起始地址,否则,什么也不显示 T [=地址] [指令数] 跟踪执行,从起点(或当前地点)执行若干条指令 U [范围] 反汇编,显示机器码所对应的汇编指令 W [地址 [驱动器号 扇区 扇区数]] 向磁盘写内容,(BX、CX)为写入字节数

附录1 汇编语言编程和调试工具 范围:表示地址范围,它有二种表示方式:“地址1 地址2”和“地址1 长度”。 附录1 汇编语言编程和调试工具 范围:表示地址范围,它有二种表示方式:“地址1 地址2”和“地址1 长度”。     其中:“地址1”表示起始地址,要用“段值:偏移量”来表达;        “地址2”表示终止地址,只用“偏移量”来表示;        “长度”用字母’L’开头的数值来表示。 例如:100:50 100——段值为100,偏移量从50到100的内存区域;    100:50 L100——段值为100,偏移量从50开始的100个字节区域。 端口地址:二位十六进制数值 字节值:二位十六进制数值 字节值表:由若干个字节值组成,也可以是用引号括起来的字符串 驱动器号:0—驱动器A、1—驱动器B、2—驱动器C、3—驱动器D等

附录1 汇编语言编程和调试工具 关于使用命令的几点说明: 1、在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行 附录1 汇编语言编程和调试工具 关于使用命令的几点说明: 1、在提示符“-”下才能输入命令,在按“回车”键后,该命令才开始执行 2、命令是单个字母,命令和参数的大小写可混合输入 3、可用F1、F2、F3、Ins、Del、左移键、右移键等编辑键来编辑本行命令 4、当命令出现语法错误时,将在出错位置显示“^ Error” 5、可用^C或^Break来终止当前命令的执行,还可用^S来暂停屏幕显示(当连续不断地显示信息时) 例2.1:启动DEBUG,并装入test.exe文件(假设该文件已存在)。 解: 方法1:…\>debug test.exe 方法2:…\>debug     -n test.exe     -l

附录1 汇编语言编程和调试工具 例2.2:比较以DS为段值,偏移量从10到50的内存区域与从地址100:20开始的内存区域。 附录1 汇编语言编程和调试工具 例2.2:比较以DS为段值,偏移量从10到50的内存区域与从地址100:20开始的内存区域。 -C DS:10 50 100:20 或 -C DS:10 L41 100:20 例2.3:显示以DS为段值,偏移量从10到50内存区域的单元内容,然后用’abc’来填充它。 -D DS:10 50 或 -D DS:10 L41 -F DS:10 50 ‘abc’ 例2.4:显示十六进制1234与3421之和、差。 -H 1234 4321 例2.5:把数据段区域DS:0-40内的内容传送给从附加段ES:10开始的内存中。 -M DS:0 40 ES:10 例2.6:在数据段区域DS:0-40内查找是否有字符串’CIH’。 -S DS:0 40 ‘CIH’

附录1 汇编语言编程和调试工具 1.2.2、CodeView 附录1 汇编语言编程和调试工具 1.2.2、CodeView  CodeView是一个简单、直观的全屏幕调试工具,它可调试多种语言的源程序所生成的执行代码。CodeView的调试窗口如画面2.1所示。  画面的左上窗口是调试器的主窗口,其显示被调试的源程序或执行代码,左下窗口是命令窗口,用户可输入各种DEBUG命令,右窗口是显示寄存器窗口,它可显示16位和32位寄存器的内容。当然还有其它窗口,如:内存窗口、查看内容窗口(Watch)和程序输出窗口(View)等。 F2:显示/隐含的寄存器组窗口 F3:以不同的显示方式显示当前执行的程序 F4:显示程序的输出屏幕 F5:执行到下一个逻辑断点,或到程序尾 F6:依次进入当前屏幕所显示的窗口 F7:与F5功能相同 F8:单步执行指令,并进入被调用的子程序 F9:在源程序行中设置/取消断点,用鼠标左键双击之也可 F10:单步执行指令,但不进入被调用的子程序

附录1 汇编语言编程和调试工具 1.2.2、CodeView 附录1 汇编语言编程和调试工具 1.2.2、CodeView  CodeView是一个简单、直观的全屏幕调试工具,它可调试多种语言的源程序所生成的执行代码。CodeView的调试窗口如画面2.1所示。  画面的左上窗口是调试器的主窗口,其显示被调试的源程序或执行代码,左下窗口是命令窗口,用户可输入各种DEBUG命令,右窗口是显示寄存器窗口,它可显示16位和32位寄存器的内容。当然还有其它窗口,如:内存窗口、查看内容窗口(Watch)和程序输出窗口(View)等。 F2:显示/隐含的寄存器组窗口 F3:以不同的显示方式显示当前执行的程序 F4:显示程序的输出屏幕 F5:执行到下一个逻辑断点,或到程序尾 F6:依次进入当前屏幕所显示的窗口 F7:与F5功能相同 F8:单步执行指令,并进入被调用的子程序 F9:在源程序行中设置/取消断点,用鼠标左键双击之也可 F10:单步执行指令,但不进入被调用的子程序

附录1 汇编语言编程和调试工具

附录1 汇编语言编程和调试工具 1.2.3、Turbo Debuger 附录1 汇编语言编程和调试工具 1.2.3、Turbo Debuger  Turbo Debuger的主要窗口和调试功能键与CV非常类似,也可以单步执行、设置断点、显示寄存器内容和查看内存内容等。具体操作由读者在实际的调试过程中掌握、体会。  画面2.2和2.3是Turbo Assember系统中16位和32位调试器的主要显示画面。

附录1 汇编语言编程和调试工具

谢 谢 计算机科学系 2003年03月20日