汇编指令JMP是啥意思?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编指令JMP是啥意思?相关的知识,希望对你有一定的参考价值。

JMP跳转指令 无条件的转移到指令指定的地址去执行从该地址开始的命令。指令必须指定转移的目标地址(或称转向地址)。 JMP指令不影响条件码。 计算机汇编语言中的一种跳转指令.当需要分支程序时,散转程序有时可以帮我们实现。使用指令JMP @A+DPTR,可实现多分支转移。它是根据某种输入或运算的结果,分别转向各个处理程序段取执行程序。 JMP $ 就是跳转到当前的地址, 所以它是一个死循环,不继续执行下面的程序了。 他的意思在于我要求的所有任务已经完成了,后面没有任务了,那么,就原地踏步吧! 我已经设置好中断服务程序了,只要发生中断就会进入中断服务程序,所有的操作都在中断服务程序处理。 编辑本段JMP系列软件 SAS(全球最大的统计学软件公司)推出的一种交互式可视化统计发现软件系列,包括JMP,JMP Pro,JMP Clinical,JMP Genomics,SAS Simulation Studio for JMP等强大的产品线。主要用于实现统计分析。JMP的算法源于SAS,特别强调以统计方法的实际应用为导向,交互性、可视化能力强,使用方便,尤其适合非统计专业背景的数据分析人员使用,在同类软件中有较大的优势。 目前JMP的最新版本是JMP9,其主要特点括: 1. 交互性:JMP可以帮助用户很好地实现与数据之间的“互动”,包括图形、数据表等之间都是实时交互的,这对实现探索性数据分析和提高分析效率比较有帮助。 2. 可视化:数据可视化能力一直是JMP值得称道的特点之一。 3. 功能和性能:除了一般软件能提供的常规统计分析功能外,JMP还具备时间序列、聚类等高级分析功能以及决策树、神经网络等专业数据挖掘工具,功能颇为强大;另外,JMP还提供了非常完整的六西格玛及质量管理统计方法,如试验设计DOE,测量系统分析MSA等,可靠性分析(Reliability)等。其中,JMP的试验设计方案堪称一绝,灵活性和完整性都很突出。此外,JMP Pro还能提供更强大的计算能力以及更加先进的数据挖掘和预测功能;JMP Clinical是SAS公司推出的下一代生命科学分析平台;JMP Genomics是专业的基因数据分析软件。 4. 可扩展性:JMP既可以单独运行,也可以和SAS,R等分析系统结合使用;运用JMP编程语言JSL,可以开发个性化的分析程序或者数据分析的自动化模版等。 5.使用便利性:JMP采用图形界面操作,其强大的交互性和可视化能力使得使用变得容易;JMP的菜单设置与一般统计软件不同,它采用嵌套的形式,按照分析和解决问题的思路而设计,具备了较好的防错能力。 JMP的应用领域包括业务可视化、探索性数据分析、六西格玛及持续改善(可视化六西格玛、质量管理、流程优化)、试验设计、生存及可靠性、统计分析与建模、交互式数据挖掘、分析程序开发等。JMP是六西格玛软件的鼻祖,当年摩托罗拉开始推六西格玛的时候,用的就是JMP软件,目前有非常多的全球顶尖企业采用JMP作为六西格玛软件,包括陶氏化学、惠而浦、铁姆肯、招商银行、美国银行、中国石化等等。 JMP的应用非常广泛,全球用户数已经超过三十万,全球顶尖企业基本都是它的用户,像英特尔、戴尔、苹果、摩托罗拉、IBM、HP、Google、GE、NEC、Sony、阿斯利康、辉瑞制药、礼来、罗氏、宝洁、联合利华、陶氏化学、巴斯夫、铁姆肯、霍尼韦尔、丰田汽车、汇丰银行、美国银行、招商银行、苏格兰皇家银行、中国石化、北京大学、人民大学、首都经贸大学、清华大学、上海交通大学、沃顿商学院、哈佛大学、MIT、耶鲁大学、牛津大学…… 在医药领域,以严格和严谨著称的美国食品与药物管理局(FDA)对于药企申报的新药报告中的统计分析部分,只接受用SAS和JMP分析得出的统计结果。其40%以上的药物评审员都是JMP用户。 参考技术A 含义
无条件的转移到指令指定的地址去执行从该地址开始的命令。指令必须指定转移的目标地址(或称转向地址)。 JMP指令不影响条件码。
计算机汇编语言中的一种跳转指令。当需要分支程序时,散转程序有时可以帮我们实现。使用指令JMP @A+DPTR,可实现多分支转移。它是根据某种输入或运算的结果,分别转向各个处理程序段取执行程序。

类型
该指令分直接转移和间接转移两种。直接转移又可分短程(SHORT)、近程(NEAR)和远程(FAR)3种形式。当程序执行到JMP指令时,就无条件地转移到指令中所指示的目的地址。该指令的一般格式为JMP OPRD;OPRD是转移的目的地址。直接转移的3种形式为:
①短程转移(直接短转移)
指令格式:JMP SHORT OPRD
语法格式: JMP 地址标号 ;(IP)←(IP)+8位位移量
指令功能:OPRD为转移地址的标号,指令中的SHORT规定了OPRD为有符号的8位二进制数,OPRD为转移地址的偏移量。该指令将程序执行的顺序转移到由(IP)+OPRD形成的新的程序执行的目标地址,从而实现程序的转移。转移的目标地址OPRD在指令中可以直接使用标号地址,但要求转移的目标地址的范围只能在JMP指令所处地址的-128~+127字节范围之内,如超出该范围,汇编时出错。
② 近程转移(段内直接转移)
指令格式:JMP NEAR PTR OPRD
语法格式: JMP 地址标号 ;(IP)←(IP)+16位位移量
指令功能:与短程转移的功能和要求相同,不同之处是近程转移的OPRD为有符号的16位二进制数,指令将程序执行的顺序转移到由(IP)+OPRD形成的新的程序执行的目标地址,转移的目标地址的范围只能在JMP指令所处地址的-32768~+32767字节范围之内,如超出该范围,汇编时出错。使用该指令时NEAR可省略
③段间直接转移(远程转移)
指令格式:JMP FAR PTR OPRD
语法格式: JMP 地址标号 ;(IP)←新的偏移地址, ;(CS)←新的代码段地址
指令功能:指令中用FAR PTR规定了该指令为段间的转移,OPRD为目的地址的标号,目的地址与JMP指令所在地址不在同一段内。执行该指令时要修改CS和IP的内容,将OPRD所在段的段地址送CS中,OPRD的段内偏移地址送IP中。
④ 段内间接转移
指令格式:JMP WORD PTR OPRD
语法格式:JMP reg16/mem ;(IP)←新的偏移地址
指令功能:与短程转移的功能和要求相同,不同之处是段内间接转移的OPRD 可以是除立即数外的任何寄存或存储器寻址方式,转移的目标地址由OPRD的内容确定。 [1]
⑤ 段间间接转移
指令格式:JMP DWORD PTR OPRD
语法格式:JMP mem32
指令功能:指令中用DWORD PTR规定了该指令为段间间接转移,OPRD只能是存储器寻址方式。执行该指令时将寻址到的内存单元的第一个字送入IP中,第二个字送入CS中

指令例子
JMP $
就是跳转到当前的地址, 所以它是一个死循环,不继续执行下面的程序了。
我已经设置好中断服务程序了,只要发生中断就会进入中断服务程序,所有的操作都在中断服务程序处理。

在这种情况下,jmp 指令如何在 att 汇编中工作

【中文标题】在这种情况下,jmp 指令如何在 att 汇编中工作【英文标题】:How does the jmp instruction work in att assembly in this instance 【发布时间】:2021-11-07 13:49:33 【问题描述】:

我现在正在逐步执行 AT&T 汇编中的一个函数,但无法弄清楚这个特定的 jmp 命令是如何工作的。

    jmp    *0x804a140(,%eax,4)

究竟如何使用 %eax 寄存器和 4 与跳转指令?我以前从未见过 jmp 这样使用过。

【问题讨论】:

【参考方案1】:

如果您对 at&t 语法感到困惑,请将您的工具切换到英特尔模式。

您看到的有效地址并非特定于跳转,您可能在任何需要内存操作数的指令中遇到它。

在英特尔语法中,这看起来像:jmp [0x804a140 + 4 * eax]。这是一个间接跳转,从内存地址0x804a140 + 4 * eax获取跳转目标。这可能是所谓的跳转表中的一项。

【讨论】:

这对代码很有意义。我只是不确定在 AT&T 语法中是如何阅读的,并且在线搜索使它变得更加混乱。谢谢!

以上是关于汇编指令JMP是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

汇编指令JMP是啥意思?

汇编语言中的call是啥意思

汇编语言中的call是啥意思?

求助汇编语言中JMP和BR指令

汇编指令之JMP,CALL,RET(修改EIP的值!!!)

汇编指令,INC指令的操作数都可以是啥