zoukankan      html  css  js  c++  java
  • 承上启下

    承上启下

    我们可以在一段内存中存放数据         数据段                 存放了我们自己定义的数据

    我们还可以在一段内存中存放指令                     指令段(代码段)             存放了我们自己定义的指令

     我们可以将一段内存定义成栈空间        因为我们处理数据的时候需要临时性存放        栈段

    我们如何让CPU按照我们的安排去访问这些内存段呢?

    对于数据段来说,段地址给ds段地址寄存器       偏移地址[1], [2].....mov  add sub 指令去访问  这些内存单元

    那么CPU就会将我们定义的数据段中的内容当做数据来访问

    对于代码段来说,我们可以通过修改CS  IP这两个寄存器  去指向我们定义的代码段

    这样CPU就将执行我们定义的代码段中的指令

    这样CPU就执行了我们定义代码段中的指令

    对于栈段来说  ,我们可以通过修改SS,  SP这两个寄存器 去决定栈顶标记在哪里

    这样CPU在执行栈的操作时  比如push  pop 就会将我们定义的栈段当做栈空间使用  进行临时性存放或者取出

    不管我们如何安排, CPU将内存中某段内容当做指令,是因为cs,ip指向那里

    CPU将某段内存当做栈空间  是因为ss,sp指向那里

    我们一定要清楚,我们是如何安排内存的。以及如何让CPU按照我们的安排去行事

    数据从哪里来

    指令从哪里来

    临时性数据存放到哪里去

    取决于 我们对CPU中的地址寄存器的设置    cs  ip ss  ds  sp 寄存器

     内存段的安全       数据段  代码段  栈段

    随意的项某一段内存空间中写入内容是非常危险的

    mov指令  由于我们不小心修改了系统存放在内存中的重要数据或者指令导致的程序崩溃  系统的崩溃

    向安全的内存空间去写入内容

    0:200~0:2FFH

    256个字节

    使用操作系统分配给你的内存空间

    在操作系统的环境中,合法的通过操作系统取得的内存空间都是合法的

    因为操作系统不会让一个程序所使用的内存空间和其他程序以及系统自己的空间产生冲突

    现在可以把操作系统看做一个管理内存的程序

    操作系统就是干管理内存事情的

    使用所以在操作系统允许的情况下 程序可以取得任意容量的内存空间

    一种是系统加载程序使为程序分配的内存空间

    程序在执行的过程中 向系统再去申请内存

    如何在系统上运行的   如何运行软件的——》系统去运行一个exe文件(程序) ——》为程序分配内存

    ctrl+alt+del——》启动任务管理器

     编译和链接  得到一个exe文件

    源文件    安排自己的代码段  数据段  栈段    通过编译和链接   得到一个exe文件

    如何从系统申请内存

    exe

    源文件进行编译和链接就可以得到exe文件

    代码段  数据段  栈段都是写在源文件中的

    伪指令:告诉编译器  也就是翻译软件  这里怎么翻译 那里怎么翻译

    data  segment 数据段

    stack  segment  栈段

    code  segment  代码段

    对CPU的地址寄存器进行了设置  从而让CPU按照我们的安排去访问数据段和栈段

    至于代码段  如果关于CS和IP的设置

  • 相关阅读:
    [Javascript] Broadcaster + Operator + Listener pattern -- 3 Stop with condition
    分布式事务科普(初识篇)
    分布式事务不理解?一次给你讲清楚!
    分布式事务,有解吗?
    分布式事务精华总结篇,实打实的干货!
    常用的分布式事务解决方案介绍有多少种?
    5种分布式事务解决方案优缺点对比
    Leaf——美团点评分布式ID生成系统
    MySQL分区总结
    互联网公司为啥基本不使用mysql分区表
  • 原文地址:https://www.cnblogs.com/hsp1269/p/13841188.html
Copyright © 2011-2022 走看看