8086汇编语言之debug模式常用指令介绍

452 阅读4分钟

小知识,大挑战!本文正在参与“  程序员必备小知识  ”创作活动

本文同时参与 「掘力星计划」  ,赢取创作大礼包,挑战创作激励金

在搭建好了8086汇编的开发环境后,接下来介绍8086的debug模式。执行debug.exe以进入debug调试模式,在dos中通过输入命令的方式进行交互

## -R命令

R命令的作用是查看和修改debug模式下CPU中寄存器的值

## -D命令

D命令的作用是查看内存中的内容

上面为**(段地址:偏移地址)查看方式。D命令默认会显示寻址地址开始的后128个内存单元的内容,以16进制的方式显示(每个内存单元8位,一行最多16个内存单元),而最右边会将内存单元中的二进制数据以ascll码**的形式翻译展示

  但有时,我们只想聚焦于某一部分内存地址的内容,而默认展示的内存视图不是很方便。

  D命令提供了另外一种访问内存的方式(段地址:偏移起始地址 偏移终止地址),其能够展示(段地址:偏移起始地址 至 段地址:偏移终止地址)的内存信息,范围两端均为闭区间

-E命令

E命令的作用是改变内存中的内容

 和对CPU中寄存器的查看,修改不同,对内存进行查看和修改较为复杂,为此debug设计了两个不同的命令分别进行控制(E命令修改内存、D命令查看内存)。

  通过(E 起始地址 数据1 数据2 数据3...)命令可以修改内存中以起始地址开始,顺序的N个内存单元的值(N为实际参数传递的数量)

也可以和R命令修改CPU中寄存器值类似的,通过提示来修改特定内存单元的值。00.12 00代表内存单元在修改前的值,12是我们手动输入的、需要修改的新值

-U命令

U命令的作用是将内存中的二进制数据转换为汇编指令展示(反汇编)

D命令能够将内存中的数据以16进制或ascll码的形式展现出来,但有时我们需要观察的是内存中的机器指令时,D命令的视图过于抽象,不利于理解。debug提供了U命令来解决这个问题。

  对于前面我们在1000:0处输入的机器指令,使用 U 1000:0 命令(u 内存地址)可以将内存中的数据以汇编语言指令的方式进行展示

-A命令

A命令能够以汇编指令的形式向内存中写入内容

对于内存操作,D命令可以查看内存中的内容,但如果想查看的是程序指令,显然U命令更加方便;E命令可以向内存中写入数据,但对于程序指令的写入,直接操作二进制机器码的方式过于硬核。为此,debug提供了A命令,我们可以通过A命令以汇编指令的形式向内存中写入内容。

  通过A命令将(mov ax,0001,mov bx,0002,add ax,bx)三条指令写入内存1000:0处:

通过A命令进行指令的写入,和E命令达到的效果一样,但使用起来却更加便捷。A命令能够自动识别所输入汇编指令的长度,正确的在内存中写入程序指令。

  debug提供了D、E两种命令用于对内存进行通用的操作(纯二进制、十六进制数据的读、写)。

  对于程序指令,debug提供了U、A两种命令以更人性化的方式来读写内存中的指令内容

-T命令

 T命令的作用是进行单步机器指令的调试

-G命令

 G命令的作用是进行Debug程序断点调试

-g 代码地址(cs+ip)地址

-p命令

 p命令的作用是断点跳过执行 ,可用于循环调试

「欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章」