JMP跳转指令的指令长度、直接转移与间接转移、段内跳转与段间跳转
原文鏈接:https://blog.csdn.net/liuchuo/article/details/51990669
指令長度=操作碼的長度+操作數(shù)地址的長度
1.段內(nèi)跳轉(zhuǎn)
JMP指令占1個字節(jié)。
操作數(shù)的地址長度 = (目標地址-指令當前地址)//若能用1個字節(jié)表示,則占用1個字節(jié),那么整體指令長度為2個字節(jié);若需2個字節(jié)表示,則占用2個字節(jié),此時整體指令為3個字節(jié)。
比如:
0113 jmp 0185 ;0185h-0113h=72h,72h可用1個字節(jié)表示,加上JMP的一個字節(jié),一共指令長度為2個字節(jié);
0113 jmp 0845 ;0845h-0113h=732h,732h需用2個字節(jié)表示,加上JMP的一個字節(jié),一共指令長度為3個字節(jié)。
2、段間跳轉(zhuǎn)
指令長度為5字節(jié)。如jmp 1234:5678,整體指令長度為5.
直接轉(zhuǎn)移 IP = 位移量 + 指令長度
間接轉(zhuǎn)移 IP = 尋址方式求出的EA(有效地址)的值
直接轉(zhuǎn)移中
短轉(zhuǎn)移JMP SHORT OPR 8位位移量
位移量需要滿足前后跳轉(zhuǎn)的需要,所以是一個帶符號數(shù)轉(zhuǎn)移格式只允許在-128~127之間轉(zhuǎn)移
近轉(zhuǎn)移JMP NEAR PTR OPR 16/32位位移量
16位在實模式下段長為64KB,所以16位位移量可以轉(zhuǎn)移到段內(nèi)的任一個位置
總結(jié)
以上是生活随笔為你收集整理的JMP跳转指令的指令长度、直接转移与间接转移、段内跳转与段间跳转的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lds文件分析
- 下一篇: 关于shared library的描述