zoukankan      html  css  js  c++  java
  • 8086汇编 Debug 使用

    8086汇编 Debug 使用

    Debug是DOS系统中的著名的调试程序,也可以运行在windows系统实模式下。

    使用Debug程序,可以查看CPU各种寄存器中的内容、内存的情况,并且在机器指令级跟踪程序的运行。

    常用指令:

    • 用R命令查看、改变CPU寄存器的内容
    • 用D命令查看内存中的内容
    • 用E命令改变内存中的内容
    • 用U命令将内存中的机器指令翻译成汇编指令
    • 用A命令以汇编指令的格式在内存中写入机器指令
    • 用T命令执行机器指令
    • 用P命令逐条执行指令、显示结果。但遇子程序、中断等时,直接执行,然后显示结果。
    • 用G命令从指定地址处开始运行程序,直到遇到断点或者程序正常结束。

    使用

    一、启动Debug

    1、在DOS提示符下输入命令:> debug

    二、使用Debug

    使用方式一、通过debug执行程序:> debug 程序名称.exe

    使用方式二、通过debug直接操作当前内存:> debug

    1、用R命令查看、改变CPU寄存器的内容

    a、R - 查看寄存器内容

    1) -r

    b、R 寄存器名 - 改变指定寄存器内容

    // 指定要修改的寄存器名、也可写为-r寄存器名
    // 格式:-r 寄存器名
    1) -r ax
    // 修改寄存器值、16进制存储
    2) :1234

    2、用D命令查看内存中的内容

    a、D - 列出预设地址内存处的128个字节的内容

    1) -d
    // 073F(段地址):0100(偏移地址)    00(值)    ....(ASCLL码)
    073F:0100 00 00 00 00 00 00..

    b、D 段地址:偏移地址 - 列出内存中指定地址处的内容

    // 指定查看内存地址的值
    // 格式:-d 段地址:偏移地址
    1) -d 2000:0000

    c、D 段地址:偏移地址 结尾偏移地址 - 列出内存中指定地址范围内的内容

    // 指定查看内存地址、根据偏移量查看范围
    // 格式:-d 段地址:偏移地址 偏移量地址
    1) -d 2000:0 2f

    3、用E命令改变内存中的内容

    a、E 段地址:偏移地址 数据1 数据2 ...

    // 修改内存地址对应值
    // -e 段地址:偏移地址 值 值 值 值 值 、值为16进制
    1) -e 2000:0000 12 34 56 AB 3F F3

    b、E 段地址:偏移地址

    ; 逐个询问式修改
    ; 空格 - 接受,继续
    ; 回车 - 结束
    // 修改内存地址对应值 // -e 段地址:偏移地址 1) -e 2000:0000 // 段地址:偏移地址 源值.修改值 源值.修改值 源值.修改值 2) 2000:0000 12.61 34 41 56.62

    4、用U命令将内存中的机器指令翻译成汇编指令

    a、u 地址 - 查看代码

    // 查看内存对应机器码转换为汇编
    // 格式:-u 段地址:偏移地址
    1) -u 2000:0

    b、案例使用

    对应的机器码为:

    B8 23 01
    BB 03 00
    89 D8
    01 D8

    汇编指令:

    mov ax, 0123H
    mov bx, 0003H
    mov ax, bx
    add ax, bx

    1)通过E命令添加内存机器码

     2)查看内存数据

     3)通过U查看机器码转换汇编代码

    5、用A命令以汇编指令的格式在内存中写入机器指令

    a、a 地址 - 写入汇编指令

    // 指定内存地址写入汇编指令、073F为CS代码段的寄存器
    // 格式:-u 段地址:偏移地址
    1)-u 073F:100
    // 格式:段地址:偏移地址 汇编指令
    2)073F:0100 mov ax, 0123

    b、案例使用

    有汇编指令:

    mov ax, 0123H
    mov bx, 0003H
    mov ax, bx
    add ax, bx

    对应的机器码为:

    B8 23 01
    BB 03 00
    89 D8
    01 D8

    1)A写入汇编语言

    2)D查看内存值 对应机器码

    3)U查看输入的汇编指令

    6、用T命令执行机器指令

    注:P、G 与 T 指令类似 根据场景进行操作。

    a、t - 执行CS:IP处的指令

    // 执行CS:IP 代码
    1)-t

    b、案例使用

    1)r查看当前寄存器情况、当前存储指令为 073F:0100 B82301 MOV AX,0123

    2)t执行指令、MOV AX,0123

    3)t执行指令 MOV BX,0003

    4)t执行指令 MOV AX,BX、验证AX发生变化

    7、用Q命令退出Debug

    a、q - 退出Debug

    // 对出Debug
    1)-q
  • 相关阅读:
    win10 uwp 弹起键盘不隐藏界面元素
    win10 uwp 存放网络图片到本地
    win10 uwp 存放网络图片到本地
    sublime Text 正则替换
    sublime Text 正则替换
    win10 uwp 绘图 Line 控件使用
    win10 uwp 绘图 Line 控件使用
    AJAX 是什么?
    什么是 PHP SimpleXML?
    PHP XML DOM:DOM 是什么?
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/12461187.html
Copyright © 2011-2022 走看看