Hallo, ich bin neu hier und versuche mich grad ein wenig in Assembler zu programmieren. Hier der Part2 der vorhins nur als Bild ging:) ich danke euch 1. folgende Aufgabe den C-Code in Assembler zu schreiben. int a=1024; int b=0; for(b=1; a>1,b++) (a=a/2, ) in Assembler: -- int a=1024, b=0 -- mov dword ptr[a], 1024 // das ptr hatten wir in der schule so mov dword ptr(b), 0 -- for(b=1; a>1,b++)-- mov dwort ptr(b),1 jmp mov eax, dword ptr[a] add eax, 1 mov dword ptr --a=a/2-- mow eax, dword ptr[a] div eax/2 -- Ergebnis a --- mov dword, ptr[a], eax ende: nop nop
Freddi schrieb: > -- for(b=1; a>1,b++)-- > mov dwort ptr(b),1 > jmp wo ist die Abfrage, ob a noch größer als 0 ist? > mov eax, dword ptr[a] > add eax, 1 > mov dword ptr im C code steht aber, dass b inkrementiert werden soll. > > --a=a/2-- > mow eax, dword ptr[a] > div eax/2 > -- Ergebnis a --- > mov dword, ptr[a], eax > > ende: nop nop und wo formst du da jetzt die Schleife?
Tipp: Wenn du so etwas umzusetzen hast, dann lös erst mal die C Anweisungen in einem Ablaufdiagramm auf aus int a=1024; int b=0; for(b=1; a>1,b++) (a=a/2, ) wird a = 1024 b = 0 b = 1 Nein +-> a > 1 ? ---------------> Ende | | Ja | v | a = a / 2 | | | b++ | | +-----+ Dann hast du schon einen viel besseren Plan, was du eigentlich in Assembler realisiern sollst.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.