1. 程式人生 > >call指令用法

call指令用法

CPU執行call指令時,進行兩步操作:

1、將當前的IP或CS和IP壓入棧中;

2、轉移;

call指令不能實現短轉移。與jmp指令實現轉移的原理相同。

1、依據位移進行轉移的call指令

     指令形式:call   標號

     進行如下操作:

         (1)、sp=sp-2

         (2)、ss*16+sp=ip

         (3)、IP=IP+16位位移

16位位移由編譯程式在編譯時算出

相當於進行:

    push IP

    jmp near ptr 標號

2、轉移的目的地址在指令中的call指令

    call far ptr 標號  ;實現的是段間轉移

執行過程如下:

    (1)、sp=sp-2;

               ss*16+sp=cs;

               sp=sp-2

               ss*16+sp=ip

    (2)、CS=標號所在段的段地址

               IP=標號所在段中的偏移地址

              相當於進行:

              push CS

              push IP

              jmp far ptr 標號

3、轉移地址在暫存器中的call指令

      指令格式:call 16位 reg

      功能:sp=sp-2

               ss*16+sp=ip

               ip=16位reg

      相當於push IP

               jmp 16位reg

4、轉移地址在記憶體中的call指令

   有兩種形式

    (1)、call word ptr 記憶體單元地址

              相當於進行

                           push IP

                           jmp word ptr 記憶體地址

               例如:

                      mov sp,10h

                      mov ax,0123h

                      mov ds:[0],ax

                      call word ptr ds:[0]

              執行後 IP=0123h,sp=0;

    (2)、call dword ptr  記憶體單元地址

               相當於進行:

                     PUSH CS

                     PUSH IP

                     jmp dword ptr 記憶體單元地址

                比如,下面的指令

                     mov sp,10h

                     mov ax,0123h

                     mov ds:[0],ax

                     mov word ptr ds:[2],0

                     call dword ptr ds:[0]

                執行後:cs=0,ip=0123h,sp=0ch;

相關推薦

call指令用法

CPU執行call指令時,進行兩步操作: 1、將當前的IP或CS和IP壓入棧中; 2、轉移; call指令不能實現短轉移。與jmp指令實現轉移的原理相同。 1、依據位移進行轉移的call指令      指令形式:call   標號      進行如下操作:          (1)、sp=sp-2   

call和ret指令用法

call和ret都是轉移指令,它們都可以修改IP或者同時修改CS:IP,它們被共同用來實現子程式的設計 ret和retf區別 ret是用棧中的資料修改IP的值,實現近轉移(段內轉移) retf是用棧中的資料修改cs:IP的值,實現遠轉移(段間轉移) 1cpu執行ret時,

Intel call指令

比例 微機原理 跟著 x64 ets 模式 包含 復雜 數字 轉載:http://blog.ftofficer.com/2010/04/n-forms-of-call-instructions/ 最近有一個需求,給你個地址,看看這個地址前面是不是一個CALL指令(請同學們自

[原創]MinHook測試與分析(x64下 E9,EB,CALL指令測試,且逆推測試微軟熱補丁)

caption set enable wchar put .com 探索 cti wid 依稀記得第一次接觸Hook的概念是在周偉民先生的書中-><<多任務下的數據結構與算法>>,當時覺得Hook很奇妙,有機會要學習到,正好近段日子找來了Min

(轉)Linux系統stat指令用法

技術分享 ces type ont name log div node use 原文:https://www.cnblogs.com/linux-super-meng/p/3812695.html stat指令:文件/文件系統的詳細信息顯示。 stat命令主要用於顯

Linux系統stat指令用法

時也 eas nodes 用法 nbsp 索引 noatime 文件權限 信息 stat指令:文件/文件系統的詳細信息顯示。 stat命令主要用於顯示文件或文件系統的詳細信息,該命令的語法格式如下: stat命令-->用來顯示文件的詳細信息,包括inode, at

Linux學習第三節課-指令基本概念及部分指令用法

版本 orm otto ip add 命令解釋 bashrc 取消 margin init 3 Linux學習第三節課十四、交互式接口交互式接口:啟動終端後,在終端設備附加一個交互式應用程序,要麽是圖形化接口GUI,要麽是命令行接口CLI。十五、Shell相關概念1.She

ARM LDR偽指令用法

LDR偽指令 10.45 LDR pseudo-instruction           功能:把一個32位立即數或一個32位的記憶體地址載入到一個暫存器中。 &

call指令

CPU執行call指令時,進行兩步操作: 將當前的IP或CS和IP壓入棧中; 轉移。 call指令不能實現短轉移,除此之外,call指令實現轉移的方法和jmp指令的原理相同。   1)依據位移進行轉移的call指令 call 標號(將當前的IP壓棧後,轉到標號處執行指令)

ARM彙編:彙編中proc、endp、ret、near、far指令用法

   ARM彙編:彙編中proc、endp、ret、near、far指令用法 子程式名 PROC NEAR ( 或 FAR ) …… ret 子程式名 ENDP (1)NEAR屬性(段內近呼叫): 呼叫程式和子程式在同一程式碼段中,只能被相同程式碼段的其他程式呼叫;    FAR屬性(段間遠

ARM彙編:左移shl、右移shr指令用法

       ARM彙編:左移shl、右移shr指令用法 shl和shr是邏輯移位指令。 1.shl是邏輯左移指令,它的功能為: (1)將一個暫存器或記憶體單元中的資料向左移位; (2)將最後移出的一位寫入CF中; (3)最低位用0補充。 指令: mov al,0100

location、root、alias指令用法和區別

nginx配置靜態檔案路徑有兩種方式root和alias,指令的使用方法和作用域: root 語法:root path 預設值:root html 配置區域:http、server、location、if alias 語法:alias path 配置段:location 區別

ARM學習筆記——異常與中斷——指令ldr及.word偽指令用法

在ARM彙編指令中,ldr是一條常用的記憶體訪問指令,如: ldr r1, [r2] //將地址為r2的記憶體單元位資料讀取到r1中 它也可以作為大範圍的地址讀取偽指令,如: ldr r1, =label //r1=label的地址 label:

subprocess模組call用法

subprocess模組用來建立新的程序,連線到其stdin、stdout、stderr管道並獲取它們的返回碼。 from subprocess import call call(['python3'

【JavaScript 6連載】四、apply和call用法

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>04-apply和call方法</title> <script> // apply和c

JavaScript中apply與call用法意義及區別

call和apply大概的用法差不多,簡單的看下例子: <input type="text" id="myText" value="input text"> <script> function Obj(){this.value="物件!"

freemarker基本指令用法

freemarker基本指令用法 1、if指令 //第一種用法 [#if 條件] ... [/#if] //第二種用法 [#if 條件] ... [#else] ... [/#if] //第三種用法 [#if 條件] ... [#elseif 條件] ...

彙編:call指令的應用

   assume cs:code, ds:data, ss:stack data segment db 128 dup(0) data ends stack segment db 128 dup(0) stack ends code segment star

彙編:call指令

  1. call 標號,  (機器碼中包含了位移)   執行call指令,相當於執行下面兩條指令   push ip   jmp near ptr 標號   2. call far ptr 標號,  

Linus vi 操作指令用法

vi操作 vi編輯器的啟動和退出: 啟動shell終端,在shell提示符下輸入vim或vi,將啟動vi編輯器。若要退出Vi在末行命令模式下輸入:wq或:q!即可。 模式切換: 使用鍵在編輯命令模式和末行命令模式和插入模式之間進行切換。進入插入模式 a追加,i插入,o當前