Tôi sẽ trả lời một chút rộng hơn ở đây.
Có nói chung hai loại nhảy có điều kiện trong x86:
số học nhảy - như JZ (nhảy nếu không), JC (nhảy nếu carry), JNC (nhảy nếu không mang theo), vv .
So sánh nhảy - JE (nhảy nếu bằng), JB (nhảy nếu dưới đây), JAE (nhảy nếu trên hoặc bằng) vv
Vì vậy, sử dụng các loại đầu tiên chỉ sau khi số học hoặc hướng dẫn hợp lý tions:
sub eax, ebx
jnz .result_is_not_zero
and ecx, edx
jz .the_bit_is_not_set
Sử dụng nhóm thứ hai chỉ sau khi hướng dẫn CMP:
cmp eax, ebx
jne .eax_is_not_equal_to_ebx
cmp ecx, edx
ja .ecx_is_above_than_edx
Bằng cách này, chương trình trở nên dễ đọc hơn và bạn sẽ không bao giờ bị nhầm lẫn.
Lưu ý rằng đôi khi các hướng dẫn này thực sự là từ đồng nghĩa. JZ == JE; JC == JB; JNC == JAE và vân vân. Toàn bộ bảng đang theo dõi.Như bạn có thể thấy, chỉ có 16 hướng dẫn nhảy có điều kiện, nhưng 30 việc nhớ mật khẩu - họ được cung cấp để cho phép tạo ra các mã nguồn dễ đọc hơn:
Mnemonic Condition tested Description
jo OF = 1 overflow
jno OF = 0 not overflow
jc, jb, jnae CF = 1 carry/below/not above nor equal
jnc, jae, jnb CF = 0 not carry/above or equal/not below
je, jz ZF = 1 equal/zero
jne, jnz ZF = 0 not equal/not zero
jbe, jna CF or ZF = 1 below or equal/not above
ja, jnbe CF or ZF = 0 above/not below or equal
js SF = 1 sign
jns SF = 0 not sign
jp, jpe PF = 1 parity/parity even
jnp, jpo PF = 0 not parity/parity odd
jl, jnge SF xor OF = 1 less/not greater nor equal
jge, jnl SF xor OF = 0 greater or equal/not less
jle, jng (SF xor OF) or ZF = 1 less or equal/not greater
jg, jnle (SF xor OF) or ZF = 0 greater/not less nor equal
@nrz Lời nhận xét của bạn không rõ ràng - OP có phải là người mong đợi nhận ra sai lầm bằng cách nhìn vào tuyên bố thực sự, thực sự khó khăn? –
@nrz Jeez người đàn ông là bạn đang cố gắng để gây nhầm lẫn cho tôi nhiều hơn?!?! Từ các câu trả lời khác, bây giờ tôi biết rằng với JNZ, bước nhảy chỉ diễn ra nếu cờ zero không được thiết lập (0) –
@ 43.52.4D. Xin lỗi, tôi đã đọc sai câu "JNZ - Bước nhảy sẽ diễn ra nếu cờ Z không phải là số không (1)" trong câu hỏi của bạn và kết quả là nhận xét của tôi có thể gây nhầm lẫn, vì vậy tôi đã xóa nó ngay bây giờ. [Tham khảo nhanh Intel x86 JUMP] (http://www.unixwiz.net/techtips/x86-jumps.html) có một bảng hữu ích để kiểm tra các điều kiện phân nhánh của các bước nhảy có điều kiện x86 khác nhau. – nrz