陈奕迅富士山下百度云:LEAVE 指令 RET n 指令

来源:百度文库 编辑:九乡新闻网 时间:2024/05/02 04:42:49

LEAVE 指令

LEAVE 指令是 80X86 CPU 指令集的一個指令,它先使 ESP 暫存器設定為 EBP 之值,然後再彈出一個堆疊數值存於 EBP。常用於返回主程式時把 ESP 之值設定為正確值。在副程式中,ESP 之值不一定是指向您所預期的位址,因為常有中斷發生,會使 ESP 值不確定,但是如果在副程式一開始設定 EBP 值,那 EBP 不會改變。所以 Win32 系統常利用 LEAVE 指令在返回主程式時把 ESP 之值設定為正確值。在 Win32 系統中,一個堆疊數值長度為一個雙字組 ( 32 個位元 )。

在 16 位元的 DOS 系統中,也可以使用,這時使 SP 暫存器設定為 BP 之值,然後再彈出一個堆疊數值存於 BP,所不同的是堆疊一個數值長度為一個字組 ( 16 個位元 )。

RET n 指令

RET 指令也是一個 80X86 CPU 指令集的一個指令,假如沒有後面的 n,那就是取出一個堆疊的資料,存於 IP 或 EIP,視 Win32 或 DOS 系統。

假如有 n 值,也是先取出一個堆疊的資料,存於 IP 或 EIP,然後再使 SP 或 ESP 之值加上 n,拋棄呼叫副程式時存於堆疊的參數。n 值通常由組譯器設定。