美文网首页
汇编语言 - 段的综述

汇编语言 - 段的综述

作者: changsanjiang | 来源:发表于2018-11-06 15:11 被阅读30次

以下内容摘自 汇编语言(第3版):

我们可以将一段内存定义为一个段, 用一个段地址指示段, 用偏移地址访问段内的单元. 这完全是我们自己的安排.

我们可以用一个段存放数据, 将他定义为"数据段";
我们可以用一个段存放代码, 将他定义为"代码段";
我们可以用一个段当做栈, 将他定义为"栈段".

我们可以这样安排, 但若要让CPU按照我们的安排来访问这些段, 就要:

对于数据段, 将他的段地址放在DS中, 用mov, add, sub等访问内存单元的指令时, CPU就将我们定义的数据段中的内容当做数据来访问.

对于代码段, 将他的段地址放在CS中, 将段中第一条指令的偏移地址放在IP中, 这样CPU就将执行我们定义在代码段中的指令;

对于栈段, 将他的段地址放在SS中, 将栈顶单元的偏移地址放在SP中, 这样CPU在需要进行栈操作的时候, 比如执行push, pop指令等, 就将我们定义的栈段当做栈空间来用.

可见, 不管我们如何安排, CPU将内存中的某段内容当做代码, 是因CS:IP指向了那里; CPU将某段内存当做栈, 是因为SS:SP指向了那里. 我们一定要清楚, 什么是我们的安排, 以及如何让CPU按我们的安排行事. 要非常清楚CPU的工作机理, 才能在控制CPU按照我们的安排运行的时候做到游刃有余.

比如我们将 10000H~1001FH 安排为代码段, 并在里面存储如下代码:

mov ax, 1000
mov ss, ax
mov sp, 0020
mov ax, cs
mov ds, ax
mov ax, [0]
add ax, [2]
mov bx, [4]
add bx, [6]
push ax
push bx
pop ax
pop bx

设置 CS=1000H, IP=0, 这段代码将得到执行. 可以看到, 在这段代码中, 我们又将10000H~1001FH安排为栈断和数据段. 10000H~1001FH这段内存, 即是代码段, 又是栈段和数据段.

一段内存, 可以即是代码的存储空间, 又是数据的存储空间, 还可以是栈空间, 也可以什么也不是. 关键在于CPU中寄存器的设置, 即 CS, IP, SS, SP, DS的指向.

相关文章

  • 汇编语言 - 段的综述

    以下内容摘自 汇编语言(第3版): 我们可以将一段内存定义为一个段, 用一个段地址指示段, 用偏移地址访问段内的单...

  • 汇编语言段超越

    8086寻址方式中,有一些默认段寄存器的情况。例如,如果用BP作为基址寻址的单元,则可表明此单元位于SS段;如果用...

  • 汇编语言探索(一)

    · 汇编语言 汇编语言的意义:汇编语言的产生是为了取代麻烦的机器语言。汇编语言的组成:有以下3类指令组成(汇编语言...

  • RAM学习路线03-RAM汇编语言

    1. ARM汇编程序的结构 1.1 段 ARM的汇编语言程序由段组成,段是相对独立的指令或数据单位,每个段...

  • 1.23三峡广场雅思全程班 1.29第7次课笔记大纲

    动态图Part2 综述(overview) 图表的整体特征,所有对象 综述的位置:主体一段或者尾段 标志词: Ov...

  • GNU 汇编: 第一个汇编程序

    介绍 汇编语言程序由定义好的段构成, 每个段都有不同的目的, 最常用的三个段如下 数据段: 声明带有初始值得数据 ...

  • C程序设计语言-美-里奇-C语言之父-机械工业出版社

    我的思考 汇编语言中,程序分为多个段,数据段和代码段,我认为所有的语言大抵也是如此。以下这两点,是所有语言的基本。...

  • 文献综述的写作方法

    文献综述的写作方法 质化研究2016-06-06 文献综述的写作方法 作者:段玉斌,毕辉,韩雪峰 来源:西北医学教...

  • 使用汇编语言向屏幕打印内容

    【实验目的】使用汇编语言编写一段程序, 向屏幕中显示'Welcome to OS!'字符 【工具】 https:/...

  • 2018-01-26

    计算机汇编语言 汇编语言(AssemblyLanguage) 是面向机器的设...

网友评论

      本文标题:汇编语言 - 段的综述

      本文链接:https://www.haomeiwen.com/subject/esduxqtx.html