1. 程式人生 > >ARM彙編:組合語言跳轉指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等

ARM彙編:組合語言跳轉指令: 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   ;為 0 則跳轉
JNZ  ;不為 0 則跳轉

JS   ;為負則跳轉
JNS  ;不為負則跳轉

JC   ;進位則跳轉
JNC  ;不進位則跳轉

JO   ;溢位則跳轉
JNO  ;不溢位則跳轉

JA   ;無符號大於則跳轉
JNA  ;無符號不大於則跳轉
JAE  ;無符號大於等於則跳轉
JNAE ;無符號不大於等於則跳轉

JG   ;有符號大於則跳轉
JNG  ;有符號不大於則跳轉
JGE  ;有符號大於等於則跳轉
JNGE ;有符號不大於等於則跳轉

JB   ;無符號小於則跳轉
JNB  ;無符號不小於則跳轉
JBE  ;無符號小於等於則跳轉
JNBE ;無符號不小於等於則跳轉

JL   ;有符號小於則跳轉
JNL  ;有符號不小於則跳轉
JLE  ;有符號小於等於則跳轉
JNLE ;有符號不小於等於則跳轉

JP   ;奇偶位置位則跳轉
JNP  ;奇偶位清除則跳轉
JPE  ;奇偶位相等則跳轉
JPO  ;奇偶位不等則跳轉


跳轉相關的標誌位:

JMP 測試

; Test28_1.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    jmp @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main

;測試結果應該是:
;1
;4
;以下都應該是這樣.


JE 測試

; Test28_2.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    mov eax, 123
    cmp eax, 123
    je @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main


JZ 測試

; Test28_3.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    xor eax, eax
    jz @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main


JS 測試

; Test28_4.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    xor eax, eax
    dec eax
    js @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main

JC 測試

; Test28_5.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    mov al, 0FFh
    add al, 1
    jc @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main


JO 測試

; Test28_6.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    mov al, -128
    sub al, 1
    jo @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main


JA 測試

; Test28_7.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    mov eax, 22
    cmp eax, 11
    ja @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main


JG 測試

; Test28_8.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    mov eax, 1
    cmp eax, -1
    jg @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main


JP 測試

; Test28_9.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    mov al, 00001110b
    inc al
    jp @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main


JECXZ 測試

; Test28_10.asm;
.386
.model flat, stdcall

include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib

.code
main proc
    PrintText '1'
    xor ecx, ecx
    jecxz @F
    PrintText '2'
    PrintText '3'
@@: PrintText '4'
    ret
main endp
end main

相關推薦

ARM彙編組合語言指令: JMPJECXZJAJBJGJLJEJZJSJCJOJP

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

Win32 匯編 - 指令: JMPJECXZJAJBJGJLJEJZJSJCJOJP

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

ARM彙編MRS和MSR指令

                        ARM彙編:MRS和MSR指令 ARM中有兩條指令用於在狀態暫存器和通用暫存器之間傳送資料。 一:下面先來說說狀態暫存器

ARM彙編載入和儲存指令集(六大類)---LDRLDRBLDRHSTRSTRBSTRH

ARM的六大類指令集---LDR、LDRB、LDRH、STR、STRB、STRH ARM微處理器支援載入/儲存指令用於在暫存器和儲存器之間傳送資料,載入指令用於將儲存器中的資料傳送到暫存器,儲存指令則完成相反的操作。常用的載入儲存指令如下: —  LDR     字資料載

指令: JMPJECXZJAJBJGJLJEJZJSJCJOJP

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

ARM彙編彙編中procendpretnearfar指令用法

   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

彙編--條件指令

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

正確區分LJMPAJMPSJMPJMP指令

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

彙編指令總結

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

彙編指令(轉載)

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

轉移指令jmp指令call

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

實現正負數區分#指令

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

指令及其條件

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

小程式 頁面方式

一. 頁面的跳轉方式 1.  使用元件  <navigator>  -- 類似於 a標籤        示例:   <navigator  url='../index/index

Java學習日常(page指令 指令 包含指令

學習內容 Page指令 ContentType 和 pageEncoding <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

iOS開發(swift)頁面之設定第一次執行的介面

0.介面回顧   1.在AppDelegate檔案中新增如下程式碼 import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate {

iOS開發(swift)頁面傳值(續)

副標題:.xib檔案的介面與.storyboard的介面相互跳轉 一、.storyboard檔案的介面跳轉到.xib檔案的介面 0.回顧:沿用上一篇文章裡.storyboard的介面。現在要實現點選綠色介面(.storyboard)按鈕跳轉至新的藍色介面(.xib)。 1.下面

ARM彙編BNE和TST和BEQ

                                  ARM彙編:BNE和TST (1)例一:TST與BNE

ionic學習(十三)ionic到外部連結url

外掛地址:https://ionicframework.com/docs/native/in-app-browser/ 使用方法: 1.新增外掛: ionic cordova plugin add cordova-plugin-inappbrowser npm install --sav