• UNIT THREE


    基础

    (1) 内存以字节为单位,划分为若干个单元。
    (2) 计算机内数据存-取单位:
    ① 字节 (8bit)
    ② 字 (16bit)
    ③ 双字 (32bit)
    ④ 四字 (64bit)

    ds寄存器

    DS: 数据段段寄存器,用于存放数据段的「段地址」

    将一段内存用作数据段,是编程时的一种安排
    在mov, add, sub等汇编指令中,访问内存单元时,默认情况下,指的是数据段。

    格式:

    mov ax, [1]; ax ← ( (ds) × 16 + 1)

    附:

    注意:

    (1) 两个操作数长度要一致。

    (2) 关于常数(也叫立即数)

      ① 不能作为第1个操作数(目的操作数)
      ② 作第2个操作数(源操作数)时,如果最高位是十六进制的a~f或A~F,前面要加零!

    (2)例:

      mov 4000H, ax × mov ax, 4000H √
      mov ax, A400H × mov ax, 0A400H √

    (3) 两个内存单元之间不能直接传送数据。

    (4) 不能使用mov指令修改CS和IP的值。

    (5)段寄存器

      ① 两个段寄存器之间不能直接传送;
      ② 不能把常数送到段寄存器。

    「栈」是一个逻辑上的概念。可以将一段内存空间当作「栈」来使用。

    栈顶: 最后入栈的字数据所对应的地址单元
    栈底: 固定的一端,栈区最高地址单元的前一个单元

    入栈: 把数据存入栈
    出栈: 从栈取出数据

    SS: 栈段段寄存器,用于存放栈段的「段地址」
    SP: 栈指针寄存器,用于存放栈顶的偏移地址。


    SS:SP对应的物理地址是栈顶的物理地址。
    (SS) × 16 + (SP) → 栈顶的物理地址

    「栈」操作指令: push和pop

    小结

    (1) 「段」是一个逻辑上的概念。
    编程时,可根据需要指定一段内存区用作数据段、代码段或是栈段。
    (2) 用作数据段时,要把段地址→DS
    用作栈段时,要把段地址→SS,栈顶偏移地址 → SP
    用作代码段时,段地址→CS,要取的指令偏移地址→IP。但CS和IP的值不能使用mov改变。
    (3) 一段内存可以同时用作代码段、数据段、栈段。
    由编程时灵活确定。
    (4) 在8086CPU中,每个段的最大长度不能超过64KB。
    (因为寄存器是16位的,能表示的地址范围只能是0000H~FFFFH,即0~216-1)

  • 相关阅读:
    (一)Java基本数据类型及运算符
    (二)Java控制执行流程
    ArrayList类源码解析——ArrayList动态数组的实现细节(基于JDK8)
    Java的四个标记接口:Serializable、Cloneable、RandomAccess和Remote接口
    Java容器类源码分析之Iterator与ListIterator迭代器(基于JDK8)
    Java容器类源码分析前言之集合框架结构(基于JDK8)
    浅谈虚树
    点分治
    Ze_Min Tree 主席树
    笛卡尔树的妙用
  • 原文地址:https://www.cnblogs.com/zc-de-blog/p/10163197.html
Copyright © 2020-2023  润新知