zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    ssd 的anchor生成详解
    Qt小技巧8.利用反射机制通过类名创建Qt对象
    项目经验2.需求才是王道
    Qt实战12.可自由展开的ToolBox
    Qt实战11.进程窗口集成之假装写了个第三方软件
    Qt小技巧7.Qt4集成fusion风格
    Qt杂谈3.快速体验Qt for Android(windows平台)
    Qt实战10.支持最小化和最大化的QDockWidget
    gitlab 拉取远程分支代码
    CentOS7下用jdk1.7编译hadoop-2.7.1全过程详解
  • 原文地址:https://www.cnblogs.com/zc-de-blog/p/10163197.html
Copyright © 2011-2022 走看看