我剛剛開始自學程序集以瞭解代碼和操作系統是如何工作的。據我所知,jmp foo
告訴處理器去包含標籤foo
的行。但是,最基本的操作系統(如果它真的可以被稱爲是!)看起來像這樣...jmp如何在裝配中工作? (操作系統開發)
foo: ; label foo
jmp foo ; Go to foo
times 512-($-$$) db 0 ; Fill remaining bytes with 0's
據我瞭解這個代碼時,處理器看到1號線,並記住它是foo
。然後它繼續到第2行,它告訴它去foo
。並重復,永遠不要到第3行告訴它填補空白空間。
爲什麼這不是一個無限循環?它在VirtualBox編譯時(我在這裏使用正確的單詞?)運行到.iso文件中時運行良好。
'jmp'只是「從這裏取指令X字節」。這是你說的話,但當然不是線路地址。就行而言,「從這裏跳到X行」和「jmp foo」將是「從這裏跳到-1行」,當然這只是一個類比 –
@MargaretBloom對,但是第三行如何執行? – seadoggie01
它**是一個無限循環,第三行不是指令,它是一個彙編程序指令,用零填充扇區的其餘部分。它在組裝過程中由組裝者「執行」。 – Jester