彙編語言(王爽)--第三章 寄存器(內存訪問)

前一篇博客彙編語言(王爽)–第二章寄存器中從CPU如何執行指令的角度學習了幾個寄存器,這一章中,我們將從訪問內存的角度繼續學習幾個寄存器。

3.1 內存中字的存儲

CPU中用16位寄存器存儲一個字,高八位存放高字節,低八位存放低位字節。

3.2 DS和[address]

mov指令在前兩章中只能完成:
1.將數據直接送入寄存器
2.將一個寄存器中的內容送到另一個寄存器中
也可以使用mov指令將一個內存單元中的值送到寄存器中。
[…]表示一個內存單元,其中的值表示偏移地址,段地址存儲在ds中。
8086CPU不支持直接將數據送入到段寄存器的操作。

3.3 字的傳送

3.4 mov、add、sub指令

在以上三種指令中,後兩個操作數可以分別爲,內存單元,寄存器,段寄存器。
數據只能通過指令傳給內存單元和寄存器。

3.5 數據段

ds存放數據的段地址,在使用時可以通過內存單元訪問數據。

3.6 棧

3.7 CPU提供的棧機制

基於8086編程時,可以將一段地址當棧使用。出棧入棧操作都是以字爲單位進行的。CPU通過SS:SP得到相應的棧頂位置。
需要主要:
1.棧底是高位,棧頂是低位
2.在push操作中,第一步需要執行SP=SP-2
3.在pop操作中,取出數據後,第二步才執行SP=SP+2
4.當棧爲空時,SP指向棧底+1

3.8 棧頂超界的問題

CPU中沒有阻止棧頂越界的方法,只能操作時自己小心。

3.9 push、pop指令

push/pop 寄存器/段寄存器/內存單元

3.10 棧段

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章