1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 学 Win32 汇编[28] - 跳转指令: JMP JECXZ JA JB JG JL JE JZ JS JC JO JP 等

学 Win32 汇编[28] - 跳转指令: JMP JECXZ JA JB JG JL JE JZ JS JC JO JP 等

时间:2020-12-15 03:14:26

相关推荐

学 Win32 汇编[28] - 跳转指令: 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, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'jmp @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main;测试结果应该是:;1;4;以下都应该是这样.

JE 测试

; Test28_2.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'mov eax, 123cmp eax, 123je @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

JZ 测试

; Test28_3.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'xor eax, eaxjz @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

JS 测试

; Test28_4.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'xor eax, eaxdec eaxjs @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

JC 测试

; Test28_5.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'mov al, 0FFhadd al, 1jc @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

JO 测试

; Test28_6.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'mov al, -128sub al, 1jo @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

JA 测试

; Test28_7.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'mov eax, 22cmp eax, 11ja @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

JG 测试

; Test28_8.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'mov eax, 1cmp eax, -1jg @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

JP 测试

; Test28_9.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'mov al, 00001110binc aljp @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

JECXZ 测试

; Test28_10.asm;.386.model flat, stdcallinclude windows.incinclude kernel32.incinclude masm32.incinclude debug.incincludelib kernel32.libincludelib masm32.libincludelib debug.lib.codemain procPrintText '1'xor ecx, ecxjecxz @FPrintText '2'PrintText '3'@@: PrintText '4'retmain endpend main

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。