2010-12-17 74 views
0

我在程序集中有一個程序,但是當我添加一些代碼時,它會感到困惑。 例如,當我在這個程序工作時添加一個新程序時,整個程序在某個點發生了問題,例如它沒有完成程序,但停留在特定點。當我添加一些不影響程序,就像一些mov [300h],00h在代碼的開始處一樣。長的彙編代碼問題

任何想法我可以解決這個問題? 我已經讀過,jmp命令只能跳轉128個地址範圍。真的嗎?我可以繞過這個嗎? 我已經看到一些程序有一個「近」的擴展。像

  • 測試PROC 附近
  • MOV人,[0300H]
  • ...
  • RET
  • 測試ENDP

那是什麼呢?可以幫助我嗎?日Thnx!

回答

1

首先,mov [300h],00h是不會影響程序的東西。它可以很好地修改你的代碼,所以不要這樣做!

其次,只有條件跳轉(JCC)這個限制爲-128 .. + 127個地址範圍,所以,如果你認爲分支太遠,那麼代替

JE some_far_label 

使用

JNE skip1 
jmp some_far_label 
skip1: 

如果您還有其他問題,請發佈一些代碼。

編輯:mov byte [300h], 0可能會覆蓋您的代碼。如果你使用的是彙編器,那麼爲變量分配explecitely空間:

var1 db 0 
+0

thanx很多。 有沒有任何參考,我可以閱讀更多關於這種場合的信息?例如 mov [300h],00h如何影響我的代碼? – John 2010-12-23 13:56:56