当前位置: 代码迷 >> 汇编语言 >> 请问一下:关于指令的格式
  详细解决方案

请问一下:关于指令的格式

热度:9162   发布时间:2013-02-26 00:00:00.0
请教一下:关于指令的格式
在读《天书夜谈》那个pdf时,好多地方没有理解(自己太菜了),其中有一个地方是说指令格式的:说intel指令可分为一下部分:

        前缀(可选)   操作码   ModR/M(可选)   SIB(可选)   地址偏移(可选)   立即操作数(可选)

前缀:指令前缀,包括加锁,重复等信息。每个前缀1   个字节。但是最多可能有4   个前缀。
操作码:指令的机器编码。可能占有1-3   个字节。一般只有一个操作码。
ModR/M:修改的寄存器与存储器。如果有,则必为1   个字节。
SIB:和ModR/M   相关。一些特殊的寻址指令需要的信息(Scale,Index,Base)。如果有,必为1   字节。
地址偏移:取决于寻址方式的需要。可能为1,2,4   字节。
立即操作数:取决于寻址方式的需要。可能为1,2,4   字节。


这些地方有些笼统,不知道哪里有详细的介绍,麻烦知道一下,或者提供资料。
谢谢大家

------解决方案--------------------------------------------------------
看的多就理解了。比如:

mov ax,0001;mov是操作码,ax是寄存器,0001是立即数。
------解决方案--------------------------------------------------------
是呀,其实有很多的问题都是这样,你先把定义搞明白之后,再看实例。再回套就容易明白点。

例如:

cmp es: byte ptr [di],01

你向回套一下,就会明白点。
------解决方案--------------------------------------------------------
这书描述得的确让人乍看起来摸不着头脑,如果只是指指令格式的话,应该是助记符+最多3个操作数,例如shrd eax,ebx,4
------解决方案--------------------------------------------------------
楼主提及的内容是指机器码的格式吧, 不是助记符化了的汇编指令格式.
  相关解决方案