首页
社区
课程
招聘
[原创]32位机器指令(二)——1字节长度主操作数
发表于: 2011-2-27 11:14 9087

[原创]32位机器指令(二)——1字节长度主操作数

2011-2-27 11:14
9087

看了一遍egogg关于指令格式的文章,他对于主操作码的叙述明显不够,因此,我想把这个部分彻底讲明白。后几章我分别将,如下内容:
1字节长度主操作码
1字节长度主操作码+3bit拓展操作码
2字节长度主操作码
2字节长度主操作码+3bit拓展操作码

     希望通过我的叙述,使你能明白,虽然机器指令与汇编不存在“一对一”的规律,但它们存在非常好的“多对多”的规律。

一、1字节长度主操作码
  本篇文章我的主要说一下“1字节长度主操作码”,这也是各种长度操作码中最为复杂的。
好吧,现在开始。

[1] opcode + d+ w
如图:

    这种指令格式最为常见,因为它对应三种常见汇编形式:
OP Reg,Mem
OP Meg,Reg
OP Reg,Reg
    其中d位表示数据传送方向,这和后文将要说道的Mod R/M字节相关,当d=l时,数据从R/M字段流向reg字段,当d=0时,数据从reg字段流向R/M字段或立即数流向reg。
举例:
  mov eax,[eax]  =8B00  →主操作码8B  =10001011
  mov [eax],eax  =8900  →主操作码89  =10001001
w位用来区分指令8位操作数与32/16位操作数,w=1表示使用16/32位操作数,w=2表示使用8位操作数。
举例:
  Mov eax,eax  =8BC0  →主操作码8B  =10001011
  Mov al,al    =8AC0  →主操作码8A  =10001010

[2] opcode + s+ w
如图:

    这种机器指令也比较常见,它对应汇编格式:Op Reg/Mem,immed
其中s位表示立即数是8位还是16/32位
举例:
  add ebx,12345678H  =83C1 78563412  →主操作码83=10000011

  add ebx,12H        =81C1 12    →主操作码81=10000001

[3] opcode+w
如图:

    这种形式比较常见,对应汇编形式:Op ACC,immed 
    ACC代表eax/ax/al,;immed必须与ACC等长,且不能填0凑出等长

[4] opcode+cond
如图

     这种形式专门对应非条件跳转汇编指令:jxx xxxx,比如 jxx disp8 占用主操作码从01110000至01111111

[5] opcode+reg

    这种形式对应汇编格式:op reg
举例:
  Push eax  =50  →主操作码50 =01010000
  Push ecx  =51  →主操作码51 =01010001
  Push edx  =52  →主操作码52 =01010010
  其中reg代表寄存器。


[6]opcode(8位)
    这种形式一般对应无操作数汇编指令。

[7]opcode(高6)+s+opcode(低1位)
    这种形式一般对应只有一个立即数的汇编指令

[8]其他
  还有一些和段寄存器相关的指令格式,这里就不讲了


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (8)
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呵呵,我刚入门。
2011-2-27 13:01
0
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
呵呵,谢谢了,只是现在有十六进制编译器和OD等反汇编工具,感觉有点…
2011-2-27 15:59
0
雪    币: 431
活跃值: (259)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
4
也对,可为了对抗这些工具,就不得不会。
2011-2-27 16:58
0
雪    币: 174
活跃值: (26)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
多了解点总是好的.
2011-2-27 18:49
0
雪    币: 466
活跃值: (175)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
6
好东东。楼主的 文章给正在学 arm 汇编的学极为有益的参考~~
2011-2-27 23:01
0
雪    币: 245
活跃值: (93)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7
.......这个能参考啥
2011-2-28 06:08
0
雪    币: 431
活跃值: (259)
能力值: ( LV9,RANK:230 )
在线值:
发帖
回帖
粉丝
8
intel的处理器指令,和ARM一样吗?单片机我不懂,想问一下
2011-2-28 12:04
0
雪    币: 466
活跃值: (175)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
9
不一样。但是 arm 没有中文资料。了解 intel指令对 arm指令的学习有极大的方便
2011-3-1 21:11
0
游客
登录 | 注册 方可回帖
返回
//