asembler w c++

0

tak wyglada kod:
DWORD a,b;
__asm mov a,b ;

i nie działa próbowąłem też z {} też nie działa pisze improper operand type

mam ms visual c++ 7.0

deus
  • Rejestracja:prawie 21 lat
  • Ostatnio:ponad 12 lat
0

Nie możesz przenosić bezpośrednio jednej 'zawartości pamięci' do innej. trzeba to zrobic pośrednio; piszę z głowy, więc:
mov eax, [a]
mov [b], eax

albo:

push [a]
pop [b]


I nie udawaj, że rozumiesz.
0

dzieki teraz działa

0

Tez mam problem z assemblerem.
Chce sprawdzic stan portu lpt i w tym celu wpisuje wstawke assemblerowa. W Dev-cpp system zamieszczania kodu asma jest dla mnie co najmniej dziwny.

Kopiuj
__asm("mov %dx,378");
__asm("in %al,%dx");

Pierwsza linijka dziala, ale druga juz nie. "Suffix or operands invalid for 'in'." Dokumentacje Dev-cpp traktujace o asmie, z ktorymi sie spotkalem, nie zawieraly ani slowa o komendzie 'in'. Jak prawidlowo zapisac ten kod?

flabra
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 12 lat
0

poczytać o składni AT&T


Linuksa, czy innego Uniksa, można opisać za pomocą logiki boolowskiej a nie za pomocą prawdopodobieństwa. 'System szesnastkowy jest wspaniały! W skali od 1 do 10 daję mu E' extreme safety for Ubuntu:
sudo echo -e 'Defaults targetpw\nDefaults timestamp_timeout=0' >> /etc/sudoers
0

Byc moze instrukcja "in" nie jest obslugiwana (rozkaz jest zapisany poprawnie) z tego wzgledu ze jest to instrukcja do operacji na portach. A nawet gdyby udalo ci sie to skompilowac nie bedzie dzialac pod xp/nt (prog sie wysypie - niedozwolona instrukcja). W tych systemach dostep do portow nie jest mozliwy (ale w 9x jest).

0

wlasnie korzystam z w98. jak mozna sie dostac do portow przy uzyciu dev-cpp? kiedy probowalem outport, outp i outportb wyskakiwaly mi jakies bledy wewnatrz include'ow. dlatego probowalem asma, ale tez nie daje rady.

SA
  • Rejestracja:około 21 lat
  • Ostatnio:ponad 9 lat
  • Postów:513
0

są gotowe funkcje do i/o w msvcrt.dll.
Nie jestem za dobry w C i nie potrafię tego zlinkować w devie:

Kopiuj
extern int __cdecl _inp(int port);
extern void __cdecl _outp(int port, int bajt);
extern void Sleep(int ms);

int main()
{
//_inp(888);
for (int a=0; a<25; a++)
    {
    _outp(888,255);
    Sleep(200);
    _outp(888,0);
    Sleep(200);
    }
return 0;
}

so, podłączona dioda do lpt powinna sobie migać, ale dev jest taki uparty że nie da się napisać czegoś w stylu #use <libmsvcrt.a>

0

wpisalem ten kod, zalaczylem biblioteke msvcrt (w opcjach projektu trzeba wpisac "-lmsvcrt"), ale i tak wyskakuje blad przy linkowaniu. w borlandowym C inporty i outporty pieknie dzialaja. dev-cpp odbiera nadzieje :]

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.