机器语言我们只要重点理解一下几个概念:
1. 机器语言指令有操作码(OP)和地址码两部分组成 |_____________OP_______________|__d__|__w__|
|_____________OP_______________|__s__|__w__| <--此格式用于立即寻址方式
在多数操作码中,常使用某些位来指示某些信息: 如图上结构里的: w=1 时 对字来操作 w=0 时 对字节来操作 d值在双操作数指令中才有效 当 d=1 时 有且只有一个寄存器用于目的操作数 d=0 时 有且只有一个寄存器用于源操作数 s=1 时 立即数为8位,但要求扩展成16位数 s=0 时 当指令作字节操作/有16位立即数 由于汇编的指令格式很多,这里我只作一些基本情况介绍,必要时读者可以下载/查阅80x86汇编小站http://www.x86asm.com提供的OPCODES手册来查阅。 2. 寻址方式的机器语言表示: | mod | reg | r/m | |_____|_____|_____|_____|_____|_____|_____| reg 表示寄存器方式,在不包括立即数的双操作数指令的情况下,规定必须有一个操作数在寄存器中,该寄存器由reg字段指定,并与操作码字节中的w位相组合确定的寄存器 mod字段与r/m(register/memory)字段结合在一起确定另一个操作数的寻址方式现在你们下载了80x86汇编小站(http://www.x86asm.com)提供的OPCODES 手册了吗? 下载好了,请解压后打开里面的:opcodes.html 文件,然后熟悉里面的表格:
现在熟悉简单的: ______________________________________________________________________________ 表1 <PS:部分资料> rrr : W=0 : W=1 : reg32 000 : AL : AX : EAX 001 : CL : CX : ECX 010 : DL : DX : EDX 011 : BL : BX : EBX 100 : AH : SP : ESP 101 : CH : BP : EBP 110 : DH : SI : ESI 111 : BH : DI : EDI ______________________________________________________________________________ 表2 <PS:部分资料> rrr : Index Register 000 : EAX 001 : ECX 010 : EDX 011 : EBX 100 : No Index 101 : EBP 110 : ESI 111 : EDI ______________________________________________________________________________ 表3 <PS:部分资料> mmm : Function 11 w=1 000 : DS:[BX+SI] 001 : DS:[BX+DI] 010 : SS:[BP+SI] 011 : SS:[BP+DI] BX 100 : DS:[SI] 101 : DS:[DI] 110 : SS:[BP] 111 : DS:[BX] ______________________________________________________________________________ 表4 <PS:部分资料> oo : Function 00 : If mmm = 110, then a displacement follows the operation; otherwise, no displacement is used 01 : An 8-bit signed displacement follows the opcode 10 : A 16-bit signed displacement follows the opcode 11 : mmm specifies a register, instead of an addressing mode ______________________________________________________________________________ 上面的表,你都看明白了吗? 现在我就教你们如何利用这样的表格来把汇编指令翻译机器码 <  
1/2 1 2 下一页 尾页 |