• 汇编指令


    1.debug的常用命令

      1.r命令

        查看、修改CPU中寄存器的值

        -r :查看寄存器的值

        -r  cs :修改寄存器cs的值

      2.D命令

        查看内存中的内容

        1.-d  段地址:偏移地址

        -d 1000:01     查看内存100001处的内容

        -d 段地址:偏移地址 结尾偏移地址

        -d 1000:0 9     查看100000 - 100009

      3.E命令

        改写内存中的内容

        1.-e 1000:10 0 1 2 3     从1000010开始向内存中写入0123数据, 如果写入内存的数据是字符其实实际上存入内存中的是其对应的ascll码

      4.U命令

        查看机器码对应的汇编指令

        -u 1000:0   查看1000:0 处的机器码对应的汇编指令

      5.T命令

        执行当前的指令  

        执行cs:ip 在指向的内存单元中的指令,并且使cs:ip指向下一条指令

      6.A命令

        以汇编指令的形式在内存中写入机器指令

        -a 1000:0

        1000:0000 mov ax,1

        1000:0003 mov bx,2

        1000:0006 add ax,bx

    2.将机器码为b8 20 4e, 对应的汇编指令为mov ax,4E20H的指令,使用汇编指令写入内存并且执行

    第一种方法:  使用e指令向内存中写入指令(从coding的角度来说,写入的是机器语言,也就是机器码)

    1.使用e指令,修改内存单元中的内容,改为指令的机器码

    2.机器码写入成功

    3.修改cs和ip,使其指向的内存单元是我们刚写入指令的内存单元

    4.重新指向cs和ip成功

    5.使用t指令执行,内存单元中的指令,观察ax的值,发现已经执行成功

    第二种方法: 使用a指令向内存中写入指令(从coding的角度来讲, 写入的是汇编语言)

    1.使用a指令,向内存单元中直接写入指令,然后debug将汇编语言转换为机器语言写入到内存中(这样就是方便我们修改指令,不用存入机器码)

    2.使用-t执行指令,也是执行成功

     3.栈操作

      1.push 寄存器              //入栈

      2.pop  寄存器              //出栈

    4.dosbox下使用debug程序

  • 相关阅读:
    Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) C. Destroying Array -- 逆向思维
    一种压缩图片的方法---Machine learning 之 K-Means
    【Codeforces】Codeforces Round #374 (Div. 2) -- C. Journey (DP)
    strcpy自实现
    Coursera公开课-Machine_learing:编程作业6
    【Codeforces】Codeforces Round #373 (Div. 2) -C
    【Codeforces】Codeforces Round #373 (Div. 2)
    【Leetcode】376. Wiggle Subsequence
    Coursera公开课-Machine_learing:编程作业5
    C++实现日期类(Date类)
  • 原文地址:https://www.cnblogs.com/kangjunhao/p/9613832.html
Copyright © 2020-2023  润新知