• 汇编语言-寄存器(内存访问)


    3.1 字和数据段

    1. 字在内存中存储时,要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。
    2. 用mov指令访问内存单元,可以在mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中。
    3. [address]表示一个偏移地址位address的内存单元。
    4. 在内存和寄存器之间传送字行数据时,高地址单元和高8位寄存器,低地址单元和低8位寄存器相对。
    5. mov, add, sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。

    3.2 栈

    1. 在SS,SP中存放栈顶的段地址和偏移地址;提供入栈和出栈指令,他们根据SS:SP指示的地址,按照栈的方式访问内存单元。
    2. push指令的执行步骤:SP = SP - 2;向SS:SP指向的字单元中送入数据。
    3. pop指令的执行步骤:从SS:SP指向的字单元中读取数据;SP = SP + 2。
    4. 任意时刻,SS:SP指向栈顶元素。
    5. 8086CPU只记录栈顶,栈空间,的大小我们要自己管理。
    6. 用栈来暂存以后需要恢复的寄存器的内容,寄存器出栈的顺序要和入栈的顺序相反。
    7. push,pop实质上是一种内存传送指令,注意他们的灵活应用。

    3.3 栈段

    • 对于8086PC机,在编程时,可以根据需要,将一组内存单元定义位一个段。我们可以将长度为N(N ≤ 64KB)的一组地址连续,起始地址为16的倍数的内存单元,当作栈空间来用,从而定义了一个栈段。
    • 在这个栈段中,任意时刻,SS:SP指向栈顶元素,当栈为空的时候,栈中没有元素,也就不存在栈顶元素,所以SS:SP只能指向栈的最底部单元下面的单元,该单元的地址为栈最底部的字单元的地址+2。栈最底部字单元的地址为1000:FFFE,所以栈空时,SP=0000H。一直压栈,直到栈满时SP = 0;如果再次压栈,栈顶将环绕,覆盖了原来栈中的内容。所以一个栈段的容量最大为64KB。
  • 相关阅读:
    队列&栈//最小栈
    队列&栈//最小栈
    队列&栈//完全平方数
    队列&栈//完全平方数
    队列 & 栈//打开转盘锁
    队列 & 栈//打开转盘锁
    队列 & 栈//岛屿的个数
    深入理解计算机系统12——并发编程
    深入理解计算机系统11——网络编程
    深入理解计算机系统10——系统级I/O
  • 原文地址:https://www.cnblogs.com/chengmf/p/12454656.html
Copyright © 2020-2023  润新知