首頁>Club>
10
回覆列表
  • 1 # 博學多才的軍迷作家

    linux列表pop的使用可以按照以下步驟:

    堆疊是儲存器中專用的緩衝區,用於暫存暫存器資料或地址指標,push/pop就用於堆疊的操作,這兩個指令一般用在:

    1、子程式呼叫,為了保護現場,把所要用的暫存器中的內容先暫時儲存起來,在子程式呼叫結束之前,按照先進後出的原則,把資料恢復。

    2、有時候,需要臨時用一下某些暫存器,也可用一下,憑個人喜好;

    這兩個指令必須成對使用(特殊用途除外),你只要壓入了那些東西,並且知道他們的順序就行了,所操作的是字元還是資料,就不用知道了。

    堆疊操作指令

    堆疊是一個先進後出的主存區域,位於堆疊段中,使用SS段暫存器記錄器段地址。棧只有一個出口,即當前棧頂。棧頂是地址較小的一端(低端),它用堆疊指標暫存器SP指定。堆疊的兩種基本操作,對應兩條基本指令:

    (1)、進棧指令push

    push reg/mem/seg;sp<-sp-2,ss<-reg/mem/seg

    進棧指令先使堆疊指令sp減2,然後把一個字運算元存入堆疊頂部。堆疊操作的物件只能是字運算元,進棧時底位元組存放於低地址,高位元組存放於高地址,sp相應向低地址移動兩個位元組單元。

    push AX

    PUSH [2000H]

    PUSH CS

    (2)、出棧指令pop

    pop reg/seg/mem;reg/seg/mem<-ss:[sp],sp<-sp+2

    出棧指令把棧頂的一個字傳送至指定的目的運算元,然後堆疊指標sp加2。目的運算元應為字運算元,字從棧頂彈出時,低地址位元組送低位元組,高地址位元組送高位元組。

    pop AX

    POP [2000H]

    POP SS堆疊可以用來臨時存放資料,以便隨時恢復它們。也常用於子程式見傳遞引數。

    注意幾點:

    (1)、因為堆疊指標sp總是指向已經存入資料的棧頂(不是空單元),所以PUSH指令是將(SP)減2,後將內容壓棧(即先修改SP是指指向空單元,後壓入資料),而POP是先從棧頂彈出一個字,後將堆疊指標SP加2.

    (2)、PUSH CS是合法的,但是POP CS是不合法的。

    (3)、因為SP總是指向棧頂,而用PUSH和POP指令存取數時都是在棧頂進行的,所以堆疊是先進後出或叫後進先出的。棧底在高地址,堆疊是從高地址向低地址延伸的,所有棧底就是最初的棧頂。

    (4)、用PUSH指令和POP指令時只能按字訪問堆疊,不能按位元組訪問堆疊。

    (5)、PUSH和POP指令都不影響標誌。

  • 中秋節和大豐收的關聯?
  • hw12c變速箱什麼意思?