首页 > 其他 > 详细

汇编指令长度计算方法(学习汇编)

时间:2014-08-09 18:34:08      阅读:403      评论:0      收藏:0      [点我收藏+]

一、没有操作数的指令,指令长度为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
等。

 

五、跳转指令,分为2种情况:

1、段内跳转(指令长度为2个字节或3个字节)

jmp指令本身占1个字节

段内短转移,8位位移量占一个字节,加上jmp指令一个字节,整条指令占2个字节

如:jmp short opr

段内近转移,16位位移量占两个字节,加上jmp指令一个字节,整条指令占3个字节

如:jmp near ptr opr

2、段间跳转,指令长度为5个字节

如:jmp dword ptr table[bx][di]

  jmp far ptr opr

  jmp dword ptr opr 

注意:形如“jmp 1234:5678”的汇编指令,是在Debug中使用的汇编指令,汇编编译器并不认识,如果在源程序中使用,那么在编译时便会报错。

汇编指令长度计算方法(学习汇编),布布扣,bubuko.com

汇编指令长度计算方法(学习汇编)

原文:http://www.cnblogs.com/ht-beyond/p/3901379.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!