Red de conocimiento informático - Conocimiento sistemático - ¿Cuál es la diferencia entre LCALL y JMP en lenguaje ensamblador?

¿Cuál es la diferencia entre LCALL y JMP en lenguaje ensamblador?

1. Diferentes secuencias de ejecución de programas

1. LCALL: LCALL llama a una subrutina después de ejecutarla, regresa a la instrucción LCALL y continúa ejecutando el programa con la siguiente instrucción.

2. JMP: JMP es una instrucción de transferencia incondicional después de ser transferida a un programa de ejecución, nunca regresará al lugar original.

2. Diferentes métodos de procesamiento del programa

1. LCALL: la instrucción guardará la dirección de retorno antes del salto del proceso, de modo que la instrucción ret pueda usarse en el código de destino del salto. volver a la llamada La ejecución continúa en la siguiente instrucción de la instrucción. Al realizar un salto intrasegmento, solo se guarda EIP; si es un salto entre segmentos, también se guarda CS.

2. JMP: Salta el proceso de ejecución y no guarda la dirección del remitente.

3. Diferentes procesos de ejecución del programa

1. LCALL: al ejecutar el comando LCALL, la IP o CS actual y la IP se insertan en la pila y luego se transfieren a la siguiente. Línea de etiqueta. Programa de ejecución de direcciones. ?

2. JMP: la instrucción JMP controla el programa para saltar directamente a la dirección de destino para ejecutar el programa. El programa siempre se ejecuta secuencialmente y la instrucción en sí no tiene un proceso de operación de pila.