Inline Assemlber - prosty if

0

Cześć. Muszę napisać pewien krótki program z użyciem inline assemlbera, niestety nie znam się na tym kompletnie. Na początek muszę wykonać prostego ifa. Nie wiem czemu ale mój kod nie działa, tzn funkcja jest wywoływana nawet gdy wartość jest inna:

#include <iostream>

void Function()
{
	std::cout << "123" << std::endl;
}

int main()
{
	_asm
	{
		mov eax, 2;
		cmp eax, 1;
		je ABC;
			
		ABC: call Function
	}

	getchar();
	return 1;
}
0

Bo program wykonuje się linijka po linijce i dojdzie do ABC niezależnie od warunku. Zrób nowego jumpa jne do etykiety na końcu, za ABC.

0

Ok, thx :D
Myślałem że etykiety działają jak funkcje w c, nie wykonają się dopóki się ich nie wywoła :)

0
#include <iostream> 
void Function(){ std::cout << "123" << std::endl; } 
int main() {
    _asm {
        mov eax, 2;
        cmp eax, 1;
        je funkcja;
		jne koniec;
 
		funkcja: 
			call Function;

		koniec: 
			xor eax, eax;
    }
    return 0;
}
0

Mam jeszcze jedno pytanie. Mianowicie mam taki kod:
jmp dword ptr[Function];
Trochę zmieniłem kod i wrzuciłem Function do klasy. Tylko pytanie jak teraz mam to wywołać?

1 użytkowników online, w tym zalogowanych: 0, gości: 1