目录
    
    
    
    前言
   
最近学了王爽教授写的《汇编语言》,整理一下学习笔记。
    
    
    一、Debug模式
   
Debug是DOS、Windows都提供的实时模式(8086 方式)程序的调试工具。使用它,可以查看CPU各种寄存器的内容、内存的情况和在机器码级跟踪程序的运行。
    
    
    Debug功能
   
    (1)用Debug的
    
     R
    
    命令
    
     查看、改变CPU寄存器的内容
    
    ;
    
    (2)用Debug的
    
     D
    
    命令
    
     查看内存中的内容
    
    ;
    
    (3)用Debug的
    
     E
    
    命令
    
     改写内存中的内容
    
    ;
    
    (4)用Debug的
    
     U
    
    命令
    
     将内存中的机器指令翻译成汇编指令
    
    ;
    
    (5)用Debug的
    
     T
    
    命令
    
     执行一条机器指令
    
    ;
    
    (6)用Debug的
    
     A
    
    命令
    
     以汇编指令的格式在内存中写入一条机器指令
    
    。
   
    
     Windows 32
    
    位系统可以直接从
    
     DOS方式
    
    下进入
    
     Debug
    
   
    
    
    但
    
     Windows 64
    
    位系统已经不再支持命令行模式下进入
    
     Debug
    
    了,想要进入Debug模式,需安装
    
     DOSBox
    
    和
    
     debug.exe
    
    来进入Debug模式。
   
    
    
    二、下载安装DOSBox和debug.exe
   
    通过下面的链接即可下载:
    
    链接:
    
     https://pan.baidu.com/s/1eMB0ddYycOdF42QmoXhJOQ?pwd=DDOS
    
    
    提取码:DDOS
   
在这里我将DOSBox 默认安装在 C:\Program Files (86X) 目录下。将debug.exe 放在D盘的Debug目录下;
打开后是这样的界面,有两个窗口,两个窗口必须同时打开,不能关闭任意一个!
    
    
    我们可以看到
    
     Z:>
    
    ,这是DOSBox的虚拟盘符
    
    然后依次输入下面的命令
   
    
     mount D D:\Debug
     
     D:
     
     debug
    
   
     
   
    这样就可以进入Debug模式了(其中D盘是在DOSBox中创建的
    
     虚拟D盘
    
    ,并不是本地的D盘)
   
    
    
    三、实战
   
    
    
    用R命令修改寄存器中的内容
   
    以寄存器
    
     ax
    
    为例
   
    
    
    按
    
     Enter
    
    键,
    
     R
    
    命令操作结束。
   
    
    
    用D命令查看内存中的内容
   
    以内存
    
     10000H
    
    处的内容为例,用“
    
     d 段地址:偏移地址
    
    ”的格式来查看
    
    
    
    图中
    
    
     左边
    
    ,是每行的
    
     起始地址
    
    。
    
    
     中间
    
    ,是指定地址开始的
    
     128个单元的内容
    
    ,用16进制的格式输出,每行输出从16的整数倍的地址开始,最多输出16个单元的内容。
    
    
     右边
    
    ,是每个单元中的数据
    
     对应的ASCII码字符
    
    ,当数据没有对应的ASCII字符时,Debug就会用 “
    
     .
    
    ” 代替。
   
    若查看指定内存处的内容,可以用“
    
     d 段地址:起始偏移地址 结尾偏移地址
    
    ”的格式来查看。
   
    按
    
     Enter
    
    键,
    
     D
    
    命令操作结束。
   
    
    
    用E命令改写内存中的内容
   
    以内存
    
     1000:0-1000:9
    
    单元为例,将其中的内容改为0、1、2······7、8、9,可以用“
    
     e 起始地址 数据 数据 数据······
    
    ”的格式来进行。
    
     
   
同时,还可以用e命令以提问的方式来逐个的修改从某一地址开始的内存单元内容
    
    
    按
    
     Enter
    
    键,结束
    
     E
    
    命令。
   
    
    
    向内存中存入机器码
   
    要知道,机器码也是数据,当然可以
    
     用e命令将机器码写入内存
    
    ,比如写下面的指令:
    
    
    
    可以用e命令这样写:
    
     
   
    
    
    用U命令将内存中的机器指令翻译成汇编指令
   
    类比上面的命令,u命令运用如下:
    
    
    
    从左到右依次是:
    
     每一条机器指令的地址
    
    ,
    
     机器指令
    
    ,
    
     机器指令所对应的汇编指令
    
    。
   
    按
    
     Enter
    
    键,结束
    
     U
    
    命令。
   
    
    
    用T命令执行一条或多条指令
   
    
    
    图中标红线的地方就是下一步要进行的指令,用
    
     t命令
    
    即可立刻执行。
   
    按
    
     Enter
    
    键,结束
    
     T
    
    命令。
   
    
    
    用A命令以汇编指令的形式在内存中写入机器指令
   
    通过上面的练习我们发现用E命令写入机器指令很麻烦,所以我们可以用A命令直接写入汇编指令:
    
    
    
    按
    
     Enter
    
    键,结束
    
     A
    
    命令。
   
    
    
    总结
   
    以上为本人学习汇编语言时的摘录总结,主要内容来源于
    
     汇编语言(第四版) 王爽 著
    
    ,大家若是感兴趣可以看看原书,很值得推荐,以上内容如果有什么错误的话,还请大家指正!
   
 
