アセンブラ命令のjle の使い方

jle を確かめてみる

jleというのはJump if less or equal (より小さいか等しい場合はジャンプ)ということで、二つの値を cmp で比較したものに対するジャンプ命令です。ジャンプするというのは分かるのですが、どういう条件だとジャンプするのか分からなかったので実験してみました。

アセンブルコンパイルの仕方は次の通りです。生成される実行コードの名前は jle.exe になりました。

> nasmw -f win32 jle.asm
> cl jle.obj jle_main.c

実験の結果は jle() = -1 と出たので、

cmp reg01, reg02

の結果が reg01 ≦ reg02 だとジャンプするようです。

jle.asm

	section .text
	global _jle
_jle:
	mov	eax, 1
	mov	ebx, 2
	cmp	eax, ebx
	jle	tag
	mov	eax, -2
	ret

tag:
	mov	eax, -1
	ret

jle_main.c

#include <stdio.h>

int jle(void);
int main(void)
{
	printf("jle() = %d\n", jle());
}