0164-再次顯示 hello world
2023-08-14 09:07 作者:jiangbo4444 | 我要投稿
環(huán)境
Time 2022-11-08
WSL-Ubuntu 22.04
QEMU 6.2.0
NASM 2.15.05
前言
說明
參考:《x86匯編語言:從實模式到保護模式》李忠
參考:https://wiki.osdev.org/Printing_To_Screen
目標
在屏幕上顯示 hello world 字符串。
匯編代碼
數(shù)據(jù)區(qū)
和之前不同,這次將代碼和數(shù)據(jù)進行了分離,將要顯示的字符單獨出來,形成了 data 段。
顯示邏輯
使用的是 DS:SI 和 ES:DI 兩個地址來控制,第一個控制數(shù)據(jù),第二個控制顯示。 rep 重復指令會檢查 cx 是否為 0,不為 0 則繼續(xù)重復。movsw 是傳送字的指令。
標志寄存器
調(diào)試時,其中下面就是標志寄存器的內(nèi)容。cld 控制 DF 方向標志,為 0 表示從小到大。 rep 會檢查 ZF 零標志。

總結(jié)
使用另一種方式來顯示 hello world 字符串。了解 DS,SI,ES,DI 寄存器。 了解了 rep 和 movsw 指令。
附錄
標簽: