汇编-JE等于则跳转和JNE不等于则跳转

 

实质:JE与JZ相同,JNE与JNZ相同,都是通过零标志位ZF跳转的

 

JE等于则跳转

je指令一般会与cmp指令搭配使用,因为cmp指令用于比较两个操作数的大小,je指令用于根据比较结果进行跳转

 

复制代码
.386  
.model flat,stdcall 
option casemap:none
.stack 4096

Include Irvine32.inc
includelib Irvine32.lib

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    mov eax,10     
    cmp eax,10     ;相等 相减之后为零 ZF=1
    je  t1            ;等于则跳转;零标志位ZF=1则跳转(为零则跳转)
    mov ebx,02h
    jmp t2
    t1:
    mov eax ,02h
    t2:


    INVOKE ExitProcess,0  
main ENDP   
END main
复制代码

 

je指令还可以用于实现程序的多重条件分支

复制代码
.386  
.model flat,stdcall 
option casemap:none
.stack 4096

Include Irvine32.inc
includelib Irvine32.lib

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    mov al, 1 ;将1赋值给al
    cmp al, 0 ;比较al和0的大小
    je label0 ;如果al等于0,跳转到label0处
    cmp al, 1 ;比较al和1的大小
    je label1 ;如果al等于1,跳转到label1处
    cmp al, 2 ;比较al和2的大小
    je label2 ;如果al等于2,跳转到label2处
    jmp t2 ;如果没有任何相等条件,跳转到程序结束标记处

    label0:
    mov ebx,0
    jmp t2
    label1:
    mov ebx,1
    jmp t2
    label2:
    mov ebx,2
    
    t2:


    INVOKE ExitProcess,0  
main ENDP   
END main
复制代码

 

使用je指令的注意事项

1. je指令只能用于比较两个操作数是否相等,不能用于比较大小

2. je指令跳转的目标地址应该是标签

3.在使用je指令时,两个操作数的类型必须相同,否则会出现编译错误

 

 

 

JNE不等于则跳转 

复制代码
.386  
.model flat,stdcall 
option casemap:none
.stack 4096

Include Irvine32.inc
includelib Irvine32.lib

ExitProcess PROTO,dwExitCode:DWORD  
 
.data       
 
.code   
main PROC   
    
    mov al, 0 ;将0赋值给al
    cmp al, 0 ;比较al和0的大小
    jne label0 ;如果al不等于0,跳转到label0处
    cmp al, 1 ;比较al和1的大小
    jne label1 ;如果al不等于1,跳转到label1处
    cmp al, 2 ;比较al和2的大小
    jne label2 ;如果al不等于2,跳转到label2处
    jmp t2 ;如果没有任何相等条件,跳转到程序结束标记处

    label0:
    mov ebx,0
    jmp t2
    label1:
    mov ebx,1
    jmp t2
    label2:
    mov ebx,2
    
    t2:


    INVOKE ExitProcess,0  
main ENDP   
END main
复制代码

 

 

 

 

 

 

posted @   天子骄龙  阅读(987)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2022-12-13 win32-创建界面
2022-12-13 VS2019创建win32项目
2021-12-13 opencv-getStructuringElement结构元素(内核矩阵)
2021-12-13 opencv-inpainting图像修复
点击右上角即可分享
微信分享提示

目录导航