机器码被锁定封号,为什么封机器码

生活百科 2023-04-28 15:17生活百科www.xingbingw.cn

  计算机通过执行指令来处理各种数据。,指令应该指明如何处理数据,以及数据的来源和操作结果的目的地。,指令由两部分组成,即操作码和操作数。

  操作码给出了指令应该做什么。

  操作数用于描述该指令的操作数。

  在一条指令中,操作码是必不可少的,但操作数可以没有,一个操作数或两个操作数。

  操作码表示计算机执行什么操作。它由一组二进制代码表示,在汇编语言中由助记符表示。

  操作数可以表示参与运算的数本身,或者指定操作数的地址。如何找到操作数,这是指令的寻址方式,也是指令编码格式所指出的。

  根据操作数的数量,指令格式可以分为以下几种

  没有操作数

  类指令,如“HLT”暂停指令。

   II单操作数

  只给出了一个操作数地址。操作数可以直接在寄存器、存储器或指令中被赋予一个立即数。例如“CX公司”

  双操作数指令

  指令中有两个操作数,一个是目标操作数,另一个是源操作数。一个操作数在寄存器中,另一个在寄存器或内存中,或者直接在指令中给出立即数。两者都不允许存在于内存中。

   IV操作数指令

   ADC AX,BX;此指令完成操作数AX、BX和CF位的加法。

  ,操作数可以分为源操作数和目的操作数。

  源操作数只能读取的操作数。

  操作数可读写的操作数(存储运算结果)。

  操作数也可以分为数据操作数和地址操作数。

  指令的长度主要取决于指令操作码的长度、操作数的长度和操作数的个数。通常,一个指令字的位数越多,它所能表示的操作信息就越多,指令功能就越丰富。,位数越大,指令占用的存储空间就越大,读取指令所需的时间也就越长。

  字长(一般指CPU的机器字长)是指CPU-times能处理的二进制位数。它是字节长度(8位二进制数)的1、2、4或8倍,即8、16、32或64位。所以指令字长度也是字节的简单倍数,比如一字节指令,二字节指令,三字节指令。

  一条指令中的信息按其含义分成若干信息段,每个信息段占用一个或多个字节,按一定顺序排列,便于CPU解释和执行。例如,使用1-6个指令字节的可变字长的8086/8088CPU的指令系统包括

  第1字节操作码;

  字节2:寻址模式;

  字节3-6:操作数;

  它由三部分组成。

  指令格式如下

  其中,第一个字节

  高6位是操作码。

   w位表示要传输的数据类型是字(w=1)还是字节(w=0)(字);

  位D表示数据传输的方向D=0,数据从寄存器传输;D=1,数据传输到寄存器;(目的地).

  其中,第二个字节

   REG域寄存器号,用3位代码寻址8个不同的寄存器,然后根据第一个字节的W位选择8位或16位寄存器。如下图所示。(对于使用段寄存器的指令,REG字段占用2位)

   886指令的二进制代码如此之多,以至于很难在一个表中比较该指令和机器语言。

  每种基本指令类型都给出了编码格式,通过填入不同的数字来表示不同的寻址方式和数据类型,可以得到每条指令的机器码。

   086指令系统采用变长指令,指令的长度可以由1 ~ 6个字节组成。

  机器的长度可变长度,由操作码寻址方式的操作数所需的字节数决定;

  汇编指令长度汇编指令对应的机器指令长度。

  指令执行过程中应考虑指令长度

   CPU从CS: IP组成的地址中读取指令,并将指令存储在指令缓冲区中;

   IP=IP读取的指令字节数;

  执行指令缓冲区的内容,返回步骤1,重复此过程。

   1.寄存器间传输指令的编码

   MOV指令从10001000(ox88)开始编码。

  该指令的编码格式为100010 dw mod reg r/m .

   W=1:表示字数据传输;

   REG字段如果选择SP,则REG字段代码=100;

   D=1:表示数据传输至所选寄存器(SP);

   Mod=11:因为另一个操作数BX也是一个寄存器。

  根据w=1和寄存器名BX,从上图可以查到R/M=011。

  ,该指令的2字节代码是8B E3H。

   2.寄存器和存储器之间传输的指令编码

   MOV CL,[BX l234H]

  该指令的作用是将有效地址为(BX 1234H)的存储单元中的数据字节传送到CL。

  指令的编码格式为100010DW MOD REG R/M data。

  第1和第2字节可以通过查表得到;第3个字节存储34H的16位位移的低位字节;第4个字节存储12H的高位字节。

  ,该指令的4字节代码是8A 8F 34 12H。

   3位寻址指令的编码

   MOV [BX 2100H],0FA50H

  该指令的作用是将16位立即数据发送到指定有效地址的字存储单元;

  其中低字节50H送列[BX+2100H]单元,高字节FAH送到(BX+2101H)单元。

  该指令的编码格式为110011W MOD 000 R/M 数据 数据(若W=1).

  指令中不但有16位立即数,还有16位位移量;

  所以,该指令的6字节编码为C7 87 00 21 50 FA H。

  4 包含段寄存器的指令的编码

  MOV DS, AX

  指令的功能是将AX寄存器的内容传送到数据段寄存器DS。

  该指令的编码格式为10001110 MOD 0 REG R/M .

  段寄存器DS的编码为11,即REG字段为11;另一个操作数也是寄存器,所以MOD=11,而R/M字段应填上AX的三位代码000 .

  所以,该指令的2字节编码为8E D8H。

  5 段超越前缀指令的编码

  MOV [BX], DL

  指令的功能是将DL寄存器的内容传送到有效地址为(BX)的字节存储单元。

  该指令(不带段超越前缀)的编码格式为100010DW MOD 0 REG R/M .

  数据从寄存器传出,则D=0;传递数据为字节,则W=0;进而,REG=010;另一个操作数是存储器,所以MOD=00,而R/M=111 .该指令的编码是在不带段超越前缀的指令代码为88 17H.

  在指令代码前加一个8位的段超越的缀代码,代码的格式为001××110,其中××位表明段超越寄存器。由于段寄存器CS的代码为01,所以指令的第1个字节的编码为00101110,即 2EH.

  所以,该指令的机器码为2E 88 17H。

  6 重点汇编指令

  7 主要寻址方式

  8 机器码汇编指令与ASCII

  再来一段机器码、汇编代码、C语言代码对照

Copyright@2015-2025 www.xingbingw.cn 性病网版板所有