汇编语言debug的使用方法

进入Windows操作系统,输入cmd回车
输入debug 回车,这样就进入了 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 跳转到哪个偏移地址执行

时间: 2024-08-02 11:37:49

汇编语言debug的使用方法的相关文章

在win7 64位操作系统下运行debug软件的方法

  在win7 64位操作系统下运行debug软件的方法         具体方法如下: 1.我们网上去下载debug.exe,这里我把debug放在了c盘根目录下; 2. 接下来,我们需要下载很重要的一个软件叫DosBox,我已经下载好,并打开它; 3.输入mount c c: 加载目录到c盘; 4.输入c: 进入到c盘,看到我们已经在c盘下了; 5. 输入debug,表示打开放在c盘下的debug工具,使用r命令,可以看到,我们进入了熟悉的debug环境.

浅析C#中的Debug类及方法

位于命名空间System.Diagnostics中 1.Debug.Print方法 Debug.Print("Today: {0}", DateTime.Today); 2.Debug.WriteLine方法 Debug.WriteLine("Have a nice day"); 3.TraceListener类 DelimitedListTraceListener创建的时候指定一个文件名,当Flush调用的时候,就被覆写到文件里. TraceListener li

eclipse debug远程调试方法介绍

在startweblogic.cmd中加入如下语句:  set DEBUG_OPTS=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,address=5555,suspend=n   %JAVA_HOME%/bin/java %DEBUG_OPTS% %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionMode

debug下载-汇编语言调试工具debug

问题描述 汇编语言调试工具debug 有哪位好心人士给个下载win8 debug32.exe的地址啊? QQ:2964312156 解决方案 你为啥不用8086模拟器的那个小软件呢,也能调试啊 解决方案二: 汇编语言入门:debug调试工具汇编语言调试DEBUG命令汇编语言debug的使用方法 解决方案三: http://www.itellyou.cn/ 这个也许会有你要的东西,去看看 解决方案四: 你为啥不用8086模拟器的那个小软件呢,也能调试啊

.NET Core的日志[3]:将日志写入Debug窗口

定义在NuGet包"Microsoft.Extensions.Logging.Debug"中的DebugLogger会直接调用Debug的WriteLine方法来写入分发给它的日志消息.如果需要使用DebugLogger来写日志,我们需要将它的提供者DebugLoggerProvider注册到LoggerFactory上.由于定义在Debug类型中的所有方法都是针对Debug编译模式的,所以在只有针对Debug模式编译的应用中使用DebugLogger才有意义.这里将的"De

理解堆栈及其利用方法

作者:王智通   堆栈基础篇: 1.堆栈结构 从广义上来讲,堆栈其实就是一种后进先出的数据结构,这跟队列的作用正好相反, 你可以定义一个数组或用malloc分配一块内存来模拟堆栈的作用, 比如openjdk的解释器就要用到堆栈结构来做计算. 我们在从c的角度来仔细审视下堆栈的结构,本文以intel体系结构为例. intel处理器定义了跟堆栈有关的几个寄存器: esp/rsp:  保存了当前堆栈栈顶指针的寄存器. ebp/rbp:  保存了当前堆栈基地址指针的寄存器. 在通常情况下, 我们观察到的

C++内存泄露检查的5个方法

一.前言 在Linux平台上 有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容 易形成"统一"的标准.而在Windows平台,服务器和客户端开发人员惯用的调试方法有很大不同.下面结合我的实际经验,整理下常见定位内存泄漏的方 法. 注意:我们的分析前提是Release版本,因为在Debug环境下,通过VLD这个库或者CRT库本身的内存泄漏检测函数能够分析出内存泄漏,相对而言比较简单.而服务器有

C++程序检测内存泄漏的方法分享_C 语言

一.前言 在Linux平台上有valgrind可以非常方便的帮助我们定位内存泄漏,因为Linux在开发领域的使用场景大多是跑服务器,再加上它的开源属性,相对而言,处理问题容易形成"统一"的标准.而在Windows平台,服务器和客户端开发人员惯用的调试方法有很大不同.下面结合我的实际经验,整理下常见定位内存泄漏的方法. 注意:我们的分析前提是Release版本,因为在Debug环境下,通过VLD这个库或者CRT库本身的内存泄漏检测函数能够分析出内存泄漏,相对而言比较简单.而服务器有很多问

Javascript 中 console 的用法

console对象是JavaScript的原生对象,它有点像Unix系统的标准输出stdout和标准错误stderr,可以输出各种信息用来调试程序,而且还提供了很多额外的方法,供开发者调用.它的常见用途有两个. 显示网页代码运行时的错误信息. 提供了一个命令行接口,用来与网页代码互动. 浏览器实现 console对象的浏览器实现,包含在浏览器自带的开发工具之中.以Chrome浏览器的"开发者工具"(Developer Tools)为例,首先使用下面三种方法的一种打开它. 按F12或者C