myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   MAL bzw. Mic1 (https://mygully.com/showthread.php?t=6582325)

mbmb 07.12.21 21:17

MAL bzw. Mic1
 
Hallo.

Ich hätte eine Frage zu einem Code-Problem. es geht um integer Division mit Rest.
Wie könnte ich diesen Algorithmus in Assembler umwandeln? (Mic1)


Q := 0; R := N
while R ≥ D do
Q := Q + 1
R := R − D
end
return (Q, R)

Speziell dieses While übersteigt meine Fähigkeiten...

bykof 12.12.21 17:47

Wenn du etwas C kannst, dann nimm doch einfach diese Seite hier.
C wird ja immer in Assembler kompiliert, daher einfach eine "Abstraktionsschicht" drueber nutzen: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]

Wuerde dann so aussehen:

C Code:
int main() {
int n = 0;
int d = 0;
int q = 0;
int r = n;

while(r >= d) {
q = q + 1;
r = r - d;
}
}

Assembler Code:
main:
PUSH %BP
MOV %SP, %BP
@main_body:
SUB %SP, $4, %SP
MOV $0, -4(%BP)
SUB %SP, $4, %SP
MOV $0, -8(%BP)
SUB %SP, $4, %SP
MOV $0, -12(%BP)
SUB %SP, $4, %SP
MOV -4(%BP), -16(%BP)
@while0:
CMP -16(%BP), -8(%BP)
JLT @false0
@true0:
ADD -12(%BP), $1, %0
MOV %0, -12(%BP)
SUB -16(%BP), -8(%BP), %0
MOV %0, -16(%BP)
JMP @while0
@false0:
@exit0:
@main_exit:
MOV %BP, %SP
POP %BP
RET

mbmb 27.12.21 22:46

Vielen Dank


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.