最近刚开始学习汇编语言,整理了一些在dos环境下debug指令的使用方法,方便日后学习
因为我自己是64位的系统,所以先自己建了文件夹,把tasm、tlink、debug等等学习汇编语言用得到的程序都放进去,然后安装了DOSbox后可以直接在DOSbox里面编译链接和调试。DOSbox链接https://pan.baidu.com/s/1qYCrLTy
看一下运行效果:
一般是两个窗口同时打开,用小的窗口,关掉任何一个窗口都会终止程序。
先简单列一下:
a (Assemble) 逐行汇编 a [address]
c (Compare) 比较两内存块 c range address
d (Dump) 内存16进制显示 d [address]或 d [range]
e (Enter) 修改内存字节 e address [list]
f (fin) 预置一段内存 f range list
g (Go) 执行程序 g [=address][address...]
h (Hexavithmetic) 制算术运算 h value value
i (Input) 从指定端口地址输入 i pataddress
l (Load) 读盘 l [address [driver seetor>
m (Move) 内存块传送 m range address
n (Name) 置文件名 n filespec [filespec...]
o (Output) 从指定端口地址输出 o portadress byte
p 执行循环、重复的字符串指令、软件中断或子例程。
q (Quit) 结束 q
r (Register) 显示和修改寄存器 r [register name]
s (Search) 查找字节串 s range list
t (Trace) 跟踪执行 t [=address] [value]
u (Unassemble) 反汇编 u [address ]或range
w (Write) 存盘 w [address[driver sector secnum>
然后在我调试程序的时候按照要求主要用到的有
(1)t 单步调试,显示寄存器内容和下一步的汇编指令,输一次跑一条指令,输入tn就跑n条指令
(2)r 可以显示寄存器内容和修改寄存器当前内容,输r只是单纯显示,输入r AX按回车就显示当前AX的内容,如果要修改就输入要修改的内容,不修改就直接按回车
(3)d 显示存储单元,不指定地址就自动显示DS段的内容,可以指定要看的段,如DS:100,数据段:偏移地址100;SS:100,堆栈段:偏移地址100.
(4)e 修改存储单元内容,输入e SS:100 01,然后用D查看,发现从B8变成了01
还有a,u,q都是比较常用,要想熟练使用还是要多加练习