C-Code in Assembler darstellen Part2

Gast #2201484
Lesenswert?
• ▲
▼
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
#2201490
Lesenswert?
• ▲
▼
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?
#2201494
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren