足球明星国粤对照:masm调试程序步骤及debug命令
MASM调试程序使用步骤
1、在运行中输入cmd,进入DOS界面
2、输入edit c:\abc.asm 编辑程序文件
3、通过 “cd 目录” 到指定masm目录
4、masm 文件名.asm (汇编),生成obj文件
5、link 文件名.obj(链接),生成可执行文件
6、 文件名.exe(执行)
DEBUG及其常用命令
转帖[http://wwdyjdx.blog.163.com/blog/static/163401212006101413352405/]
一 DEBUG简介
DEBUG是DOS的一个外部命令, 其命令格式为:
[path]DEBUG [filename] [parm1] [parm2]
[path]是DEBUG命令在磁盘上的路径
filename是要用DEBUG来处理的文件的名字, 它包括文件的盘符、路径、 文件主名和扩展名。
参数parm1和parm2是文件filename运行时使用的参数。
当启动DEBUG时, 将对CPU的各寄存器进行初始化:
1. 如果启动时指定的filename是.EXE文件, 则DEBUG启动后将自动把指定的文件装入内存, 并置:
CS为程序代码段段地址
IP为第一条要执行指令的偏移地址
SS为堆栈段段地址
SP为堆栈底部+1单元的偏移地址
DS和ES是装入文件前第一个可用内存段的段地址(即DEBUG程 序后的第一个段地址)
标志寄存器的所有标志位为0
BX(0)和CX是装入的文件长度
其余寄存器为0。
2. 如果启动DEBUG时指定的文件filename不是.EXE文件, 则DEBUG 将把文件装入内存, 并置:
四个段寄存器为DEBUG程序后面的第一个段地址
IP指向100H
SP指向这个段的段尾
标志寄存器的所有标志位为0
BX和CX是装入的文件长度
其余寄存器为0。
3. 如果启动DEBUG时不指定filename, 则只是把CPU 的各寄存器进行初始化, 初始化结果与上述的第2点相同。这时要想显示、修改文件,可以用DEBUG的子命令装入文件。
二 。DEBUG的命令
DEBUG的命令都用单个字母表示, 其后可跟一个或多个参数, 参数之间用空格或逗号分隔。
DEBUG的命令参数大多数是地址或地址范围, 其地址书写格式为:
[段地址:]偏移地址
其中的段地址可以用段寄存器名表示, 也可以用一个十六进制数表示。
如: ES:100 43A5:200
地址范围的书写格式为:
Ⅰ. [段地址:]起始偏移地址 终止偏移地址
Ⅱ. [段地址:]起始领衔地址 L长度
如: CS:100 10F和CS:100 L10所指的地址范围是一致的。
当输入的命令不正确时, DEBUG将在该行底下指出错误所在。
注意: 在DEBUG下, 输入的数据和显示的数据都是十六进制数,不用在数据后加“H”。
A 汇编与反汇编命令
1.汇编命令A
格式: A [地址]
功能:从键盘输入汇编程序, 并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。
说明: 如果不指定汇编地址, 则以CS:IP为地址
2. 反汇编命令U
格式: U [地址]/[地址范围]
功能: 将指定地址范围内的机器代码翻译成汇编源程序指令显示出来, 并同时显示地址及代码。
注意: 反汇编时一定确认指令的起始地址, 否则得不到正确的结果。
B 显示与修改内存单元内容的命令
1. 显示内存单元内容命令D
格式1: D [地址]
格式2: D 地址范围
说明: D命令在屏幕上显示的内容分为三部分, 左边是每一行存储单元的起始地址, 中间是各字节单元的内容, 右边是各单元内容对应的ASCII码字符( 不可显示的字符用"."代替)。
2. 修改内存单元内容命令E
格式1: E 地址 内容表
说明: 内容表可以是以逗号或空格分隔的两位16进制数, 也可以是用单引号''或双引号""括起来的字符串, 还可以是二者的组合。
格式2: E 地址
说明: 在修改数据时可用以下键进行不同操作:
1)键入空格键。修改后一个字节单元的内容。
2) 输入减号"-"。另起一行, 修改前面一个字节单元的内容。
3) 输入回车键, 结束内存单元的修改。
3. 填充内存命令F
格式: F 地址范围 内容表
功能: 将<内容表>的值逐个填入指定地址范围, 内容表中的内容用完后再重复使用。
C。显示与修改寄存器内容的R命令
格式1: R
功能: 显示当前所有寄存器内容, 状态标志及将要执行的下一条指令的地址、代码和汇编指令形式。
格式2: R 寄存器名
功能: 显示并修改指定寄存器的内容
D。运行和跟踪命令
1. 运行程序命令G
格式: G [=起始地址] [断点地址]
功能: 从起始地址开始执行程序, 直到程序结束或遇到断点地址为止。
说明: 如果不指定起始地址, 则从CS:IP处开始执行。
如果程序执行到结束,则显示"Program terminated normally"(程序正常结束)。如果遇到断点, 则程序停止执行, 并显示当时各寄存器的内容 和下一条要执行的指令。
2. 跟踪运行命令T
格式: T [=起始地址] [指令条数]
功能: 逐条跟踪程序的运行, 同时显示出各寄存器的内容、状态标志和下一条要执行的指令, 当执行够指定的指令数后就暂停程序的运行。
说明: 如果不指定起始地址, 则从CS:IP处开始执行。
不指定指令条数时, 认为只执行一条指令。
3. 继续命令P
格式: P [=起始地址] [指令条数]
功能: 与T命令一样完成跟踪程序的运行, 但遇到子程序、中断程序、循环时并不跟踪下去, 而是把它们当作一条指令来执行。
E。磁盘读写命令
1. 文件命名命令N
格式: N 文件名
功能: 指定要装入内存或写到磁盘的文件的名字(包括盘符和路径)。
2. 装入命令L
格式: L [地址] [驱动器号 扇区号 扇区数]
功能: 把指定文件或磁盘扇区的内容装入到内存指定地址
说明: 地址的默认值为CS:100。
驱动器号用0表示A盘, 1表示B盘, 2表示C盘。
3. 写磁盘命令W
格式: W [地址] [驱动器号 扇区号 扇区数]
功能: 将指定内存地址的一片单元内容写到磁盘中。
说明: 地址的默认值为CS:100。
要将内存内容写入文件时, 必须先用N命令命名一个文件,并置BX和CX为文件长度。
注意: W命令不能写入以.EXE和.HEX为扩展名的文件。
F。DEBUG的其它命令
1. 移动内存命令
格式: M 源地址范围 目标起始地址
功能: 把<源地址范围>中的内容顺序移到<目标起始地址>起的一片连续内存单元。
注意: 源区域的数据不因移动而消失, 其内容仍保持不变。
源、目标中的地址只要不指定段地址, 则都是隐含使用DS段。
2. 比较命令C
格式: C 源地址范围 目标起始地址
功能: 从<源地址范围>的起始地址单元开始, 逐个与<目标起始地址>后的单元的内容顺序进行比较, 直到源终止地址为止。遇到不相同时显示出它们的地址和内容: 源地址 源内容 目标内容 目标地址
3. 查找命令S
格式: S 地址范围 要查找的内容
功能: 在指定的地址范围内查找指定的内容, 若找到则显示出它们所
处的地址, 否则不显示任何信息。
4. 十六进制算术运算命令H
格式: H 值1 值2
功能: 显示十六进制数<值1>与<值2>的和差的结果。
5. 退出DEBUG命令Q
格式: Q
功能: 结束DEBUG程序, 返回到DOS提示符下。
注意: Q命令并不把内存中正在工作的文件存盘