2016-11-11 70 views
-1

8086條件跳轉和無條件跳轉是否從當前指令簽名位移(是8位還是16位?)還是指定從代碼段寄存器到標籤的偏移量?跳轉聲明偏移或位移?

e.g,當我寫:

label1: 
.. 
.. 
jmp label1 (unconditional) 

這是否會LABEL1署名位移來代替或代碼段偏移?

cmp ex, 0 
je label2 (conditional) 

這是否會LABEL2署名位移來代替或代碼段偏移?

此外,當我使用如下的loop指令:

loop1: 
.. 
.. 
loop loop1 

將這個LOOP1將由符號位移代替(它是8位或16位2)或從代碼段偏移?

+0

爲什麼不查閱指令集引用,它清楚地回答了這些問題? –

回答

0

在所有這些情況下,使用的標籤將由當前指令尾部的有符號偏移量替換。所以與代碼段的開始無關。

無條件跳轉jmp label1有兩種形式:

  • 使用8位簽名,使用16位有符號偏移

的條件跳轉je label2偏移

  • 和循環指令loop loop1只使用8位有符號偏移量。 (這在8086上是正確的。後來的處理器給出了有條件的跳轉也是16位有符號偏移。)