2013-07-21 28 views

回答

1

由於jmp hang會自動跳轉,因此會導致程序掛起死機。

+0

我剛剛編輯了代碼。 – saplingPro

+1

'times'行只是將文件填充到512個字節。通常你會看到'times 510 - ($ - $$)db 0',接着是'db 55','db 0AAh' - 「啓動簽名」。 '$'的意思是(粗略地)「在這裏」 - 組件中的當前位置。 '$$'表示「開始部分」,所以'($ - $$)'表示「到目前爲止的代碼長度」。正如Nathan指出的,你通常首先需要一個'jmp hang'。它並不打算執行'times'行! –

+1

這讓我想起mbr編程的美好時光:) –

0

該代碼用於用0填充剩餘的程序(如果我沒有弄錯,它就像'add'指令)。 它通常用於啓動代碼,以便將mbr簽名放在最後,因此,就「代碼」而言,它不應該被執行。

結論:

  • 不執行停止。

  • 它是用來填充程序文件與「00」,直到達到512字節

  • 要停止你的程序做這樣的事情(在彙編的輸出文件當然這並不能在運行!):

    halt: 
        jmp halt 
    
+0

您可能需要一個實際的'hlt'指令。這會「暫停」CPU,但直到發生中斷爲止。這可以讓CPU冷卻一下。如果在那裏有一個cli,就不會出現中斷...但是NMI(不可屏蔽的中斷)仍然可以,因此我們仍然希望當氮化鎵顯示時出現「jmp halt」。 –

相關問題