初学汇编之Debug命令
2017-05-15 14:51
239 查看
由于本人的系统是win10的,老师让装虚拟机,偷个懒就没装,装了一个 masm for windows 集成环境包,事实证明,这个比较方便而且,和命令行的差距就是命令行需要键入masm xxx.asm 等等的语句,本人也有兼容windows 64位系统的命令行,不必装虚拟机, 需要的读者可以在下面留言
装载的过程很简单,就是傻瓜式安装, 然后点开输入代码 保存运行,然后最重要的就是debug环境,让我无从入手,看了许多博客之后在这里总结一下:
来一段程序实践一下:
…作者无法添加图片 算了,读者请根据下面的指令自己看吧!
1: 输入 -r 查看或者修改寄存器,可以修改CS IP来指向要执行汇编的内存地址
-r 回车 查看
-r ax 回车 修改 ax的值
-r cs 回车 修改 cs的值
-r ip 回车 修改 ip的值
2: 输入-D 查看内存中的信息
-d 1000:0000 查看段地址为1000H ,偏移地址为0开始的内存信息
-d 1000:0000 00ff 就是查看 1000:0000 到1000:00ff的内存信息
查看主板生产日期
-d fff0:0000 00ff 可以看到右下角的 08/14/08 格式月/日/年, 08年8月14号生产的主板
这里的生产日期是只读的,无法修改,通过-e修改表面上看是改过了,下次打开后又恢复之前数据了
如果直接用 -d 0100 则会显示 DS:0100处的内存信息,也就是显示段地址为ds,便宜地址为0100的内存信息。
-d ds:0100 也可以这么使用
3:输入-E修改内存中位置的信息
-e 1000:0000 1a 00 09 10 a1 61 这样就可以修改对应段地址为1000H ,偏移地址为0开始的内存信息
-e 1000:0000 ‘a+b’ 这样就会在内存1000:0000处写入61H(a的ASICC码) 1000:0001处+ 1000:0002 62
4:输入-u查看指定位置对应的汇编指令
-u 1000:0000 查看该处的汇编指令
-u cs:0000 查看段地址为cs处的汇编指令
5: 输入-t 执行指令
-t 执行CS:IP所指向的第一个指令,如果要执行自己写入内存的指令,应该先通过-r来改变CS IP的值,然后再执行 -t 执行
-t 指令默认执行第一条指令后停止。但是当遇到修改SS的指令时,会把紧接的下一条指令也执行了。
6:输入-a 输入汇编指令
-a 1000:0000 回车
这样就可以直接在1000:0000处输入汇编指令了,注意再输入完之后,输入一个空格,表示输入完毕,输入完毕后,通过-r修改CS ip来指向对应的内存地址,然后就可以通过-t逐行执行了,每执行一次通过-r来看对应的寄存器的变化。
-a 回车 直接输入汇编指令,默认会在cs:ip处输入,所以直接用-a 回车输入汇编指令,然后用-t执行那么执行的就是刚刚输入的汇编指令,这样可以用来调试汇编指令
7:输入-g 直接跳转到哪步执行
用-t是需要一步一步执行,但是往往遇到loop循环时候,次数很多,必须要用-g跳到指定行执行
-g 0019 直接跳到便宜地址为0019h处执行
最后用DEBUG加载.exe文件
用RadASM编写好asm文件(新建选择masm编译器,dos)编写好后用编译、链接、运行,此时生成了对应的exe文件。比如在:D:\RadASM\Masm\Projects\test\test.exe
再用命令 debug D:\RadASM\Masm\Projects\test\test.exe 回车
-u 查看对应test.exe里的汇编指令 -t执行 -g 跳转到哪个偏移地址执行
装载的过程很简单,就是傻瓜式安装, 然后点开输入代码 保存运行,然后最重要的就是debug环境,让我无从入手,看了许多博客之后在这里总结一下:
来一段程序实践一下:
DATAS SEGMENT DATA DB 78H, 56H, 34H, 12H;此处输入数据段代码 RTL DB 4 DUP(0) DATAS ENDS STACKS SEGMENT STK DB 30 DUP(0);此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV AL, DATA;此处输入代码段代码 MOV AH, DATA+1 MOV BL, DATA+2 MOV BH, DATA+3 NEG AL CMC ;进位取反 NOT AH ADC AH, 0 NOT BL ADC BL, 0 NOT BH ADC BH, 0 MOV RTL, AL MOV RTL, AH MOV RTL+2, BL MOV RTL+3, BH MOV AX,4C00H INT 21H CODES ENDS END START
…作者无法添加图片 算了,读者请根据下面的指令自己看吧!
1: 输入 -r 查看或者修改寄存器,可以修改CS IP来指向要执行汇编的内存地址
-r 回车 查看
-r ax 回车 修改 ax的值
-r cs 回车 修改 cs的值
-r ip 回车 修改 ip的值
2: 输入-D 查看内存中的信息
-d 1000:0000 查看段地址为1000H ,偏移地址为0开始的内存信息
-d 1000:0000 00ff 就是查看 1000:0000 到1000:00ff的内存信息
查看主板生产日期
-d fff0:0000 00ff 可以看到右下角的 08/14/08 格式月/日/年, 08年8月14号生产的主板
这里的生产日期是只读的,无法修改,通过-e修改表面上看是改过了,下次打开后又恢复之前数据了
如果直接用 -d 0100 则会显示 DS:0100处的内存信息,也就是显示段地址为ds,便宜地址为0100的内存信息。
-d ds:0100 也可以这么使用
3:输入-E修改内存中位置的信息
-e 1000:0000 1a 00 09 10 a1 61 这样就可以修改对应段地址为1000H ,偏移地址为0开始的内存信息
-e 1000:0000 ‘a+b’ 这样就会在内存1000:0000处写入61H(a的ASICC码) 1000:0001处+ 1000:0002 62
4:输入-u查看指定位置对应的汇编指令
-u 1000:0000 查看该处的汇编指令
-u cs:0000 查看段地址为cs处的汇编指令
5: 输入-t 执行指令
-t 执行CS:IP所指向的第一个指令,如果要执行自己写入内存的指令,应该先通过-r来改变CS IP的值,然后再执行 -t 执行
-t 指令默认执行第一条指令后停止。但是当遇到修改SS的指令时,会把紧接的下一条指令也执行了。
6:输入-a 输入汇编指令
-a 1000:0000 回车
这样就可以直接在1000:0000处输入汇编指令了,注意再输入完之后,输入一个空格,表示输入完毕,输入完毕后,通过-r修改CS ip来指向对应的内存地址,然后就可以通过-t逐行执行了,每执行一次通过-r来看对应的寄存器的变化。
-a 回车 直接输入汇编指令,默认会在cs:ip处输入,所以直接用-a 回车输入汇编指令,然后用-t执行那么执行的就是刚刚输入的汇编指令,这样可以用来调试汇编指令
7:输入-g 直接跳转到哪步执行
用-t是需要一步一步执行,但是往往遇到loop循环时候,次数很多,必须要用-g跳到指定行执行
-g 0019 直接跳到便宜地址为0019h处执行
最后用DEBUG加载.exe文件
用RadASM编写好asm文件(新建选择masm编译器,dos)编写好后用编译、链接、运行,此时生成了对应的exe文件。比如在:D:\RadASM\Masm\Projects\test\test.exe
再用命令 debug D:\RadASM\Masm\Projects\test\test.exe 回车
-u 查看对应test.exe里的汇编指令 -t执行 -g 跳转到哪个偏移地址执行
相关文章推荐
- 汇编语言debug常用调试 命令详解
- 汇编的 DEBUG 命令
- 汇编debug常用命令
- debug常用命令介绍(学习汇编)
- 汇编语言DosBox下在64位上运行实现编译(masm)与调试即debug命令。
- [汇编语言]debug中用r命令修改cs、ip,并不能影响a命令的代码起始写入地址?
- 8086汇编 Debug -d命令注意事项
- 汇编语言DEBUG命令大全
- 汇编学习笔记3——jmp命令与DEBUG进阶指令
- 8086汇编语言自学经验分享 Q命令退出debug
- 汇编命令例题及debug调试
- 【80x86汇编】Debug.exe程序常用命令
- 汇编debug与masm命令
- 初学汇编:MASMPlus下自定义Debug工具
- 【学习汇编语言】关于汇编语言中debug的各种命令
- 王爽汇编语言debug命令汇总
- 汇编语言(四) debug 常用命令
- 初学汇编之笔记!
- 汇编时经常会遇到的命令
- 初学Linux[7]--Linux的命令组成