2013-10-02 40 views
1

使用TASM,我已經成功地在emu8086上編寫了數字秒錶(LAP和正常),但是當我嘗試在TASM上運行它時,出現錯誤Forward reference needs override。我知道爲什麼會出現這個錯誤,因爲我有兩個程序,其中包括另一個程序的call,所以在另一個程序之前將其中一個程序放在另一個程序之前將不起作用。例如彙編正向參考需要覆蓋錯誤

proc1 proc 
;some code 
CALL proc2 
;some code 
ret 
endp 

proc2 proc 
;some code 
CALL proc1 
;some code 
ret 
endp 

另一種解決方案將被定義/寫入整個過程,而不是調用它,但給出的Relative jump out of range錯誤。 (我的代碼也有幾個跳躍)

我的問題是,無論如何,我可以刪除forward reference needs override錯誤在我的情況?

+0

我很好奇,有沒有你使用TASM的具體原因?它的最新版本於1996年發佈,即17年前! – us2012

+0

@ us2012是的。反正有沒有解決方法呢? – worriednacho

+0

公寓是的。請參閱下面的答案。 – us2012

回答

1

一些其他來源似乎表明,TASM有一個多遍命令行選項/m2,它將在源上執行指定次數的傳遞。在你的情況下,兩次傳球應該足夠了,因爲第一次傳球將會看到proc2的定義,然後第二傳球可以用它來正確翻譯早先的call proc2

+0

你可以請示範如何?我還沒有讀過/ m2。將是一個很好的幫助 – worriednacho

+0

@worriednacho當你輸入'tasm.exe myfile.asm'來組裝你的源代碼時,只需簡單地把'tasm.exe/m2 myfile.asm'代替。或者你是否要求更詳細地解釋第二遍如何解決問題? – us2012

+0

非常感謝你的父親:) – worriednacho