unterschied ah und al
-
Guten Abend,
ich bin etwas neu in Assembling und musste mir ja schon die Register reinziehen. Darunter ist ja ax ein Register mit 16 Bit, dieses Register kann man in al und ah "splitten" die jeweils 8 Bit enthalten die bei al von 0-7 gehen und bei ah von 8-15. Nun habe ich eine Frage bei folgendem Code :
Masm:org 100h START: mov ah, 09h mov dx, offset HelloWorld INT 21h ENDE: mov ah,4ch INT 21h HelloWorld db 'Hello World !!','$' END STARTIch denke mal ihr wisst alle was dieses Programm macht, es gibt Hello World !! auf den Bildschirm aus. Soweit so gut hab das alles verstanden. 09h ist für die Print-Funktion zuständig, damit wir also Hello World !! schreiben können. Aber wieso muss 09h in das ah Register ? Wieso kann es nicht auch in al ? Immerhin sind doch eig. beide das gleiche, sie gehören zu ax und haben beide die gleiche Anzahl an Bit. Kann mir also jemand die Frage beantworten warum 09h oder auch 4ch zum beenden des Programms in ah muss und man sie nicht auch einfach in al machen kann?
Mit freundlichen Grüßen : FreakY
-
Du kannst das reinschreiben, wo du willst, die DOS-API liest dann deine Gedanken und führt die Funktion aus, die du haben willst

-
Naja das scheint so nicht ganz zu stimmen, denn wenn ich 09h in al ablege schreibt er nichts.
-
Hast du etwa vergessen, vorher ein schwarzes Huhn zu opfern? Sonst kann die Voodoo-Magie ja nicht funktionieren ...
-
Gut kannste mir auch ohne verarschen weiterhelfen?
-
Wenn du mir erklärst, woher der Rechner wissen soll, dass du die Nummer dieses mal ins AL statt ins AH-Register geschrieben hast, gerne.
-
FreakY<3Cpp schrieb:
Immerhin sind doch eig. beide das gleiche, sie gehören zu ax und haben beide die gleiche Anzahl an Bit.
jein, in al sind die unteren und in ah die oberen 8 bits des 16-bittigen registers ax. beide sind für sich betrachtet unabhängige 8-bit register, die aber über ax (dann als 16-bit register) gemeinsam angesprochen werden können.

-
Warum net gleich so Bashar ? Also ist es einfach standard da rein zu schreiben. Dann hätte die Sache sich doch geregelt...
-
FreakY<3Cpp schrieb:
Also ist es einfach standard da rein zu schreiben. Dann hätte die Sache sich doch geregelt...
Nein, das ist nicht Standard.
Das ist nur eine Vorgabe der DOS-API.
-
Christoph schrieb:
FreakY<3Cpp schrieb:
Also ist es einfach standard da rein zu schreiben. Dann hätte die Sache sich doch geregelt...
Nein, das ist nicht Standard.
Das ist nur eine Vorgabe der DOS-API.Eben. Die Dos-API sieht vor, das du in's ah Register den Wert der Funktion einträgst.
-
FreakY<3Cpp schrieb:
Warum net gleich so Bashar ? Also ist es einfach standard da rein zu schreiben. Dann hätte die Sache sich doch geregelt...
bla. es ist nun mal so festgelegt, dass für diese funktion der wert in ah stehen muss. was gibts da zu eklären? fragst du auch mal deinen apotheker, wieso deine pickelcreme nur funktioniert wenn du sie dir ins gesicht schmierst statt auf die schuhe?
-
Es ist zwar nicht eben uebermaessig lieb und nett, eine nicht uebermaessig ... tiefgruendige Frage mit einer sarkastischen Gegenfrage zu beantworten, aber die ganze Aufregung wirklich nicht wert. Nimm die Tatsache, dass du diesen Sarkassmus nicht erkannt hast, halt einfach als Denkanstoss, vielleicht noch weiter zu lernen, bevor du Vermutungen/Schluesse wie in deinem Ausgangspost aufstellst.
Weiter:
Dass die DOS-API fuer ihre Funktionen eine definierte Ordnung hat, was in welchem Register zu stehen hat, aehnlich wie die Win-API fuer ihre Funktionen eine definierte Ordnung hat, wie viele und in welcher Reihenfolge Parameter ueber den Stack uebergeben werden, wurde gesagt.
Dass es sehr wohl einen Unterschied macht, ob du etwas in ah oder al speicherst (oder bx oder dx, etc.), da al und ah zwei verschiedene Register sind, wurde auch gesagt.
... ich denke, damit ist dann jetzt zu diesem Thema alles gesagt.