ASM w C++ wyswietlenie napisu, komunikacja z cmd

Dopiero zaczynam z asemblerem i mam tylko jedno pytanie czy ten kod poniżej jest dobrze zapisany jeśli nie to co trzeba by zmienić

 

Wyświetlenie napisu

int main()
{
	asm(".section .data\n"
		"LC0: .ascii \"Hello, World!\"\n"
		".section .text\n"
		"pushl %ebp\n"
		"movl $LC0, (%esp)\n"
		"call _printf\n");
}

Komunikacja z cmd

int main()
{
	asm(".section .data\n"
		"LC0: .ascii \"pause\"\n"
		".section .text\n"
		"movl $LC0, (%esp)\n"
		"call _system\n"
}

Najpierw poćwicz sobie sam Asembler, czym jest jak działa i po co on jest itp…

A jak już opanujesz jego podstawy to zacznij nauke C/C++ a jak umisz go to

dopiero zacznij wstawki Asemblera robić w C/C++

 

Tu masz materiały:

Kurs C++ http://cpp0x.pl/kursy/Kurs-C++/1

kurs ASM http://assembler.ryszki.prv.pl/

Wstawki:

http://informatyka.wroc.pl/node/382

http://students.mimuw.edu.pl/SO/Projekt03-04/temat2-g6/inline.html

 

 

A co do kodu, skompiluj i zobacz czy Ci wywali błedy.  A wywali… wraz z ich opisem.

Nie wywala żadnego błędu tylko byłem niepewny czy wszystko jest OK

a działa po skompilowaniu??

Działa :slight_smile:

nolife więcej wiary w swoje umięjetności! Człowiek uczy sie na swoich błedach…

Sposób robienia wstawek assemblerowych jest różny na różnych kompilatorach. Chyba nie ma uniwersalnej metody. Taka mała uwaga,

Właśnie to zauważyłem, patrzyłem na przykłady jak pisać wstawki i po ich skompilowaniu i uruchomieniu wyskakiwał komunikat że program został zatrzymany. Ale sprawdzałem jak będzie wyglądał kod asemblera generowany z gcc i wpisałem go jako wstawkę i już działał