指令前缀有4种,而且一条指令可以前有多种前缀,每一个.docVIP

  • 12
  • 0
  • 约1.25千字
  • 约 2页
  • 2017-08-18 发布于湖北
  • 举报

指令前缀有4种,而且一条指令可以前有多种前缀,每一个.doc

指令前缀有4种,而且一条指令可以前有多种前缀,每一个前缀占一个字节,在32位指令里,前缀种类的排列顺序不作规定。它们的名称和机器码,分别是是: [1] 操作数长度前缀(66H) 对于32位指令系统而言,默认寄存器都是32位的,但是我们不可避免的会使用其他长度地寄存器。如果要使用16位长度的寄存器,只需在指令前加66H,即用操作数长度前缀标记。 然而对于8位长度的寄存器,不是通过操作数前缀标记的。后文将说明它和32位操作数长度如何区分的 举例: mov eax,1 = B8mov ax,1 =66 B8 0100 mov al,1 = B0 01 另外还有一点要说明,就是像movzx这样,操作数与被操作数长度不相等的指令。则我们以被操作数的长度为标准,选择是否添加前缀。 举例: movzx eax,ax = 0FB7C0 movzx eax,al = 0FB6C0 movzx ax,al =66 0FB6C0 [2] 地址长度前缀(67H) 这个前缀和上一个前缀用法差不多,只不过这个前缀是标记内存地址长度的。学过汇编的人,还应该知道操作数和被操作数中,至多一个是内存操作数。在32位指令系统下,如果内存操作数的长度为16位,则需在指令前加“地址长度前缀”,即67H 举例: mov eax,[bx] =67 8B07 ;不要在flat模式下编译

文档评论(0)

1亿VIP精品文档

相关文档