Mr.kang之真经求取
                                        ---积跬步,至千里

汇编指令

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程序

 

posted @ 2018-09-09 15:33  Mrs.kang  阅读(2178)  评论(0编辑  收藏  举报