JMP跳轉指令的指令長度、直接轉移與間接轉移、段內跳轉與段間跳轉

原文鏈接:https://blog.csdn.net/liuchuo/article/details/51990669

指令長度=操作碼的長度+操作數地址的長度
1.段內跳轉
JMP指令佔1個字節。
操作數的地址長度 = (目標地址-指令當前地址)//若能用1個字節表示,則佔用1個字節,那麼整體指令長度爲2個字節;若需2個字節表示,則佔用2個字節,此時整體指令爲3個字節。
比如:
0113 jmp 0185 ;0185h-0113h=72h,72h可用1個字節表示,加上JMP的一個字節,一共指令長度爲2個字節;
0113 jmp 0845 ;0845h-0113h=732h,732h需用2個字節表示,加上JMP的一個字節,一共指令長度爲3個字節。

2、段間跳轉
指令長度爲5字節。如jmp 1234:5678,整體指令長度爲5.

直接轉移 IP = 位移量 + 指令長度
間接轉移 IP = 尋址方式求出的EA(有效地址)的值

直接轉移中
短轉移JMP SHORT OPR 8位位移量
位移量需要滿足前後跳轉的需要,所以是一個帶符號數轉移格式只允許在-128~127之間轉移
近轉移JMP NEAR PTR OPR 16/32位位移量
16位在實模式下段長爲64KB,所以16位位移量可以轉移到段內的任一個位置


發佈了8 篇原創文章 · 獲贊 32 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章