zoukankan      html  css  js  c++  java
  • 王爽《汇编语言》第三版 第三章 内存访问

    3.1 内存中字的存储

      在0地址处开始存放20000(4E20H):

      

      注意:0号单元是低地址单元,1号单元是高地址单元。

      任何两个地址连续的内存单元,N号单元和 N+1号单元,可以将它们看成两个内存单元 ,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。

     

     

    3.2 DS和[address]

      在8086PC中,内存地址由段地址和偏移地址组成,8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址。

     

      执行指令时,8086CPU自动取DS中的数据为内存单元的段地址。

     

    3.3 字的传送


    3.4 mov、add、sub指令

     

      已学mov指令的几种形式:
        1.mov 寄存器,数据
        2.mov 寄存器,寄存器
        3.mov 寄存器,内存单元
        4.mov 内存单元,寄存器
        5.mov 段寄存器,寄存器

      mov 寄存器,段寄存器 与 mov 内存单元,段寄存器 是正确的指令。


    3.5 数据段

      我们可以将一组长度为N(N≤64K)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。


    3.6 栈

      栈是一种具有特殊的访问方式的存储空间。它的特殊性就在于,最后进入这个空间的数据,最先出去。

      栈的操作规则:LIFO(Last In First Out,后进先出)。

      任意时刻,SS:SP指向栈顶元素。

      
    3.7 CPU提供的栈机制

      我们在基于8086CPU编程的时候,可以将一段内存当作栈来使用。

      8086CPU的入栈和出栈操作都是以字为单位进行的。

      push ax
        1.SP=SP–2;
        2.将ax中的内容送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶。

      pop ax
        1.将SS:SP指向的内存单元处的数据送入ax中;
        2.SP = SP+2,SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。


    3.8 栈顶超界的问题

      8086CPU不保证对栈的操作不会超界。


    3.9 push、pop指令

      push和pop指令是可以在寄存器和内存之间传送数据的。

      栈空间当然也是内存空间的一部分,它只是一段可以以一种特殊的方式进行访问的内存空间。


    3.10 栈段

      对于8086PC机,在编程时,我们可以根据需要 ,将一组内存单元定义为一个段。

      一个栈段的容量最大为64KB。

    参考资料:《小甲鱼汇编零基础入门》

         《汇编语言》第三版

  • 相关阅读:
    安装Windows 和 Linux双系统(vmware) Centos7
    Nginx
    rsync详细配置
    19、Squid代理服务器
    5、SAMBA服务二:配置实例
    5、SAMBA服务一:参数详解
    4、NFS
    1、网络基本配置
    Spring data mongodb使用
    win下MongoDB使用
  • 原文地址:https://www.cnblogs.com/mubu/p/6358185.html
Copyright © 2011-2022 走看看