0167-入棧和出棧
2023-08-14 09:36 作者:jiangbo4444 | 我要投稿
環(huán)境
Time 2022-11-09
WSL-Ubuntu 22.04
QEMU 6.2.0
NASM 2.15.05
前言
說(shuō)明
參考:《x86匯編語(yǔ)言:從實(shí)模式到保護(hù)模式》李忠
目標(biāo)
通過(guò)設(shè)置 SS 棧段,和 push,pop 指令,反序輸出 hello world。
BIOS 中斷
棧是一種可以支持后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),通過(guò)這種結(jié)構(gòu)可以將字符串反序輸出。
匯編代碼
棧段設(shè)置
將棧段設(shè)置在了 0X7C00 處,剛好是啟動(dòng)代碼的入口點(diǎn),不過(guò)棧是向下增長(zhǎng)的,所以并不會(huì)覆蓋代碼段。
入棧
通過(guò) push 操作,將字符一個(gè)一個(gè)的送入棧中。
出棧
通過(guò) pop 操作,將之前壓入棧中的數(shù)據(jù)反向彈出,并輸出。

總結(jié)
通過(guò)使用棧,向屏幕倒序輸出了 hello world。
附錄
標(biāo)簽: