Willkommen |
|
myGully |
|
Links |
|
Forum |
|
|
|
 |
07.12.21, 21:17
|
#1
|
Anfänger
Registriert seit: Mar 2010
Beiträge: 14
Bedankt: 135
|
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...
|
|
|
12.12.21, 17:47
|
#2
|
Anfänger
Registriert seit: May 2010
Beiträge: 2
Bedankt: 1
|
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 Mitglieder sichtbar. Bitte einloggen oder neu 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
|
|
|
Folgendes Mitglied bedankte sich bei bykof:
|
|
27.12.21, 22:46
|
#3
|
Anfänger
Registriert seit: Mar 2010
Beiträge: 14
Bedankt: 135
|
Vielen Dank
|
|
|
Forumregeln
|
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren
HTML-Code ist Aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 Uhr.
().
|