汇编指令长度的判断


在学汇编时总不知道汇编程序中的指令长度,于是进行对汇编指令长度判断进行一个总结。如有不正确可以指出。

  规律如下:

      1. 没有操作数的指令,指令长度为1个字节
      2. 操作数只涉及寄存器的指令指令长度为2个字节                                                                                                               如:mov bx ,ax
      3. 操作数涉及内存地址的指令,指令长度为3个字节                                                                                             如:mov ax,ds:[bx +si+idata]
      4. 操作数涉及立即数指令长度为:寄存器类型+1  
        8位寄存器,寄存器类型=1。                                                                                                                                    如:mov al,8;指令长度为2个字节 
        16位寄存器,寄存器类型=2。                                                                                                                                               如:mov ax,8;指令长度为3个字节

跳转指令,分为2种情况:

      1. 段内跳转(指令长度为2个字节或3个字节)jmp指令本身占1个字节,
        段内短转移,8位位移量占一个字节,加上jmp指令一个字节,整条指令占2个字节                             如:jmp short opr
        段内近转移,16位位移量占两个字节,加上jmp指令一个字节,整条指令占3个字节                                        如:jmp near ptr opr
      2. 段间跳转,指令长度为5个字节
        如:jmp dword ptr table[bx][di]
          jmp far ptr opr
          jmp dword ptr opr 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM