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
  • 相关阅读:
    centos7安装mysql5.7
    Day1:基于ECS搭建FTP服务
    sql多表语句
    SSM多表查询
    ssm中使用逆向工程
    用maven对ssm进行整合
    Maven设置本地仓和阿里云远程仓
    解决maven项目中web.xml is missing and <failOnMissingWebXml> is set to true
    SSM登陆
    理解ConcurrentMap
  • 原文地址:https://www.cnblogs.com/liujunjun/p/12494054.html
Copyright © 2011-2022 走看看