注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

Win32汇编跳转指令  

2011-04-11 16:17:42|  分类: Win32汇编学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
跳转指令分三类:
一、无条件跳转: 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 ;奇偶位不等则跳转
跳转相关的标志位:
11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF   AF   PF   CF

     







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

参考:http://xinss.com/home.php?mod=space&uid=21928&do=blog&classid=458&view=me&from=space

  评论这张
 
阅读(148)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017