源文件目录<列表>
-sm<#>
设置备用标识符存储空间大小,#应该是具体数字表示#K字节(最大256KB),如<8>表示备用标识符存储空间为8K字节
-vg
全屏幕保存
-vn
43/50行显示选项禁止
-vp
允许EGA/VGA调色板设置参数保存
-w
调试远程的Windows程序(必须同时使用-r)
-y<#>
用#KB(千字节)设置覆盖区域空间大小
-ye<#>
用16KB/页为单位来设置扩展内存覆盖区域空间大小,#应该是具体数字
待调试的文件名是填写被调试的可执行程序名,该程序名同样可带可不带,因为在TD环境中有打开一个调试文件的菜单对话框,通过这个对话框来选择被调试的程序(详见TD的菜单功能介绍)。
如果待调试的程序名exp0.exe,表示你所编写的源程序exp0.asm经过汇编、连接后产生的可执行程序,命令行格式为:
tdexp0.exe,其中表示回车键。
如果exp0.exe不与TD.exe在同一文件夹中,则根据当前路径书写,当前路径在td.exe,如果exp0.exe在E:
\MYFILE文件夹中,则命令行格式为tde:
\myfile\exp0.exe;当前路径在exp0.exe,如果td.exe在E:
\BC\BIN文件夹中,则命令行格式为e:
\bc\bin\tdexp0.exe。
或者用PATH命令设置路径随便在哪个路径下可运行,具体参看实验四。
可执行程序附带参数要根据你设计的程序需要与否来填写,例如Win2000中有一个目录树显示文件(假设Win2000安装在C盘),调试该程序可以使用如下方式:
1)不带参数为tdc:
\winnt\system32\表示调试tree程序,结果仅为目录数,按ASCII字符及图形来显示;
2)带/f为tdc:
\winnt\system32\/f表示调试tree程序,结果不仅有目录树,并且还包括目录下的文件,按ASCII字符及图形来显示;
3)带/a为tdc:
\winnt\system32\/a表示调试tree程序,结果仅为目录数,按ASCII字符及扩展字符来显示;
4)带/f/a为tdc:
\winnt\system32\/f/a表示调试tree程序,不仅有目录树,并且还包括目录下的文件,按ASCII字符及扩展字符来显示;
5)带/?
为tdc:
\winnt\system32\/?
帮助信息显示在屏幕上。
◆运行TD的方法
运行TD的方法主要介绍2种,具体方法如下:
1、WINDOWS下操作系统启动方法
目前通用微机普遍采用WINDOWS系列操作系统,如Win9x、Win2000、WinXP、WinME、NT等,以Win2000为例,首先打开存有TD.EXE的文件夹,如e:
\bc\bin文件夹中有TD.EXE,打开本地磁盘(E:
)中的BC文件夹下的BIN文件夹,找到TD.EXE点击鼠标右键并且移动鼠标到属性(R)再击左键,弹出TD属性中的常规窗,鼠标点击得到图1-1所示的程序对话框。
图1-1所示的命令行(L)表示运行该程序及其所在路径,可以按要求在其后加选择项、被调试程序文件名及其所需的附带参数,例如E:
\BC\BIN\TD.EXEEXP0.EXE表示运行TD调试缺省路径文件夹的exp0.exe程序。
由于TD是DOS程序,故要求各级路径及被调试程序文件名均不超过8个ASCII字符,最好不带汉字及全角的字符。
工作目录(W)表示进入TD调试环境后的缺省路径,如果你的实验程序放在E:
\MYFILE文件夹中,可以填写E:
\MYFILE,则进入TD调试环境后的缺省路径为E:
\MYFILE,如果不填写任何内容,表示E:
\BC\BIN就是缺省路径。
如果鼠标点击屏幕将得到图1-2所示的屏幕对话框。
我们仅关注用法一拦,该拦可选全屏幕(F)或窗口(W),其中全屏幕(F)表示DOS的全屏幕方式显示TD调试环境,是字符环境,除了支持键盘操作,还支持DOS字符方式的鼠标功能,窗口(W)表示Win2000窗口下显示TD调试环境,该环境为图形方式,仅支持键盘操作,不支持鼠标功能。
建议大家选择全屏幕(F)以便操作。
TD属性设置好后即可在Win2000对TD.EXE文件双击,从而TD得到运行。
图1-1TD属性中程序对话框图1-2TD属性中屏幕对话框
2、操作系统为DOS环境的TD运行方法
进入DOS操作系统的方法如1-3所示。
进入DOS操作系统后,如果你要调试的程序是exp0.exe,存放在E:
\MYFILE文件夹中,则按如下方式操作:
1)e:
2)cd\
3)cdmyfile
4)E:
\BC\BIN\TDEXP0.EXE
其中,大小写无所谓,第4行表示运行E:
\BC\BIN文件夹中TD.EXE调试程序,对EXP0.EXE进行调试。
◆TD的基本使用
TurboDebug是Borland公司推出的一个集成调试软件,可以调试DOS和Windows程序。
比起更传统的debug,它的功能强大,使用方便。
如果只要调试DOS程序,仅需要TD.EXE一个文件(476K)即可。
图13是TurboDebug的界面。
它的CPU窗包括代码段子视窗、寄存器子视窗、标志位子视窗、堆栈段子视窗和数据段子视窗。
屏幕顶部显示的是菜单条,为了从菜单条处下拉出一个菜单,一般可以直接用鼠标点击菜单(注意Win操作系统的窗口显示时不支持鼠标操作),或者要先按F10功能键、后再用←或→键使想要的选项变为高亮、最后按ENTER键即可。
另一种方法是按住Alt+菜单名称的第一个字母组合键。
TD除了键盘操作外,我们还可以很容易地通过鼠标对界面进行操作。
例如要修改窗口外观的大小,我们可以按ALT+O,打开菜单中的Option项(图1-4),从中选取Displayoptions来打开一个对话框(图1-5)。
也可以直接用鼠标点击菜单上的Options项后得到。
图1-5的对话框允许我们修改窗口的大小,通过改变ScreenLines的值。
图1-4Option菜单
图1-5Displayoptions对话框
F5快捷键是TD菜单中windows下拉菜单的Zoom来把视窗窗在最大化和最小化间切换的键,也可以直接用鼠标点住窗口右下角并拖动到理想的位置(图1-6)。
图1-6拖动右下角改变窗口大小
TD还有一个优势就是它的状态行提示的快捷键。
屏幕底部的状态行显示的是相关的功能键及其用途,如图1-7所示。
图1-7状态行提示
状态行的内容会随用户输入的不同而发生变化(例如菜单发生变化、命令对话框的变化等)。
若按住Alt一会儿,可以发现状态行的内容改变为用户可用Alt键获取的功能键信息。
按住Ctrl一会儿,状态行显示的命令是当前视窗窗口部分所对应的局部菜单命令(LOCALMENUCOMMAND)的热键。
它们随用户所在的窗口类型和所在视窗不同而发生变化。
一旦进入菜单系统,状态行将再次改变为显示当前高亮度菜单选择的功能。
用ESC键可以离开菜单系统。
◆TD的菜单功能介绍
一.系统菜单
菜单命令
使用说明
快捷键
Repaintdesktop
重新显示整个屏幕
无
Restorestandard
恢复标准的windows设置
无
About…
获取TurboDebugger的信息
无
二.File菜单
菜单命令
使用说明
快捷键
Open…
打开一个要调试的新程序
无
Changedir…
改变缺省工作路径
无
Getinfo…
显示调试程序的当前信息
无
Dosshell
运行DOS命令处理机
无
Resident
终止TD并驻留内存
无
Symbolload…
加载一个新的符号表
无
Tablerelocate
符号表指定新的段基地址
无
Quit
退出TurboDebugger
Alt-X
三.Edit菜单
菜单命令
使用说明
快捷键
Copy
复制项目
Shift-F3
Paste
粘贴项目
Shift-F4
Copytolog
将项目复制入日志文件中
无
Dumppanetolog
将当前窗转入日志文件中
无
四.View菜单
菜单命令
使用说明
快捷键
Breakpoints
打开断点窗
无
Stack
打开堆栈窗
无
Log
打开日志窗
无
Watches
打开监视窗
无
Variables
打开变量窗
无
Module…
打开模块窗
F3
File…
打开文件窗
无
CPU
打开CPU窗
无
Dump
打开转储窗口
无
Registers
打开CPU寄存器窗
无
Numericprocessor
打开数字协处理器窗
无
Executionhistory
打开执行任务历史窗
无
Hierarchy
打开类的分层窗
无
Windowsmessages
打开Windows消息窗
无
Clipboard
打开粘贴板窗
无
Another
Module…
打开另模块窗
无
Dump
打开另转储窗口
无
File…
打开另文件窗口
无
五.Run菜单
菜单命令
使用说明
快捷键
Run
全速运行
F9
Gotocurse
运行到光标处停止
F4
Traceinto
一条一条跟踪运行程序指令
F7
Stepovrer
跳过指令
F8
Executeto…
执行到指定的指令代码处
Alt-F9
Untilreturn
一直运行直到返回
Alt-F8
Animate…
以动画方式运行程序
无
Backtrace
向后跟踪
Alt-F4
Istructiontrace
指令跟踪
Alt-F7
Arguments…
参数
无
Programreset
程序复位
Ctrl-F2
Run部分二级菜单
1.Executeto…
显示信息说明
在空格中输入要执行停止的指令地址,点击OK确定,Clip…从粘贴板粘贴指令地址,Cancel取消,Help获取帮助信息
2.Animate…
显示信息说明
在空格中输入10倍的动画间隔时间(单位:
秒),点击OK确定,Clip…从粘贴板粘贴时间,Cancel取消,Help获取帮助信息
3.Arguments
显示信息说明
在空格中输入命令行参数,点击OK确定,Clip…从粘贴板粘贴命令行参数,Cancel取消,Help获取帮助信息
六.Breakpoints菜单
菜单命令
使用说明
快捷键
Toggle
切换
F2
At
设置断点地址
Alt-F2
Changedmemoryglobal
改变全局断点地址
无
Expressioontrueglobal
全局条件表达式
无
Hardwarebreakpoint
硬件断点
无
Deleteall
删除全部
无
七.Data菜单
菜单命令
使用说明
快捷键
Inspect..
检查
无
Evaluate/modify…
评价或修改
Ctrl-F4
Addwatch…
增加监视
Ctrl-F7
Functionreturn
函数返回
无
八.Options菜单
菜单命令
使用说明
快捷键
Language…source
语言来源
无
Macros
宏指令
无
Displayoptions…
显示选择
无
Pathforsource…
源程序路径
无
Saveoptions…
存储选择
无
Restoreoptions…
恢复选择
无
Options的部分二级菜单
1.Language…source
显示信息说明
Source表示源程序,C,Pascal,Assembler分别表示C,Pascal和汇编程序,选中一项,点击OK确定,Cancel取消,Help获取帮助信息
2.Displayoptions...
显示信息说明
Displayswapping表示显示切换,在其下面选中一项,None,Smart和Always分别表示不显示切换,快速显示切换和总是显示切换。
Integerformat表示整形格式,在其下面选中一项,Hex,Decimal和Both分别表示十六进制,十进制和两者均可。
Screenlines表示屏幕行,可选择。
Tabsize表示制表键跳格数,可修改其值。
点击OK确定,Cancel取消,Help获取帮助信息
3.Pathforsource…
显示信息说明
在空格中输入源程序目录路径,点击OK确定,Clip…从粘贴板粘贴源程序目录路径,Cancel取消,Help获取帮助信息
4.Saveoptions…
显示信息说明
在Saveto下的空格中输入要存储的文件路径名。
Options,Layout,Macros分别表示选项,布局和宏指令,可选择。
点击OK确定,Cancel取消,Help获取帮助信息
5.Restoreoptions…
显示信息说明
在Filename空格中输入要恢复的文件名,Files和Directories下面空框中分别显示文件名和文件目录。
点击OK确定,Cancel取消,Help获取帮助信息
九.Window菜单
菜单命令
使用说明
快捷键
Zoom
缩放窗口
F5
Next
下一窗口
F6
Nextpane
下一窗格
Tab
Size/move
窗口大小/移动窗口
Ctrl-F5
Iconize/restore
图标化/恢复窗口
无
Close
关闭窗口
Alt-F3
Undoclose
撤消关闭窗口命令
Alt-F6
Userscreen
显示用户屏幕
Alt-F5
1CPU
显示CPU窗口
无
十.Help菜单
菜单命令
使用说明
快捷键
Contents
帮助内容
无
Index
索引
Shift+F1
Topicsearch
主题搜索
Ctrl+F1
Prioustopic
前一主题
Alt+F1
Helponhelp
外来帮助
无
Activefile…
现用文件
无
About…
有关本软件的版本信息说明
无
◆TD调试举例
由于我们只要求学生掌握TD对汇编程序的调试方法,这里我们将一个典型的十进制加法为例,介绍使用TD对程序进行调试的过程。
这个程序是要将两个5位十进制数相加,要求两个数均以ASCII码形式各自顺序放在以DATA1和DATA2为首的5个单元中(低位在前),结果送回DATA1处,并调用2号系统功能调用显示结果。
我们先用记事本或EDIT编辑器或其他编辑软件输入源程序,并存储为MYPRO.ASM。
DATASEGMENT
DATA1DB'98765';设置数据段的内容,在数据段的起始位置
ORG0010H;和偏移0010H的地方分别放入字符
DATA2DB'96333';‘98765’和‘96333’
DATAENDS;98765+33396=90158
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA;设置段地址,把数据段地址赋给DS
MOVDS,AX
MOVDI,OFFSETDATA1;DATA1的偏移量赋给DI
MOVSI,OFFSETDATA2;DATA2的偏移量赋给SI
MOVCX,5;循环5次,给CX赋值5
CLC;清零进位标志
LO1:
MOVAL,[DI];把DATA1中的值循环赋给AL
;DATA2中的值与DATA1中的值一一对应相加,并加进位标志中的值,和放到AL中。
;然后对AL进行非压缩BCD码加法调整得到对应的非压缩BCD码,按顺序放入DATA1中。
;SI,DI自加1后继续循环直到CX-1=0。
ADCAL,[SI]
AAA
MOV[DI],AL
INCSI
INCDI
LOOPLO1
MOVCX,05H
DISP:
MOVAH,02H;调用2号系统功能调用,显示结果
MOVDL,[DI]
ORDL,30H
INT21H
DECDI
LOOPDISP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
按实验五或六介绍的四个步骤先完成前三步。
生成了可执行程序MYPRO.EXE,就可以用TD来调试了。
1.调入需要调试的程序。
要调试这个程序,首先要打开并装入被调试的程序,选择File菜单里的Open项,即可弹出图1-8所示的加载调试程序选择窗,选择MYPRO.EXE文件即可装入。
装入后
代码部分可在CPU窗的代码段子视窗看到机器代码及相应的汇编语句(图1-9),数据部分会在数据段子窗口看到(实际见到的是程序段前缀PSP——256字节,真正数据段在PSP后)。
同时可以看到寄存器,标志位和堆栈段子窗口。
代码窗口的小箭头指向的就是下一条要执行的命令行。
选择Run菜单里的Trace项或按快捷键F7即可进行跟踪运行(图1-10)直到
LO1:
MOVAL,[DI]
单步运行期间可以查看寄存器、标志位和数据段内容的变化。
2.打开一个窗口,观察的相应的数据段。
要查看数据段(或其他段)的数据,可以选择View菜单里的Dump项,可弹出Dump窗口(图1-11).我们可以通过快捷键F6在Dump窗口和主窗口间切换,还可以使用Ctrl+F5,配合上下左右键来调整Dump窗口的位置。
(注意数据段的数据只有在程序运行时才会导入并被看到。
)
可以通过设置段基址查看其他段的数据,只要在Dump窗口下按住Ctrl+G就可以打开一个对话框,并设置希望观察的数据段地址。
这里我们键入DS:
0000,因为我们的数据都
被保存在DS:
0000到DS:
001F的范围内。
可以看到我们在数据段定义的两个字符串以ASCII码的形式放在DS:
0000-DS:
0004和DS:
00010-DS:
0014。
3.利用断点执行一个程序段。
为了观察循环的执行情况,先我们设置一个断点。
用鼠标或者↑和↓键把滚动条移动到想要设置为断点的那条语句,这里我们移到循环结束LOOP000F。
然后选择菜单View下的Breakpoint,会弹出一个如图1-12的对话框窗口,在窗口左边一栏里点击鼠标右键(或按Ctrl+A),选中弹出菜单中的Add。
,在Address栏里填写断点地址CS:
0018,就可以设置一个断点,按OK确定。
这时可以发现CS:
0018对应的这条指令的颜色改变。
运行菜单Run下的Gotothecurse(或按F4键),程序直接执行到断点处。
可以用在图1-12的左边窗口按Ctrl+R删除断点。
另一种执行一段程序的方法是用菜单Run下的Excuteto(或按Atl+F9键)直接执行
到断点地址。
如图1-13。
程序执行到断点后,注意此时的CX值(),再按一次F7使程序回到循环初始LO1:
MOVAL,[DI],记下此时CX和AX的值、DI的值及其对应的数据段中的内容。
重复F4和F7的操作,观察IP的变化,并记录每次F7执行后CX和AX的值、DI的值及其对应的数据段中的内容,把两个5位十进制数相加程序中循环部分运行结果填入表1-2。
表1-2两个5位十进制数相加程序中循环部分运行结果
循环次数
R/M
1
2
3
4
5
AX
CX
DI
DS:
DI
实验二DOS环境下常用命令及DEBUG使用方法
实验目的:
熟悉DOS环境下常用的命令以及DEBUG调试工具的基本使用方法,为以后的实验打下基础。
实验器材:
计算机一台,DEBUG调试工具
实验内容及步骤:
1、进入DOS环境:
WIN98/95/ME:
●开机—Windows—开始—程序—MSDOS方式。
●开机—Windows—开始—运行—COMMAND—MSDOS方式。
●开机—F8或Ctrl—启动菜单—选第5项—纯MSDOS。
WIN2K/XP/2003:
●开机—Windows—开始—运行—COMMAND—MSDOS西文方式。
●开机—Windows—开始—运行—CMD—MSDOS中文方式。
2、DIR[盘符][路径][文件名][/S][/P][/A]
显示文件目录,可用于查找文件(内部命令)
省略盘符为当前盘,省略路径为当前路径,省略文件