彙編指令長度計算方法

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

一、沒有操作數的指令,指令長度爲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

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