发布网友 发布时间:2022-04-25 12:01
共4个回答
热心网友 时间:2023-08-01 22:56
一、程序执行顺序不同
1、LCALL:LCALL是调用子程序,当子程序执行完后就返回到LCALL指令下一条指令继续执行程序
2、JMP:JMP是无条件转移指令,转移到某执行程序后就不再返到回原处,是一去不回返的。
二、程序处理方式不同
1、LCALL:指令在进行流程跳转前会保存返回地址,以便在跳转目标代码中可以使用ret指令返回到call指令的下一条指令处继续执行。执行段内跳转时,只保存EIP;如果是段间跳转,还保存CS。
2、JMP:进行执行流程的跳转,不会保存返回地址。
三、程序执行过程不同
1、LCALL:执行LCALL命令时,将当前的 IP 或 CS和IP 压入栈中,之后转移到紧跟的标号行地址执行程序。
2、JMP:JMP指令控制程序直接跳转到目标地址执行程序,程序总是顺序执行,指令本身无堆栈操作过程。
热心网友 时间:2023-08-01 22:56
LCALL是调用子程序,当子程序执行完后就返回到LCALL指令下一条指令继续执行程序,而子程序是可以多次调用,也可以在任何位置调用。这是从哪里走的,还要返回哪里的。热心网友 时间:2023-08-01 22:57
区别还是很大的,LCALL是子程序调用指令,虽然入口好象和转移指令没什么区别,但子程序调用指令影响堆栈,所以一般在子程序中用RET实现返回,否则易造成栈的不平衡。而影响程序的正常运行。热心网友 时间:2023-08-01 22:57
用的时候都能用,使用LCALL子程序的话,程序的可读性和可移植性更好追问恩我觉得就是call用ret返回,而jmp想要返回原地方还要用jmp到原来的地方,区别吗还是有的,就是用的时候都能用,我就是在写的时候突然不知道用哪个了,是这么回事吧,是的话就用就行了。