• 汇编语言:实验一 查看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只读的

      

         

  • 相关阅读:
    腾讯2014 笔试
    iOS 并发编程之 Operation Queues
    iOS 架构
    loadView and viewDidLoad?
    Referring to weak self inside a nested block
    Weakify和strongify探究
    iOS开发的最佳实践
    iOS 书籍
    Object-C非正式协议与正式协议的区别
    解决element-ui中el-menu组件作为vue-router模式在刷新页面后default-active属性与当前路由页面不一致问题的方法
  • 原文地址:https://www.cnblogs.com/superzhao/p/4602230.html
Copyright © 2020-2023  润新知