浅谈指令系统---(汇编语言)

一:指令正确格式

      

 数据传输指令:

  

    Mov(符合上述图形):

        1.立即数不能在左边

        2.两边不能同为段寄存器(DS,CS,ES,SS)

        3.两边一样长

      (特殊:1.不能修改CS

        2.INC WORD PTR[BX + SI] 执行结果是有效值 + 1 

        3.[]间接寻址中若有2个,必须一个为基址,一个为变址即:mov DH [SI + BP],而且没有mov BX BX + 1这种格式,

         )

    XHCG(交换):不出现段寄存器(DS,CS,ES,SS)

    PUSH, POP:以16字为单位且每次操作SP+= 2

    XLAT:只有AL,DS,BX3个

    LEA,LDS,LES:为16位通用寄存器 +[内存操作数] 即 LEA DS [SI]是错误的(因为DS为段寄存器)

    IN,OUT:只有AL或AX,但是16位需先给DX

    寻址方式:立即、直接、寄存器、寄存器间接(基址[BP,BX],变址[SI,DI]、位移[数字]) 

    (寄存器间接寻址中,BP由SS控制位置,BX、SI、DI由DS控制位置,下面会讲到)   即(物理地址PA = DS *16 + 有效地址EA 还是 = SS *16 +有效地址EA

   

  算术运算指令:

    ADC d,s d + s + CF(CF的值来自题目或上面指令)

    NEG d 去补

    DAA :调整,只调整AL   

逻辑运算和移位循环指令:

    逻辑运算:OF,CF一定置0

    移位循环:超过1,需要给CL

二:具体内容及题型

  1.对于物理地址:PA = DS(SS) *16 + EA(逻辑地址)

  1.寄存器间接寻址时应注意字长确不确定:INC [SI]; IDIV [BP + DI + 1300H] ;ADD [2400H], 1234H,都是错的

  2.MUL 不能为立即数 : MUL 10即是错的。

  

  OF(两个数符号相同,操作后不同则为1,否则为0)

  SF(操作后正为0,负为1)

  ZF(全0为1,否则为0)

  AF(低4位进位或退位为1,否则为0)

  PF(低8位偶数个1为1,奇数个为0)

  CF(最高位进位或退位为1,否则为0)

  

  AX清0的一些指令(共五条):

         1. AND AX 0000H

         2. XOR AX AX

         3. SUB AX AX

         4. MOV AX 0H

         5. LEA AX [0000H]

  对某些位移动: MOV CL  2

        SHL(ROL)

  对某些位取反:AND,OR,XOR等

原文地址:https://www.cnblogs.com/meditation5201314/p/10679785.html