1. 程式人生 > >分析8086彙編指令jmp的跳轉程式

分析8086彙編指令jmp的跳轉程式

程式如下所示

assume cs:codesg
codesg segment

    mov ax,4c00h
    int 21h

start:mov ax,0

    s:nop
      nop

      mov di,offset s
      mov si, offset s2
      mov ax, cs:[si]
      mov cs:[di],ax


    s0:jmp short s

    s1:mov ax,0
       int 21h
       mov ax,0

    s2: jmp short s1
        nop

codesg ends
end start

在這裡就簡單分析下,jmp指令的跳轉情況

指令真正開始執行是在start處,然後mov di,offset s 代表的就是把標號s處的偏移地址給了di,然後mov si,offset s2 得到的就是標號s2處的偏移地址,對於mov ax,cs:[si]其實就是將s2的指令的jmp short s1給了ax,其實給的就是其對應的機器碼,其實就是相當於給的是 向前 s1-s2這個指令,我們先看看s1-s2相差多少,這裡其實就是相差8,這裡再提一下nop指令的作用,這個指令其實就是什麼都不做的指令,其實就是一個空指令,但是會佔用一個指令的時間

這裡寫圖片描述

所以在執行到s0: jmp short s處的時候會跳到s處

這裡寫圖片描述

s處會執行的其實就是把ip暫存器的值移到mov ax 4c00h對應的起始地址,s處的地址和mov ax 4c00h之間相差了8

這裡寫圖片描述

相關推薦

分析8086彙編指令jmp程式

程式如下所示 assume cs:codesg codesg segment mov ax,4c00h int 21h start:mov ax,0 s:nop

ARM彙編:組合語言指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

跳轉指令分三類: 一、無條件跳轉: JMP; 二、根據 CX、ECX 暫存器的值跳轉: JCXZ(CX 為 0 則跳轉)、JECXZ(ECX 為 0 則跳轉); 三、根據 EFLAGS 暫存器的標誌位跳轉, 這個太多了. 根據標誌位跳轉的指令: JE   ;等於則跳轉 J

正確區分LJMP、AJMP、SJMP、JMP指令

正確區分LJMP、AJMP、SJMP、JMP指令 MCS-51的控制轉移類指令,共17條,分為無條件轉移指令、條件轉移指令、子程式呼叫和返回指令、空操作指令等四類。 無條件轉移指令(共4條) LJMP addr16   ; PC〈—— addr16 AJMP addr1

MIPS中有關於分支指令尋址

負數 -c 通過 fff pan 例如 ack 指定 style 分支指令 分支指令包含該指令,和兩個操作數,以及跳轉的分支地址,該地址是相對於下一條指令的相對地址 分支指令占6位 操作數1占5位 操作數2占5位 分支指令16位 例如 bne

指令及其條件

及其 跳轉指令 指令 jnl jns cxz jmp 條件跳轉 != ja 跳轉指令,條件:CF=0 和 ZF=0 jab 跳轉指令,條件:CF=0 jb 跳轉指令,條件:CF=1 jbe 跳轉指令,條件:CF=1 或者 ZF=1 jc 跳轉指令,條件:CF=1

通過javap命令分析java彙編指令

一、javap命令簡述 javap是jdk自帶的反解析工具。它的作用就是根據class位元組碼檔案,反解析出當前類對應的code區(彙編指令)、本地變量表、異常表和程式碼行偏移量對映表、常量池等等資訊。 當然這些資訊中,有些資訊(如本地變量表、指令和程式碼行偏移量對映表、常量池中方法的引數名稱等

flutter專案分析-基本架構和路由

1.首頁的底部item和對應的主體的各個頁面 點選之後,使用PageContraoller進行轉換各個頁面。 2.實現banner功能和圖片的顯示 3.進行路由的跳轉 其中WebViewPage就是要跳轉的Widget。

8086彙編指令全集

學習組合語言,最關鍵的就在於彙編指令集的掌握以及計算機工作方式的理解,以下是80X86彙編過程中經常用到的一些彙編指令。 從功能分類上來說,一共可分為 一、  資料傳送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF、POPF、CBW、CWD、CWDE。 二、  算術指令:ADD

8086彙編基礎 cx=0則指令jcxz例項

       慈心積善融學習,技術願為有情學。善心速造多好事,前人栽樹後乘涼。我今於此寫經驗,願見文者得啟發。 assume cs:code code segment start:

Win32 匯編 - 指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

位置 arch lan lag 大於 jmp 清除 跳轉指令 href 跳轉指令分三類:一、無條件跳轉: JMP;二、根據 CX、ECX 寄存器的值跳轉: JCXZ(CX 為 0 則跳轉)、JECXZ(ECX 為 0 則跳轉);三、根據 EFLAGS 寄存器的標誌位跳轉,

mpvue小程式裡面navigator點選不分析

1.一般這種情況是路徑沒有配置對,並且控制檯會報錯。2.你配置的路徑是tabbar裡定義的路徑,控制檯不報錯,但是也不會跳轉,這個時候如果你需要在導航和tabbar同時跳轉,需要加個屬性:需要注意的是,當你路徑變成非tabbar路徑時,需要把這個屬性去掉open-type="

彙編--條件指令

條件跳轉指令很多,支援根據有符號、無符號整數的比較以及對CPU狀態標誌的檢查進行跳轉的一系列指令。 根據特定的標誌的 根據兩運算元是否相等,或根據(E)CX的值是否相等 基於無符號運算元的比較結果的

微信小程式實現頁面傳值以及獲取值的方法分析

本文例項講述了微信小程式實現頁面跳轉傳值以及獲取值的方法。分享給大家供大家參考,具體如下:在安卓中頁面跳轉傳值都是通過bundle,現在研究一下小程式的列表跳轉及頁面傳值。my.wxml<view class="container"> <view bind

彙編指令總結

 雖然jmp指令提供了控制轉移,但是它不允許進行任何複雜的判斷。80x86條件跳轉指令提供了這種判斷。條件跳轉指令是建立迴圈和實現其他條件執行語句。條件跳轉指令檢查一個或多個標誌位,判斷它們是否匹配某

彙編指令(轉載)

條件跳轉指令檢查一個或多個標誌位,判斷它們是否匹配某個特殊條件(就像setcc指令):如果標誌匹配成功,該指令就將控制轉移到目標位置;如果匹配失敗,CPU忽略該條件跳轉指令而繼續執行下一條指令。一些條件跳轉指令只是簡單測試符號位(sign)、進位位(carry)、溢位位(overflow)、零標誌(zero)

轉移指令jmp指令call

【-1】寫在前面 以下內容文字描述來自於 王爽老師的《組合語言》教材,建議大家都買一本,哈哈。不是我打廣告,確實人家寫的好,應該支援。我只是附上了自己的圖片和理解而已。 【0】先上乾貨 只修改ip,稱為段內轉移,如jmp ax 修改cs和ip,稱

指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

跳轉指令分三類: 一、無條件跳轉: JMP; 二、根據 CX、ECX 暫存器的值跳轉: JCXZ(CX 為 0 則跳轉)、JECXZ(ECX 為 0 則跳轉); 三、根據 EFLAGS 暫存器的標誌位跳轉, 這個太多了. 根據標誌位跳轉的指令: JE ;等於則跳轉 JNE ;不等於則跳轉 JZ

ti-sdk-evm-am335x-05.07 uboot分析(MLO到u-boot之前)

article 相關信息 ons 區域 point put tin locate ctu ------------------------------

實現正負數區分#指令

arr 進位 main write .com 位置 部分 logs pan 題目要求大意:   在數據段指定一組數據,對該組數據進行:正負分類,分別記下兩類的絕對值之和與個數只和 參考代碼: include irvine32.inc .data arr dd 0,-1,

微信小程序分析

tab 切換 ID 頁面重定向 定義 PE 按順序 avi direct 一個 對於路由的觸發方式以及頁面生命周期函數如下: 路由方式觸發時機路由前頁面路由後頁面 初始化 小程序打開的第一個頁面 onLoad, onShow 打開