• 汇编语言(2)基础知识


    基础知识

    机器语言晦涩难懂,且篇幅较长。
    汇编指令是机器指令便于记忆的书写格式。
    寄存器:简单的讲是CPU中可以存储数据的器件。
    汇编语言由三种指令组成:
    (1)汇编指令:机器码的助记符,有对应的机器码。(核心)
    (2)伪指令:没有对应的机器码,由编译器执行,没有对应的机器码。
    (3)其他符号:如+、-、*、/等,由编译器识别,没有对应的机器码。
    存储器芯片从读写属性上看分为两类:RAM(随机存储器)和ROM(只读存储器)。

    寄存器

    不同的CPU,寄存器的个数、结构是不同的。
    通用寄存器:AX、BX、CX、DX。
    物理地址:物理地址=段地址 × \times ×+偏移地址
    X进制的数字向左移动一位,相当于 × \times ×X
    段地址存放在四个段寄存器中CS、DS、SS、ES。
    CS:IP访问地址指令。
    jmp指令,修改CSip。

    Debug

    本人是装了一个xp的虚拟机来实现进入debug的功能的。
    (1)用R命令查看、改变CPU寄存器的内容。
    我们已经知道了AX BX CX DX CS IP这六个寄存器,现在查看一下他们中的内容。
    在这里插入图片描述
    修改寄存器中的内容。
    在这里插入图片描述
    此时图中,CS:IP指向)0AE3:0100,此处存放的机器码为40,对应的汇编指令是INC AX;
    可以使用r命令对cs和ip进行修改。
    在这里插入图片描述
    (2)用debug的d命令查看内存中的内容
    如果我们想知道10000H处的内容,可以使用“d 段地址:偏移地址”的格式来查看。
    在这里插入图片描述
    中间的数据是各个地址中存的内容,左边是每行的起始地址,右边的是每个内存单元中的数据对应的可以显示的ASCII码。
    (3)用debug的e命令改写内存中的内容
    -e 然后加上地址,再加上要修改成的数,个数自定义
    在这里插入图片描述
    或者采用-e加地址的方式也可以。
    在这里插入图片描述
    (4)用E命令向内存中写入机器码,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码。在这里插入图片描述
    -u加地址,显示会汇编语言;
    在这里插入图片描述
    -t可以单步执行。
    在这里插入图片描述

  • 相关阅读:
    ROS2 学习笔记(三) 工作空间与功能包的创建
    LIS.LCS.LCIS相关问题
    python之时间、时间戳、时间加减
    MATLAB | 如何绘制三维曲线、曲面、多边形投影(三视图)?
    Nginx学习(二)
    VUE:key属性的作用
    7.29模拟赛总结
    js筛选数组中相同的元素组成新数组
    【快速使用ShardingJDBC的哈希分片策略进行分库分表】
    对接新浪股票交易接口api需要注意哪些细节 ?
  • 原文地址:https://blog.csdn.net/weixin_61823031/article/details/125424793