Wie funktioniert die assembler-Prozess "org 100h" - Richtlinie?
Ich wissen, was diese Richtlinie tun. Wie weiß ich, Programm-loader nicht sehen, diese Richtlinie so, wie assembler verarbeiten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es wird die aktuelle Adresse bei der Montage werden 100h. Das ist alles, es ist. Eine einfache Zuweisung.
Ausarbeitung:
In der Richtlinie nicht kontrollieren, wo in dem Sie das Ergebnis der folgenden Anweisungen platziert werden, sondern wo die Anweisungen platziert werden würde, nachdem er in den Speicher geladen.
"org <100h>" weist die compiler mit dem zu sein, runtime-Informationen auswerten-Adressen, als binäre Bild wird geladen mit einem offset (und die ersten 100h bytes, die möglicherweise verwendet werden, für die PSP etc. in Ihrem Kontext)
Diese kommt in der hand, um Zugriff auf alle Daten im gleichen segment (in der Regel, wenn DS=CS, vor allem für com-Dateien, wenn "Sie wissen nichts, außer Ihren CS"), oder wenn Sie einen JMP zu den absoluten offset in seltenen Fällen.
In anderen Worten, es macht alle weiteren Etiketten in einem segment zu berücksichtigen, die aus den spezifischen Versatz: gerade.
jcc
und in der Nähe vonjmp
Anweisungen sind ein schlechtes Beispiel, denn die sind immer relativ (und position-unabhängig). Ein besseres Beispiel wäremov ax, [my_word]
, wo die Adressierung wird mit einem disp16 mit einer absoluten Adresse (relativ zum DS-segment base).org 100h
tut. nasm.us/doc/nasmdoc7.html#section-7.1.1 (NASM nicht lassen, verwenden Sie ORG zurück zu gehen und überschreiben einige zuvor montierte Ausgabe.)Meist Programme, die in Windows geladen es startet 100
Also, wenn wir schrieben org 100h sagt es im run-time-compiler, um Daten zu speichern, ab 100 .ich.e wenn u verwenden 60h oder 70h
Compiler erzeugen wird, die Fehler der Daten vorhanden sein können, bei 60 oder Ihrem Standort
.com
Programme geladen werden, um dort auf das offset relativ zum DS-segment base). Windows-Programme geladen sind, bei viel höheren Adressen. Und Nein,org 100h
nicht sagen, den assembler, wo um die Daten zu speichern, es sagt dem assembler, welche Adresse es wird geladen, so kann es emittieren korrekten absoluten Adressen.