Diskussion:Assembler-Programmierung für x86-Prozessoren/ Unterprogramme und Interrupts
Nächste Diskussion
Bearbeiten[quote]extern print erklärt dem Assembler, dass er die Programm-Marke print in einer anderen Quelldatei findet, obwohl sie in dieser Quelldatei eingeführt (definiert) wird.[/quote]
Als C/C++ Programmierer lernt man, dass die Definition einer Entitaet jene beschreibt, also nicht nur bekannt macht(Deklaration), sondern "mit Leben fuellt". Da diese Definition von "Definition" aber im Widerspruch mit der Verwendung von "(definiert)" im zitierten Satz steht, haben entweder beide Benutzungen des Begriffs "Definition" im Assembler- und C/C++ - Jargon unterschiedliche Bedeutung(was ich nicht glaube), oder aber dieser Satz ist fehlerhaft, denn die Programm-Marke print wird in mainprog nur verwendet, aber beschrieben(definiert) wird sie in sub_prog.
- Eine Kleinigkeit: "Zum Aufrufen eines Unterprogrammes dient der Befehl call. Dieser schiebt seine Aufrufadresse auf den Stack und ruft das Unterprogramm anhand des Labels auf." Ich meine gelesen zu haben, dass der call-Befehl die Adresse des NÄCHSTEN Befehls auf den Stack legt, und nicht die eigene Adresse im Codesegment. -- 84.141.240.47 01:39, 10. Sep 2006 (CEST)
Stack, stack oder stack?
BearbeitenWelches der beiden "stack" in "segment stack stack" im ersten Beispiel ist der Name des Segments? Vielleicht sollte das Segment besser "Stapel" genannt werden, dann würde das Beispiel entweder so: "segment Stapel stack", oder so: "segment stack Stapel" aussehen. -- 84.141.240.47 23:18, 9. Sep 2006 (CEST)
wo bleiben die interrupts
BearbeitenAssembler (80x86 Prozessor)-Programmierung: Unterprogramme und Interrupts lässt darauf schließen, dass Interrupts erklärt werden Ich habe die erklärung aber nicht gefunden.
- In der Tat. Allerdings gibt es m.E. zu Interrupts so viel zu sagen, dass da ein eigenes Kapitel sinnvoll wäre (Unterscheidung Hardware-Interrupt/Software-Interrupt/Prozessor-Exception – u.a. gelten da wesentlich unterschiedliche Regeln, was der Interrupt-Code machen darf bzw. muss –, Reentranz von Interrupts, das Interrupt-Flag, ...) --85.176.245.243 19:34, 26. Jun. 2007 (CEST)
Fehler im Code
BearbeitenHier ist doch ein Fehler oder?
segment stack stack resb 64h segment code ..start: mov ax, 0111h mov bx, 0222h mov cx, 0333h push ax push bx push cx pop bx pop ax pop cx mov ah, 4Ch
Da der Stack ein LIFO-Speicher ist, muss man die gesicherten Register doch in der umgekehrten Reihenfolge, also
pop cx pop bx pop ax
zurückholen. -- 87.148.144.165 20:34, 27. Mai 2011 (CEST) (Signatur nachgetragen, Thema verschoben von Jürgen)
- Bitte beachten:
- Beiträge auf Diskussionsseiten sollten mit 4 Tilden ~~~~ unterschrieben werden, damit der Zusammenhang von Frage und Antwort deutlich bleibt.
- Neue Beiträge gehören ans Ende (wir lesen ja von oben nach unten); dazu gibt es oben die Funktion Abschnitt hinzufügen .
- Es gibt unten die Vorschau-Taste. Damit kannst du gleich erkennen, wie deine Eingabe aussieht.
- Danke für die Aufmerksamkeit! -- Jürgen 21:28, 27. Mai 2011 (CEST)
- Moin, Kurzantwort Jain, prinzipiell pop't man in der umgekehrten Reihenfolge zum pushen. Aber dieses Programm macht nichts weiter als den Inhalt der Register zu tauschen und ist konsistent mit den weiteren Erklärungen, Der Autor will zeigen, wie sich nach der Pop-Operaton der Wert verändert, der Wert würde sich jedoch nicht verändern, wenn er die in der "richtigen" Reihenfolge poppen würde, da er ax, bx und cx in der zwischenzeit nicht nicht modifziert, insofern würde man nicht verstehen, was die pop-Operation genau tut. -- ThePacker 22:19, 27. Mai 2011 (CEST)