回覆列表
  • 1 # jajgatkmkt

    MCS-51微控制器組合語言中,沒有SP這條指令,只有針對SP操作的指令。51微控制器中SP是堆疊指標暫存器,存放著當前堆疊地址。堆疊用於儲存子程式呼叫、中斷程式呼叫時程式返回的地址,或者用來臨時儲存某一暫存器的值。除了初始化堆疊時直接給SP賦值,SP顯式存在,其它的對SP有影響的指令,對SP的操作都是隱式的,就是說SP並不出現在指令運算元當中。例如: MOV SP,#80H ;初始堆疊指標,(SP)=80HLCALL XXXX;呼叫XXXX處的子程式,下一條指令PC值壓棧,(SP)=(SP)+2NOP;子程式返回時,RET指令從堆疊中彈出PC值,所以會返回到這裡,(SP)=(SP)-2PUSH ACC;累加器A的內容壓棧儲存,(SP)=(SP)+1POP B;堆疊內儲存的累加器A的內容彈出到B暫存器中,(SP)=(SP)-1使用PUSH、POP指令使用堆疊,要注意進出棧的匹配,否則將引起不可預期的後果。

  • 2 # 使用者4243767351955

    設定了堆疊的棧底,以後就在此地址的上面,作為堆疊空間;

    其它指令,一般來說是 不應該 再使用這片地址。

    ----

    把30H賦給了SP,稱為設定棧底。以後:

    PUSH ACC ,就把ACC的內容存放到31H單元;

    PUSH PSW ,就把PSW的內容存放到32H單元;

    PUSH B ,就把B的內容存放到33H單元。

    ……

    彈出時,要用POP指令。

    利用堆疊,就不用管具體的內容存放在什麼單元了,SP會自動管理。

  • 中秋節和大豐收的關聯?
  • 應該怎麼練腰功?