汇编语言入门–调试工具debug的使用(史上最全,11种常见命令)
1.直接启动debug程序
详见:https://bingshuai.blog.csdn.net/article/details/119978461
2.检查和修改寄存器内容命令R
检查 -r
修改 这里用AX来举例: -r AX 出现冒号(:) 输入要修改的值
3.显示和修改标志位状态 RF
其中标志状态的含义如下:
标志名 | 标志为1 | 标志为0 | |
---|---|---|---|
OF | 溢出(是/否) | ov | nv |
DF | 方向(减量/增量) | DN | UP |
IF | 中断(允许/关闭) | EI | DI |
SF | 符号(负/正) | NG | PL |
ZF | 零(是/否) | ZR | NZ |
AF | 辅助进位(是/否) | AC | NA |
PF | 奇偶(偶/奇) | PE | PO |
CF | 进位(是/否) | CY | NC |
命令格式 -RF
系统响应,如 NV UP EI PL NZ NA PO NC -
此时如果不修改其内容可按enter键,否则,键入想要修改的内容
如:NV UP EI PL NZ NA PO NC - POZRDIOV 键入的顺序是任意的
4.显示存储单元的命令D
几种命令:其格式为-D[address]或-D[range]
1.直接输入-D
2.输入 -D 083F:0100 (起始位置,段地址:偏移地址)
3.显示地址范围-D 100 1201
4直接输入起始位置 -D 110
5.修改存储单元命令E
方式一:可以用给定的内容表来替代指定的范围的存储单元内容。
命令格式: -E address [list]
-E DS:100 F3’XYZ’8D 其中F3 ,‘X’,‘Y’,'Z’和8D各占一个字节,该命令可以用这五个字节来替代存储单元DS:0100到0104的原先的内容。
方式二:采用逐个单元相继修改的方法
命令格式: -E address
-E CS:100 回车
出现073F:0100 F3.
如果需要把单元内容修改为11,可以输入11,再按空格键可接着输入显示下一个单元的内容,这样就可以不断修改相继单元的内容,直到enter键结束该命令。
6.填写命令F
其格式为: -F range list
例如:-F 073F:0120 L5 F3’XYZ’8D 使073F:0120-0124单元包含指定的五个字节的内容。
如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定范围,则重复使用list填入,直到填满指定的所有单元为止。
长度刚好合适:
长度超过
长度少于
7.汇编命令A
命令格式:-A[address]
该命令允许键入汇编语言语句,并把它们汇编成机器代码,相继地存入在从指定的地址开始存储区中。注意:debug 把键入的数字均看成十六进制数,所以如要键入十进制数,则后面要说明,如100D
8.反汇编命令U
从指定位置开始,反汇编32字节,其格式为:
-U[range]
例如:-U 073F:0120
指定范围进行反汇编:
-U 0120 0130
-U 073F:0100 0126 使用默认的有些显示不出来,所以使用这个命令,可以完全显示其内容
9.跟踪指令T
1.逐条指令跟踪:
-T[=address]
从指定地址起执行一条指令后停下来,显示所有存储器内空及标志位的值。如未指定则从当前CS:IP开始执行
例如:
-T =073F:0100
2.多条指令跟踪:
-T[=address] [value]
从指定地址起执行n条指令后停下来,n由value指定
例如:-T =073F:0100 3
10.命名指令N,写入命令w,装入指令l
1.命名命令n,其格式为
-n filespecs
filespecs 格式为 [c:] [path] filename [.com]
命令把两个文件标识符格式化在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或w命令把文件装入或存盘
2.写入命令W
把数据写入磁盘的指定扇区。其格式为:
-w address drive sectot
把数据写入指定的文件中,其格式为
-W [address]
此命令把指定的存储区中的数据写入由CS:5CH处的文件控制块所指定的文件中
如果未指定地址则数据从CS:0100开始。要写入文件的字节数应先放BX和CX中
示例:
-n c:\1.com命令的作用是设置存盘文件名为c:\1.com,-R CX作用是设置存盘文件大小为110H个字节。最后一条命令是将文件存盘。
3.装入命令L
把磁盘上指定的扇区范围的内容装入到存储器从指定地址开始的区域中,其格式为
-L[address [dirve sector sector]]
装入指定文件,其格式为:
-L[address]
此命令装入已在CS:5CH中格式化了的文件控制块所指定的文件。如未指定地址,则装入CS:0100开始的存储区中
例如:
在这之前先写入
11.运行命令G
其格式为:
-G [=address1] [address2[address3…]]
其中地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。
12.退出debug命令Q
其格式为: -Q