Programowanie w języku C/C++

Asm

  • 2006-04-28 14:19
  • 3 komentarze
  • 1559 odsłon
  • Oceń ten tekst jako pierwszy
asm - słowo kluczowe umożliwiające wstawienie do kodu C/C++ wstawki kodu assemblerowego.

W zależności od kompilatora słowo kluczowe asm występuje w różnych formach, np. dla Microsoft Visual C++ używa się __asm.

Przykład


(Visual C++)
DWORD Funkcja(DWORD dwWartosc)
{
   __asm
   {
      mov eax, dwWartosc
      add eax, 100
      mov dwWartosc, eax
   }
 
   return dwWartosc;
}


W przypadku problemów z użyciem wstawek assemblerowych, pomocy szukaj w dokumentacji Twojego kompilatora.

3 komentarze

PaparazziPoOperacji 2010-10-24 20:27

Jeżeli programujemy w asemblerze, to po liczbie, jakiejkolwiek, warto byłoby poinformować kompilator, w jakim systemie zapisaliśmy liczbę. Jeżeli napiszemy add eax, 100h to kompilator wie, że liczba zapisana jest w systemie szesnastkowym, jeżeli zamiast h podstawimy b - kompilator zinterpretuje to jako liczbę dwójkową, a jeżeli d - dziesiętną.

cyriel 2008-02-20 16:35

s0d:Nie przypisałeś do dwWartosc żadnej wartości, więc były tam jakiś mieci do których dodałeś 100(raczej dziesiętnie, chociaż nie jestem pewien) a potem je wyświetliłeś.

s0d 2007-05-20 16:14

hmmm. po implementacji tego kawalka kodu w tym przykladzie:

  1. include <IOStream>
  2. include <StdLib.h>

using namespace std;
 
int main(void)
{
   DWORD Funkcja(DWORD dwWartosc)
{
   __asm
   {
      mov eax, dwWartosc
      add eax, 100
      mov dwWartosc, eax
   }

   return dwWartosc;
}
   system("PAUSE");
   return 0;
}

Otrzymuje:

-858993450
czekam na wcisniecie klawisza
Aby kontynuować, naciśnij dowolny klawisz . . .

Czego to jest wina? w tym miejscu 100 jest w hex czy dziesietnie? ale to i tak nie ma wplywu na taki wynik!
Kompiluje to za pomoca VS 2k5