ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

三--寄存器(内存访问)

2022-08-21 11:31:41  阅读:169  来源: 互联网

标签:-- SP mov 内存 寄存器 ax 单元


3.1内存中字的存储

  内存单元是字节单元(即一个单元存一个字节)

  一个字用两个地址连续的单元存放,低位字节存在低地址,高位字节存在高地址

  字单元:存放一个字型数据(16位)的内存单元,由两个地址连续内存单元组成

  将起始地址为N的字单元简称为N地址字单元

3.2DS和[address]

  ds:通常用来存放要访问的数据的段地址

  [...]表示一个内存单元,"..."是偏移地址,cpu自动取ds中的数据作为内存单元的段地址

  如何用mov指令从10000H中读取数据:先将段地址1000H放入ds,然后用mov al,[0]

    但8086不支持将数据直接送入段寄存器,所以:

      mov bx,1000H

      mov ds,bx

3.3字的传送

  8086有16根数据线,在mov指令中给出16位的寄存器就能进行字的传送

3.4mov、add、sub指令

  mov指令可有以下形式:

    mov  寄存器,数据    如:mov ax,8
    mov  寄存器,寄存器   如:mov ax,bx 
    mov  寄存器,内存单元  如:mov ax,[0]
    mov  内存单元,寄存器  如:mov [0],ax
    mov  段寄存器,寄存器  如:mov ds,ax
    mov  寄存器,段寄存器  如:mov ax,ds
    mov  内存单元,段寄存器 如:mov [0],ds
    mov  段寄存器,内存单元 如:mov ds,[0]

  add、sub同mov

3.5数据段

  将一段内存当作数据段,是我们在编程时的一种安排,即用ds存放数据段的段地址
3.6栈

  栈:后进先出(LIFO:last in first out)

3.7cpu提供的栈机制

  push ax将AX中的数据入栈

  pop ax从栈顶取出数据送入AX

  8086的入栈和出栈以字为单位

  SS:栈顶的段地址,SP:栈顶的偏移地址 (SS是段寄存器,不能直接送入数据,但SP可以)

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

  push ax:

    sp = sp - 2,SS:SP指向当前栈顶前面的单元

    将ax中的内容送入SS:SP指向的内存单元

    (入栈时,栈顶从高地址向低地址方向增长)

  pop ax:

    将SS:SP指向的内存单元处数据送入ax

    SP=SP+2

3.8栈顶超界的问题

  8086不保证我们对栈的操作不会超界,他只知道栈顶在何处,而不知道我们安排的栈空间有多大

  我们要自己考虑栈超界的问题

3.9push、pop指令

  push  寄存器
  pop    寄存器
  push  段寄存器
  pop    段寄存器
  push  内存单元
  pop    内存单元

    可只给出内存单元的偏移地址,段地址从ds获得

3.10栈段

  也是我们在编程时的一种安排

  如果将10000H~1FFFFH当作栈段,栈空时,SP=?

    当只有一个元素时,SS=1000H,SP=FFFEH,此元素出栈,SP=SP+2,所以SP=0

    栈最底部字单元的地址为1000:FFFE,栈空时,SS:SP指向最底部单元下面的单元,即最底部+2,即SP=0000H

  一个栈段最大可以设为多少?

    从栈空时SP=0,一直压栈,直到栈满时SP=0,再次压栈,栈顶将环绕,覆盖原来内容,所以最大0~FFFFH,64KB

标签:--,SP,mov,内存,寄存器,ax,单元
来源: https://www.cnblogs.com/cangshiqian/p/16609589.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有