汇编-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


浙公网安备 33010602011771号