指令長度與定址方式有關係,規律或原則如下:
一、沒有運算元的指令,指令長度為1位元組。如
es:ds:
cbwxlat
等。二、運算元只涉及暫存器的指令,指令長度為2位元組。如
mov al,[si]
mov ax,[bx+si]
mov ds,ax
等。三、運算元涉及記憶體位址的指令,指令長度為3位元組。如
mov al,[bx+1]
mov ax,[bx+si+3]
lea di,[1234]
mov [2345],ax
等。四、運算元涉及立即數的指令,指令長度為:暫存器型別+2。
8位暫存器,暫存器型別=1;16位暫存器,暫存器型別=2。如
mov al,8 ;指令長度為2
mov ax,8 ;指令長度為3
等。五、跳轉指令,分3種情況,指令長度分別為2、3、5位元組。
1、段內跳轉,指令長度=(目標位址-指令當前位址)+1
jmp指令本身占用1個位元組。
(目標位址-指令當前位址)若能用1個位元組表示,則占用1個位元組,整體指令長度為2位元組;如
0113 jmp 0185 ;0185h-0113h=72h,72h可用1個位元組表示
若需2個位元組表示,則占用2個位元組,整體指令為3個位元組。如
0113 jmp 0845 ;0845h-0113h=732h,732h需用2個位元組表示
2、段間跳轉,指令長度為5位元組。如
jmp 1234:5678
組合語言指令長度
指令長度為1個位元組 指令長度為2個位元組 如 mov bx,ax 指令長度為3個位元組 如 mov ax,ds bx si idata 指令長度為 暫存器型別 1 8位暫存器,暫存器型別 1,如 mov al,8 指令長度為2個位元組 16位暫存器,暫存器型別 2,如 mov ax,8 指令長度為...
彙編指令長度計算方法
指令長度與定址方式有關係,規律或原則如下 一 沒有運算元的指令,指令長度為1位元組。如 es ds cbwxlat等。二 運算元只涉及暫存器的指令,指令長度為2位元組。如 mov al,si mov ax,bx si mov ds,ax等。三 運算元涉及記憶體位址的指令,指令長度為3位元組。如 mo...
獲取彙編指令的編碼位元組長度
皓哥筆直的背影,就是我前進的方向。想說這句話真的好久了 常常可以看見以下形式的彙編 行 xorq rdx,rdx 但是在產生這段彙編 的c 中,並沒有出現excllusive or操作 a.解釋這條特殊的exclusive or指令的效果,它實現了什麼有用的操作 b.更直接地表達這個操作的彙編 是什...