zoukankan      html  css  js  c++  java
  • 浅谈指令系统---(汇编语言)

    一:指令正确格式

          

     数据传输指令:

      

        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等

  • 相关阅读:
    Linux部署golang程序(无数据库访问)
    MySQL备份数据库mysqldump
    Linux命令netstat
    SQL优化01(转载)
    springcloud之gateway点滴
    关于数据库错误:serverTimeZone
    代码重构的重要性
    关于集合的泛型
    python 视频下载神器(you-get)
    linux下ssh
  • 原文地址:https://www.cnblogs.com/meditation5201314/p/10679785.html
Copyright © 2011-2022 走看看