一、没有操作数的指令,指令长度为1字节。如
es:
ds:
cbw
xlat
等。

二、操作数只涉及寄存器的指令,指令长度为2字节。如
mov al,[si]
mov ax,[bx+si]
mov ds,ax
等。

三、操作数涉及内存地址的指令,指令长度为3字节。如
mov al,[bx+1]
mov ax,[bx+si+3]
lea di,[1234]
mov [2345],ax
等。

四、操作数涉及立即数的指令,指令长度为:寄存器类型+2。
8位寄存器,寄存器类型=1;16位寄存器,寄存器类型=2。如
mov al,8 ;指令长度为2
mov ax,8 ;指令长度为3
等。

五、跳转指令,分3种情况,指令长度分别为2、3、5字节。
1、段内跳转,指令长度=(目标地址-指令当前地址)+1
jmp指令本身占用1个字节。
(目标地址-指令当前地址)若能用1个字节表示,则占用1个字节,整体指令长度为2字节;如
0113 jmp 0185 ;0185h-0113h=72h,72h可用1个字节表示
若需2个字节表示,则占用2个字节,整体指令为3个字节。如
0113 jmp 0845 ;0845h-0113h=732h,732h需用2个字节表示
2、段间跳转,指令长度为5字节。如

jmp 1234:5678

ps:楼上的文章是搜到的,其中

第二点:

mov al,[si]
mov ax,[bx+si]

我觉得这2个语句是涉及到内存的。大神路过请指教。

转载于:https://my.oschina.net/liangzhenghui/blog/142015

汇编指令长度计算方法相关推荐

  1. 汇编语言——汇编指令长度的判断

    汇编语言(王爽)中,讲CS:I[寄存器的地方有这样一则图示: 其中IP=IP+所读指令的字节数. 那么,所读指令的字节数应该怎么判断呢? 汇编指令长度与寻址方式有关,规律或原则如下: 一.没有操作数的 ...

  2. 汇编Ring 3下实现 HOOK API

    [文章标题]汇编ring3下实现HOOK API [文章作者]nohacks(非安全,hacker0058) [作者主页]hacker0058.ys168.com [文章出处]看雪论坛(bbs.ped ...

  3. Ollydbg 编写脚本的一些语法及例子(OD脚本)

    OllyScript脚本语言是一个种类汇编的语言.你使用它来控制ODbgScript和脚本运行. 在后面的文档中, "源操作数" 和 "目的操作数"表示以下含义 ...

  4. 纯C#实现Hook功能

    纯C#实现Hook功能 发布一个自己写的用于Hook .Net方法的类库,代码量不大,完全的C#代码实现,是一个比较有趣的功能,分享出来希望能和大家共同探讨 安装:Install-Package Do ...

  5. 计算机AL教程笔记,计算机系统基础学习笔记(2)-数据的位运算操作

    C语言的位运算操作包括两类,逻辑运算操作和逻辑移位操作. 逻辑运算操作 C语言提供了四种按位逻辑操作符,分别是按位取反,按位与,按位或,按位异或.在编译时,编译器会根据操作数的宽度分别转换为不同的指令 ...

  6. LiteOS调测利器:backtrace函数原理知多少

    摘要:本文将会和读者分享LiteOS 5.0版本中Cortex-M架构的backtrace软件原理及实现,供大家参考和学习交流. 原理介绍 汇编指令的执行流程 图 1 汇编指令的执行顺序 上图1所示, ...

  7. 易语言c源码流程图怎么实现,易语言APC内存注入主要流程源码

    易语言APC内存注入主要流程 1.打开进程 进程句柄 = OpenProcess (2035711, 假, 进程ID) 2.读入DLL文件及获取主要汇编指令 DLL文件 = 读入文件 (DLL路径) ...

  8. LyScript 插件官方API调用案例

    本人结合LyScript插件API函数实现的一些通用案例,用于演示插件内置方法是如何灵活组合运用的,其目的是让用户可以自行研究学习API函数的参数传递,并能够通过案例的学习快速掌握官方API函数的使用 ...

  9. LLVM pass pwn 入门 (4)

    有了前面两道题的分析基础之后,我们不难发现,LLVM实际上就是一类基于C++的VM pwn,我们通过定义不同名字的函数或写入不同类型的指令让vm做一些事情,其中就包含触发漏洞.这篇文章笔者来分析一下2 ...

最新文章

  1. 改变div php,js改变div样式
  2. 查找Linux中内存和CPU使用率最高的进程
  3. Spring xml 配置使用外部config 文件
  4. Flink专题-BaseTransform
  5. oracle数据库安装自动化,自动化Oracle数据库静默安装
  6. python3 for_Python3: for 表达式
  7. 写游戏软件要学什么_为什么要写关于您所知道的(或所学到的)的内容
  8. 中国开放教育资源协会_教育中的开放数据开始显示出真正的吸引力
  9. 【学习笔记】ListView初识
  10. 先有鸡还是先有蛋? 加拿大科学家揭开谜底
  11. Linux上将二进制文件转化为c语言数组
  12. 对于Typora(markdown)的基本使用
  13. select2 ajax 搜索框,修改Select2搜索框(Modify Select2 search box)
  14. 中断扫描方式子程序c语言,单片机原理及应用(C语言版) 第9章 节 单片机系统配置及接口.ppt...
  15. 正点原子T100智能焊台体验,顺便咱们来说说它的软件菜单、界面切换如何来实现?
  16. VScode正则表达式
  17. 【图片服务】深入分析阿里云中图片服务的架构经验
  18. 好消息!iPhone 4, 3GS, 3G 基带 5.14.02 和 2.10.4 已经软解
  19. Struts2 DTD与XML文件编写
  20. 【BZOJ4414】数量积

热门文章

  1. One-shot Learning with Memory-Augmented Neural Networks
  2. reduction_indices的用法
  3. Oracle建立约束、删除约束
  4. dubbo的学习使用,第一章
  5. C# App.config全攻略
  6. 【转】获取命名空间、类名、方法名
  7. 日积月累-从细节做起
  8. Apache+PHP+MySQL安装与配置
  9. 时频分析:短时傅立叶变换实现(4)
  10. Markdown:数学公式(4)