指令長度與尋址方式有關係,規律或原則如下:
一、沒有操作數的指令,指令長度爲1字節。如
es:
ds:
cbw
xlat
等。
二、操作數只涉及寄存器的指令,指令長度爲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