汇编语言:实验一 查看CPU和内存,用汇编指令和机器指令编程

Debug的使用:

Debug 是DOS和Windows 实模式 (8086方式)的调试器,可以查看修改寄存器内容以及内存内容,机器码级别

Debug命令:

  1)R命令:显示或修改寄存器内容

    -r 显示所有寄存器及内容,且在末尾显示当前CS:IP指向的内存单元的指令

    -r ax 修改ax寄存器值,会出现:提示输入

      注意修改CS和IP可以使用r命令,与汇编指令区别开(汇编jmp,debug -r)

  2)D命令:显示内存内容

    -d 无参数显示当前CS:IP地址开始128个内存单元数值及对应ASCII码

    -d 1000:0 显示1000H:0H地址开始128个内存单元数值及对应ASCII码

    -d 1000:0 F 显示1000H:0H地址开始F个内存单元数值及对应ASCII码

  3)E命令:修改内存内容

    -e 1000:0 1 2 3 ....从1000H:0H地址开始每个内存单元依次是0,1,2...要改多少就写多少

    -e 1000:0 以提问方式依次写入各个单元内容,输入此命令之后显示1000H:0H的数值并且显示一个 . ,在点之后输入新的数值

          按空格跳到下一个内存单元, . 后不输入数值按空格表示不修改该内存单元数值,回车键结束命令

    -e 1000:0 1 'a' 2 'b'  输入字符, 对应内存单元数值为: 01 61 02 62      61十进制是91表示小写字母a 

    -e 1000:0 1 "a+b" 2 "nihao" 输入字符串

    对内存来说数据和指令都是二进制没有区别的,所以用E命令也可以把指令写入内存

    1. mov ax,0001指令对应的机器码是b80100 

    2. -e 1000:0 b8 01 00 把指令的机器码写入内存

    3. -r cs      :1000   -r ip    :0 设置CS:IP使下个指令指向我们覆盖的内存

    4.-t 运行一次指令

  4)U命令:将内存中的机器码翻译成汇编指令并显示

    1. -e 1000:0 b8 01 00 把指令的机器码写入内存

    2. -u 1000:0 从1000:0内存开始把内存中数值翻译成汇编指令

      结果 :   1000:0000 B80100 MOV AX,0001

           1000:0003  ...

  5)T命令:执行当前CS:IP指向的指令,执行完自动显示寄存器内容

  6)A命令:以字符串方式把指令写入内存

    -a 1000:0 回车后自动显示1000:0000

          输入mov ax,1之后自动显示1000:0003 再输入其他指令,输入结束回车

 

 实验:

  1.计算2的N次方:

  从1000:0初开始输入指令  

  mov ax,1

  add ax,ax

  jmp 1000:0003    :跳转到add指令

  2.查看PC主机ROM内存上的生产日期,地址位于FFF00H到FFFFFH

  -d FFF0:0 查看从FFF00H开始的128内存单元

  -d 查看接下来的128内存单元

  用-e修改是不可以的,ROM只读的

  

     

原文地址:https://www.cnblogs.com/superzhao/p/4602230.html