CALL和JMP的区别
call会把他的下一条指令的地点位置压入堆栈,然后跳转到他调用的启动处,同时ret会自动弹出返回地点位置。
JMP只是简单的跳转。
call的实质基本上等同于push+jmp ret的实质基本上等同于pop+jmp。
call是子程序调用指令,和ret子程序返回配对使用。jmp是无条件转移指令,用做强行跳转。...
汇编语言中,JMP是无条件转移指令,CALL是子程序调用指令。指令JMP、CALL的区别在于,JMP指令控制程序直接跳转到目标地点位置执行程序,程序总是顺序执行,指令本身无堆栈操作过程。
CALL指令跳转到指定目标地点位置执行子程序,执行完子程序后,会返回CALL指令的下一条指令处执行程序,执行CALL指令有堆栈操作过程。
举比如下:JMP NEAR NEXT;跳转到NEXT执行程序......NEXT: ;目标地点位置,程序将从这里向下执行......CALL NEXT;调用从地点位置NEXT启动的子程序NOP ;子程序结束后返回到这里,然后向下继续执行程序......NEXT: ;子程序目标地点位置,程序将从这里向下执行RET ;子程序返回指令,子程序执行到此结束,返回CALL指令的下一条指令处
继续往下执行 举个例子: jmp loop mov a,r2 . loop:mov a,43h . mov r0,#40h 上面跳转到loop后根据指令的顺序,继续往下执行就行了(就是mov r0,#40h),而不是mov a,r2; 假设是程序调用 就是回到你调用的地方 举个例子: call loop mov a, r2 . loop:mov a,34h . ret mov r0,#40h 上面的ret就是回到调用的那(call loop ),执行它的下条语句(mov a,r2),而不是mov r0,#40h 不清楚你的水平,我尽可能具体的解说,期望你能看懂,也许有点罗嗦…………
PLC经常会用到指令符号及其意义因品牌和型号而异,但是,下面这些内容就是一部分常见的PLC指令符号及其意义:
- LD:取指令。表示一个与输入母线相连的常开接点指令,即常开接点逻辑运开始计算始。
- LDN:取反指令。表示一个与输入母线相连的常闭接点指令,即常闭接点逻辑运开始计算始。
- A:与指令。用于单个常开接点的串联。
- AN:与指令。用于单个常闭接点的串联。
- OUT:输出指令。用于输出信号到外部设备。
PLC(可编程逻辑控制器)是工业自动化中常见的控制设备,用于控制和监视生产过程。下面是一部分常见的PLC指令符号及其意义:
1. LD:加载指令,将一个位或字的值加载到内存中。
2. OUT:输出指令,将一个位或字的值输出到外部设备。
3. AND:逻辑与指令,对输入进行逻辑与操作。
4. OR:逻辑或指令,对输入进行逻辑或操作。
5. XOR:逻辑异或指令,对输入进行逻辑异或操作。
6. NOT:逻辑非指令,对输入进行逻辑非操作。
7. MOV:移动指令,将一个位或字的值从一个位置复制到另一个位置。
8. JMP:跳转指令,无条件地跳转到程序中的另一个地点位置执行。
9. CALL:调用指令,用于调用子程序或函数模块。
10. RET:返回指令,在子程序执行结束后返回主程序执行。
除了上面说的常见的指令符号外,不一样型号和品牌的PLC可能还有其他特定的指令符号。在使用PLC编程时,请参考有关PLC厂商提供的文档和手册以了解特定型号所支持的指令符号及其意义。
1、LD ( Load 装载 ) :动合触点
2、LDN ( Load Not 不装载 ) : 动断触点
3、A ( And 与 动合) : 用于动合触点串联
4、AN ( And Not 与 动断 ) :用于动断触点串联
5、O ( Or 或 动合 ) :用于动合触点并联
6、ON ( Or Not 或 动断 ) : 用于动断触点并联
7、= ( Out 输出 ) : 用于线圈输出
8、OLD ( Or Lode): 块或
9、ALD ( And Lode): 块与
10、LPS ( Logic Push ) :逻辑入栈
11、LRD ( Logic Read ) :逻辑读栈
12、LPP ( Logic Pop ) :逻辑出栈
13、NOT ( not 并不是 ) :非
14、NOP ( No Operation Performed ) : 无操作
15、AENO ( And ENO ) :指令盒输出端ENO相与
16、S ( Set 放置 ) : 置1
17、R ( Reset 重置,清零 ) :清零
18、P ( Positive) :上升沿
19、N ( Negative) :下降沿
20、TON ( On_Delay Timer ) :接通延时定时器
21、TONR ( Retentive On_Delay Timer ) : 有记忆接通延时定时器
22、TOF ( Off_ Delay Timer ) :断开延时定时器
23、CTU ( Count Up ) : 增计数器
24、CTD ( Count Down ) : 减计数器
25、CTDU ( Count Up/ Count Down ) :增减计数器
26、ADD ( add 加 ) : 加
LD/LDI取指令,OUT线圈输出指令,AND/ANI触点串联指令,OR/ori触点并联指令,ORB/ANBA块指令,SET/RST置位复位指令,MPS/MRD/MPP堆栈指令,MC/MCR主控主控复位指令
1、字节不一样
SJMP 假设跳转到的标号地点位置距离现目前PC所指的地点位置小于256字节,用SJMP。
AJMP 假设跳转到的标号地点位置距离现目前PC所指的地点位置小于2K字节,用AJMP。
LJMP 假设跳转到的标号地点位置距离现目前PC所指的地点位置小于64K字节,用LJMP。
ACALL是调用的子程序通道入口地点位置距离现目前PC所指地点位置需介于0~2K,LCALL是0~64K。
2、跳转的范围明显不同。
AJMP 的范围是11位地点位置,其实就是常说的2K的空间内,占用存储空间2个字节,执行周期24个时钟周。
LJMP 的范围是16位地点位置,其实就是常说的64K的空间内,占用存储空间3个字节,执行周期24个时钟周期。
SJMP 的范围是8位地点位置,其实就是常说的256BIT的空间内,占用存储空间2个字节,执行周期24个时钟周期。
JMP大多数情况下配合DPTR使用,存储空间1个字节,执行周期24个时钟周期。大多数情况下用于多分枝选择时使用,例如按键处理。
ACALL,LCALL和以上说明类似是调用指令,ACALL占用存储空间2个字节,执行周期24个时钟周期。LCALL占用存储空间3个字节,执行周期24个时钟周期。
ACALL是51汇编的子程序调用指令,其使用范围是±2K范围,超过这个范围的调用将会出错,这时可以使用LCALL即长调用语句。调用格式请看下方具体内容:ACALL标号(子程序名)
例程:ORG0000HLJMPMAINORG000BHLJMPT0ISRMAIN:MOVSP,#5FHACALLINIT;调用初始化子程序SJMP$INIT:MOVTMOD,#01HMOVTH0,#HIGH(65536-1000)MOVTL0,#LOW(65536-1000)SETBTR0SETBET0SETBEARETT0ISR:CPLP1.0RETIEND
以上就是本文jmp和call指令区别,汇编语言jmp指令是什么意思的全部内容
本文链接:https://www.china-share.com/xueli/202309112156177.html
发布于:华宇考试网(https://www.china-share.com/)>>> 报名时间栏目(https://www.china-share.com/zhuanshengben/ningxia/baomingshijian/)
投稿人:网友投稿
说明:因政策和内容的变化,上文内容可供参考,最终以官方公告内容为准!
声明:该文观点仅代表作者本人,华宇考试网系信息发布平台,仅提供信息存储空间服务。对内容有建议或侵权投诉请联系邮箱:e8548113@foxmail.com
关注本站了解更多关于文jmp和call指令区别,汇编语言jmp指令是什么意思和报名时间的相关信息。
本文主要针对jmp和call指令区别,汇编语言jmp指令是什么意思和call指令和jmp指令的区别等几个问题进行详细讲解,大家可以通过阅读这篇文章对jmp和call指令区别有一个初步认识,对于今年数据还未公布且时效性较强或政策频繁变动...
2023-09-11
本文主要针对自考专升本真的没用吗,自考专升本有什么条件要求和麦能网自考专升本等几个问题进行详细讲解,大家可以通过阅读这篇文章对自考专升本真的没用吗有一个初步认识,对于今年数据还未公布且时效性较强或政策频...
2023-09-08
本文主要针对八大员证什么时候考,1月份考的八大员几月份可以拿证书和八大员证有时间么等几个问题进行详细讲解,大家可以通过阅读这篇文章对八大员证什么时候考有一个初步认识,对于今年数据还未公布且时效性较强或政策...
2023-09-08
本文主要针对专升本考湖南师范大学难不难,师范类能否专升本考试和湖南师范大学专升本要求等几个问题进行详细讲解,大家可以通过阅读这篇文章对专升本考湖南师范大学难不难有一个初步认识,对于今年数据还未公布且时效...
2023-09-02
本文主要针对考研选错报考点从新报名退款吗,研途考研app怎么退课和考研预报名可以退款吗等几个问题进行详细讲解,大家可以通过阅读这篇文章对考研选错报考点从新报名退款吗有一个初步认识,对于今年数据还未公布且时效...
2023-09-02