久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

第11章 棧(X86匯編教程)

作者:51hei   來源:本站原創   點擊數:  更新時間:2013年12月23日   【字體:


本X86匯編教程目錄 http://m.zg4o1577.cn/mcu/2619.html

    棧,是什么呢?其實啊,棧,就是一種數據放進內存和從內存讀取出來的方法.用棧來操作數據,幾乎無需自己操心數據會被保存在內存的什么地方(不出意外的話.....)

    棧操作內存的方法是寫入的時候把數據一個一個推進去,寫一次推一個數據.而提取數據當然也是一個一個提取出來.注意:提取過的數據就會消失(實際上沒有消失,可以再次提取,但....那還不如直接用正常方式操作內存呢..).不像普通內存操作可以反復讀取.棧提供了一種"后進先出"的數據操作方法.把最后放進內存的數據最先拿出來.這種內存操作方法在某些方面會有巨大的用處.

    使用棧來操作內存,先在內存中定義一個位置,作為"棧頂",這個定義的方法也沒啥,直接把你要作為棧頂的內存地址寫進SS:SP寄存器即可.這2個寄存器就是"棧頂指針寄存器組合" (一般系統會自動定義棧頂,無需自己操作,所以這步可以跳過,知道SS:SP寄存器的作用即可.)

    我們用堆棧往內存里面推入數據之后,棧頂就會移動(自動的喲!).所以不用擔心會把曾經推進堆棧的數據覆蓋(當然,你可別因為這樣就拼命往堆棧里邊壓數據...內存會爆掉的[=_=0])

    CPU用堆棧操作內存的步驟:

            數據入棧:

            1:往內存的[SS:SP]寫入數據

            2:新的SP寄存器值=SP寄存器值-入棧數據的長度(單位:字節,一般是字形數據.也就是2個字節)

            數據出棧:

            1:SP寄存器值+出棧數據的長度(同上個括號)

            2:在[SS:SP]讀取數據

    然后,用棧操作指令就能把數據推進棧里,或從棧里把數據弄出來....


 指令名                :PUSH
操作數數量         :1
 操作數名             :數據
 指令用途             :把一個數據推進棧里,可以是直接數,也可以是寄存器或內存地址(內存地址的話需要指定推進堆棧里的數據長度)

 指令名                :POP
操作數數量         :1
操作數名             :存放數據的地方
指令用途             :把一個數據從堆棧里提取出來.可以放到寄存器或內存地址里.(此處內容同上面那個括號)
實例:
PUSH AX;把AX里面的數據推進堆棧里
POP BX;把最后推進堆棧的數據讀取出來放進BX
內存地址實例:
PUSH WORD [DS:0];那個WORD就是用來指定數據長度的,字形(WORD)為2個字節
POP DWORD [DS:0];4個字節出棧

 
本章就到這里,作業:把4個通用寄存器[AX BX CX DX]都壓棧再取回吧!

 

關閉窗口

相關文章

主站蜘蛛池模板: 日韩中文字幕一区 | 欧美jizzhd精品欧美巨大免费 | 精品欧美一区二区久久久伦 | www日韩 | 日韩欧美网 | 亚洲男人天堂av | 欧美a级成人淫片免费看 | 国产特一级黄色片 | 亚洲综合大片69999 | 久久精品中文字幕 | 国产精品视频久久久 | 国产午夜精品一区二区三区嫩草 | 成人中文网 | 亚欧洲精品在线视频免费观看 | 中文在线а√在线8 | 国产免费一区二区 | 国产精品日韩欧美 | 9久久精品 | 精品国产乱码一区二区三 | 国产高清在线精品一区二区三区 | 久久久久国产 | 少妇一区在线观看 | 狠狠干网站 | 国产日韩在线观看一区 | 色天堂视频 | 亚洲香蕉在线视频 | 国产精品一二三区 | 亚洲风情在线观看 | 成人免费一级 | 超碰97av | 成人小视频在线观看 | 精品国产乱码久久久久久老虎 | 日本一区二区不卡 | 91麻豆精品国产91久久久更新资源速度超快 | 久久综合久久综合久久 | 久久久久亚洲精品 | 日韩欧美在线视频观看 | 日本成人中文字幕 | 免费亚洲成人 | 亚洲欧美中文日韩在线 | 国产又色又爽又黄又免费 |