汇编指令长度计算方法
生活随笔
收集整理的這篇文章主要介紹了
汇编指令长度计算方法
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、沒有操作數(shù)的指令,指令長度為1字節(jié)。如
es:
ds:
cbw
xlat
等。
二、操作數(shù)只涉及寄存器的指令,指令長度為2字節(jié)。如
mov al,[si]
mov ax,[bx+si]
mov ds,ax
等。
三、操作數(shù)涉及內(nèi)存地址的指令,指令長度為3字節(jié)。如
mov al,[bx+1]
mov ax,[bx+si+3]
lea di,[1234]
mov [2345],ax
等。
四、操作數(shù)涉及立即數(shù)的指令,指令長度為:寄存器類型+2。
8位寄存器,寄存器類型=1;16位寄存器,寄存器類型=2。如
mov al,8 ;指令長度為2
mov ax,8 ;指令長度為3
等。
五、跳轉(zhuǎn)指令,分3種情況,指令長度分別為2、3、5字節(jié)。
1、段內(nèi)跳轉(zhuǎn),指令長度=(目標(biāo)地址-指令當(dāng)前地址)+1
jmp指令本身占用1個字節(jié)。
(目標(biāo)地址-指令當(dāng)前地址)若能用1個字節(jié)表示,則占用1個字節(jié),整體指令長度為2字節(jié);如
0113 jmp 0185 ;0185h-0113h=72h,72h可用1個字節(jié)表示
若需2個字節(jié)表示,則占用2個字節(jié),整體指令為3個字節(jié)。如
0113 jmp 0845 ;0845h-0113h=732h,732h需用2個字節(jié)表示
2、段間跳轉(zhuǎn),指令長度為5字節(jié)。如
jmp 1234:5678
ps:樓上的文章是搜到的,其中
第二點(diǎn):
mov al,[si]
mov ax,[bx+si]
我覺得這2個語句是涉及到內(nèi)存的。大神路過請指教。
轉(zhuǎn)載于:https://my.oschina.net/liangzhenghui/blog/142015
總結(jié)
以上是生活随笔為你收集整理的汇编指令长度计算方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王爽汇编语言实验7一个很好的解法(转)
- 下一篇: 用栈实现队列(Leetcode第232题