汇编指令长度计算方法
生活随笔
收集整理的這篇文章主要介紹了
汇编指令长度计算方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、沒有操作數的指令,指令長度為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
ps:樓上的文章是搜到的,其中
第二點:
mov al,[si]
mov ax,[bx+si]
我覺得這2個語句是涉及到內存的。大神路過請指教。
轉載于:https://my.oschina.net/liangzhenghui/blog/142015
總結
以上是生活随笔為你收集整理的汇编指令长度计算方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王爽汇编语言实验7一个很好的解法(转)
- 下一篇: 用栈实现队列(Leetcode第232题