概述
後進先出存儲器(LIF0)又稱堆疊,它的工作情況與FIFO相反,LIFO是按後寫入的數據先讀出的順序進行存取的,LIFO存儲器只有一個數據連線埠,它既是輸入口,又是輸出口。LIFO與FIFO存儲器一樣沒有外部地址碼輸入端,而是由內部的指針指示存取的地址。LIFO只需一個指針。復位時,指針指向最末一個單元(棧底)。每寫入一個數據,指針減1。當指針值減為0時,表示LIFO充滿數據。每讀出一個數據,指針加1。當指針值為最大值(即指向棧底)時,說明LIFO中沒有數據了。通常把LIFO(堆疊)的寫入操作叫壓入,讀出操作叫彈出。
定址方式
堆疊存儲器指定兩個暫存器來定址:堆疊指針ESP和堆疊段暫存器SS,使用堆疊段之前首先要定義,程式中對堆疊段的定義語句為:STACK 200H;就是對堆疊的定義,即在記憶體中劃分200H~SS:000001FFH,那么堆疊指針ESP的初值為00000200H。
當字數據AX壓入堆疊時,高8位放入由ESP-1定址的單元,低8位放入由ESP-2定址的單元,然後ESP中的值減2。當字數據從堆疊彈出到BX時,低8位從ESP定址的單元移出,高8位從ESP+1定址的單元移出,然後ESP暫存器加2。