匯編指令長度的判斷


其中IP=IP+所讀指令的字節數。

那么,所讀指令的字節數應該怎么判斷呢?

匯編指令長度與尋址方式有關,規律或原則如下:

一、沒有操作數的指令,指令長度為1個字節

二、操作數只涉及寄存器的的指令,指令長度為2個字節

    如:mov bx,ax

三、操作數涉及內存地址的指令,指令長度為3個字節

    如:mov ax,ds:[bx+si+idata]

四、操作數涉及立即數的指令,指令長度為:寄存器類型+1

    8位寄存器,寄存器類型=1,如:mov al,8;指令長度為2個字節

    16位寄存器,寄存器類型=2,如:mov ax,8;指令長度為3個字節

五、跳轉指令,分為2種情況:

1、段內跳轉(指令長度為2個字節或3個字節)

jmp指令本身占1個字節

段內短轉移,8位位移量占一個字節,加上jmp指令一個字節,整條指令占2個字節

如:jmp short opr

段內近轉移,16位位移量占兩個字節,加上jmp指令一個字節,整條指令占3個字節

如:jmp near ptr opr

2、段間跳轉,指令長度為5個字節

如:jmp dword ptr table[bx][di]

  jmp far ptr opr

  jmp dword ptr opr 

注意:形如“jmp 1234:5678”的匯編指令,是在Debug中使用的匯編指令,匯編編譯器並不認識,如果在源程序中使用,那么在編譯時便會報錯。

轉自:https://blog.csdn.net/qq_36499686/article/details/78302165?locationNum=2&fps=1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM