nolife
(G847308)
11 Kwiecień 2015 10:18
#1
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"
}
fedora24x
(fedora24x)
11 Kwiecień 2015 10:40
#2
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.
nolife
(G847308)
11 Kwiecień 2015 12:24
#3
Nie wywala żadnego błędu tylko byłem niepewny czy wszystko jest OK
fedora24x
(fedora24x)
11 Kwiecień 2015 12:34
#4
a działa po skompilowaniu??
fedora24x
(fedora24x)
11 Kwiecień 2015 18:39
#6
nolife więcej wiary w swoje umięjetności! Człowiek uczy sie na swoich błedach…
nintyfan
(nintyfan)
12 Kwiecień 2015 05:54
#7
Sposób robienia wstawek assemblerowych jest różny na różnych kompilatorach. Chyba nie ma uniwersalnej metody. Taka mała uwaga,
nolife
(G847308)
12 Kwiecień 2015 08:42
#8
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ł