日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8086汇编基础 push,pop指令执行时,sp怎么变

發布時間:2025/6/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8086汇编基础 push,pop指令执行时,sp怎么变 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先需要說明的是棧屬于滿遞減棧,即棧頂在高地址,棧底在低地址

push,指針向低處走。我向1000:0000處push數據,那么push之前,sp初-2=sp末。先sp-2,再寫入

pop,指針向高處走。我要提取1000:0000處的數據。那么pop之前,sp=0002。先讀取,后sp+2

也就是說 sp 始終指向了有效數據的位置。


一. 棧的執行過程下圖:

該圖注意如下:

1. 任意時刻, SS:SP指向棧頂元素

SS:存放棧的段地址;
SP:存放棧的偏移地址;

2. 棧底的地址大.

3. 棧是空的是什么意思?

例如: 將10000H----1000FH這段空間當作棧, 初始狀態棧是空的,? 此時, SS=1000H, 那么SP= ?

a. 棧底地址大.

b. 任意時刻, SS:SP指向棧頂元素

所以, 棧底地址就是SS:SP=1000FH 也就是SS=1000H, SP=0FH

棧底就是棧的第一個元素, 那空棧就是SS=1000H, SP=10H.

?

二. PUSH的執行過程

請記住:

1. SP先減2, SS:SP指向新的棧頂(SP是向小的方向走的)

2. 把數據送入新的棧頂.

?

三. POP的操作過程

POP的過程就是與PUSH相反了

1. 把棧頂數據(SS:SP指向的數據)送入寄存器

2.SP增加2.

?

四. 棧的越界問題需要我們自己小心注意, CPU并沒有機制來通知或者避免棧的越界.

五. PUSH與POP

PUSH和POP指令可以在寄存器和內存之間傳送數據, 格式如下

PUSH 寄存器

POP 寄存器

PUSH 內存單元

POP 內存單元

PUSH和POP指令實質是一種內存傳送指令, 可以靈活運用.




總結

以上是生活随笔為你收集整理的8086汇编基础 push,pop指令执行时,sp怎么变的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。