MASM/MASM32 - 16Bit/32Bit - Grundlagenfragen

Offizieller deutscher Support für das MASM32 SDK. Download FAQ

Moderatoren: crack, Krüsty, Marwin

Selbstchecks anstatt Fragen nützlich?

Umfrage endete am Mittwoch 27. Dezember 2006, 16:15

Ja
2
100%
Nein
0
Keine Stimmen
 
Abstimmungen insgesamt : 2

MASM/MASM32 - 16Bit/32Bit - Grundlagenfragen

Beitragvon z-boson » Mittwoch 13. Dezember 2006, 16:15

Hallo.
Ich bin "newbee" in ASM, bin aber schon C/C++ average, hoffe ich doch.
Das aber tut nichst zur Sache.
Ich wollte hier lediglich mein Verständniss zwischen den Unterschieden/bzw interfaces von MASM und MASM32 widergeben und daraufhin einige Kommentare hören, zB. ob das von mir richtig geraffdt wurde.
Ok.
.
1)
MASM32 bringt die ml anstatt "MASM" als Kommandozeilentool mit, die nur über die Umgebungsparameterumstellung von jedem Ordner aus aufzurufen ist?
-
2)
Rainer Backers erster Code braucht die .model und .386 Angabe, um zu laufen und nicht "symbol type conflict" in der ersten mov anweisung auszugeben?
-
3)
Der linker des MASM32 packages ist nicht geeignet für MASM 16 bitting.
-
4)
Wieso nicht?
Wenn ich doch LEDIGLICH nur die anderen Register Sprich exy nutzen will, zusätzlich zu ah, al, warum muss ich, wenn ich doch schon ne 32 ( in meinem Fall 64) Bit Maschine habe, nur auf 16 Bit Regs zugreifen?
-
5)
Heisst invalid fixup type 0x0001, dass eine nachträgliche Verbesserung im Code nicht mit einer bereits erstellten .obj geupdated/überschrieben werden kann?
-
6)
Kann doch nicht sein, das, bloss weil der MASM32 32 heisst, LEDIGLICH für WINDOWS-APPS optimiert wurde, der muss doch auch die übrigen 32 bit ansprechen können und damit im .486 Mode betrieben werden können.
-
7)
Ich lade mir den neuen Linker runter, passe die make.bat an, dann läuft das so wie gewollt, auch mit Zugriff auf die übrigen 16 Registerbits?!?!
---
--
Hoffe, das wird nicht als Fragenflooding ;-) gewertet, ist nur ne Art selbstcheck, der hier nun frei bombadiert werden darf.
-
Vielen Dank im Voraus.
...we have to create righteous thoughts for righteous words and righteous actions.
z-boson
Newbie
 
Beiträge: 3
Registriert: Mittwoch 13. Dezember 2006, 14:13

Re: MASM/MASM32 - 16Bit/32Bit - Grundlagenfragen

Beitragvon crack » Donnerstag 14. Dezember 2006, 17:44

z-boson hat geschrieben:Hallo.
Ich bin "newbee" in ASM, bin aber schon C/C++ average, hoffe ich doch.
Das aber tut nichst zur Sache.
Ich wollte hier lediglich mein Verständniss zwischen den Unterschieden/bzw interfaces von MASM und MASM32 widergeben und daraufhin einige Kommentare hören, zB. ob das von mir richtig geraffdt wurde.
Ok.
.
1)
MASM32 bringt die ml anstatt "MASM" als Kommandozeilentool mit, die nur über die Umgebungsparameterumstellung von jedem Ordner aus aufzurufen ist?
-

also 'ml.exe' ist der eigentliche Kompiler des MASM32 Packs, und 'ml.exe' wird auch über Kommandozeilen Optionen gesteuert, in dem Umgebungsparameterblock muss 'Set Path' auf den Ordner Zeigen der ml.exe enthält, also ist deine Annahme soweit richtig
2)
Rainer Backers erster Code braucht die .model und .386 Angabe, um zu laufen und nicht "symbol type conflict" in der ersten mov anweisung auszugeben?

die '.model' Angabe teilt MASM die Art der zu erstellenden Datei mit, also Speicherverwendung, Protected Mode oder Real Mode
die '.386' Angabe sagt MASM was für ein Prozessorbefehlssatz zur Verfügung steht.
Ja, 'Symbol Type Conflict' ist möglicherweise eine Fehlermeldung die Ausgegeben wird wenn diese 'Pseudoopcodes' fehlen.
-
3)
Der linker des MASM32 packages ist nicht geeignet für MASM 16 bitting.
-

Richtig!
4)
Wieso nicht?
Wenn ich doch LEDIGLICH nur die anderen Register Sprich exy nutzen will, zusätzlich zu ah, al, warum muss ich, wenn ich doch schon ne 32 ( in meinem Fall 64) Bit Maschine habe, nur auf 16 Bit Regs zugreifen?
-

natürlich kannst Du auch innerhalb eines 32 Bit Programms 16 oder 8 Bit Befehlssatz nutzen. Jedoch umgangssprachlich sind 16 Bit Programme vom Typ '.exe' oder '.com' Programme die unter MS DOS laufen bzw. unter Win2000/XP in der DosBox, der Unterschied liegt ausser in der anderen Speichernutzung auch in der Betriebssystem Schnittstelle: Win32 Programmen nutzen bis auf wenige Ausnahmen (LowLevel Zuriff auf den Festplattencontroller), die Windows API, wärend DOS oder '16 Bit' Programme idr die Interupt 21h und die Bios Interupt Schnittstellen benutzen.
5)
Heisst invalid fixup type 0x0001, dass eine nachträgliche Verbesserung im Code nicht mit einer bereits erstellten .obj geupdated/überschrieben werden kann?
-

Gute Frage, 'Invalid Fixup' ist eine Ausgabe des Linkers und besagt das ein Programmteil nich 'relocatiert' werden kann. Alle .obj fangen mit einem Addressoffset von Null an, und der Relocator fügt zum Zusammensetzen der Teile einen sogenannten 'Delta Offset' hinzu damit alle Speicheraddressen nacher am richtigen Platz liegen.
6)
Kann doch nicht sein, das, bloss weil der MASM32 32 heisst, LEDIGLICH für WINDOWS-APPS optimiert wurde, der muss doch auch die übrigen 32 bit ansprechen können und damit im .486 Mode betrieben werden können.
-

welche übrigen 32 Bit? ein Pentium Processor hat zwei 32 Bit 'Pipelines'
, das bedeutet aber nicht das man diese zur freien Benutzung hat, diese werden zwecks Geschwindigkeitsoptimierung vom Befehlsdecoder des Prozessors verwendet, meines Wissens nach hat das Anwendungsprogramm darauf keinen Einfluss
7)
Ich lade mir den neuen Linker runter, passe die make.bat an, dann läuft das so wie gewollt, auch mit Zugriff auf die übrigen 16 Registerbits?!?!
---
--

Dann kannst Du Programme für MS Dos Erstellen, den Zugriff auf die 'unteren' 16 Bit eines 32 Bit Registers hast Du sowieso (siehe oben).

Hoffe, das wird nicht als Fragenflooding ;-) gewertet, ist nur ne Art selbstcheck, der hier nun frei bombadiert werden darf.
-
Vielen Dank im Voraus.

No Prob. was wäre denn ein Forum wenn man keine Fragen stellen dürfte ;-)
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Danke bisher.

Beitragvon z-boson » Freitag 15. Dezember 2006, 13:27

Also, sehr nett von Dir.
Nur noch einige Anmerkungen:
1)
Stimmt das , dass WIN2 K und WINXP es nicht erlauben, das BS zu untergraben und per assembler und BIOS interrupts direkt die Hardware zu adressieren und zu kontrollieren?
-
2) Ist der Int21 in meinen Worten richtig widergegeben?:
OS-Interrupt zur Bildschirmausgabe auf einer Konsole.
--
3) Haste n paar Links, wo ich studieren könnte, wie ich per Assembler DIREKT über das BIOS die Hardware manipuliere?!?!?
-
4) Wenn ich die unteren 16 bit immer ansprechen darf, ( um was hineinzukopieren oder was draus zu lesen, wie spreche ich die anderen 16 an ( bei mir 48 )?
Nicht mit eax ax, oder wie auch immer?!?!?!?
...we have to create righteous thoughts for righteous words and righteous actions.
z-boson
Newbie
 
Beiträge: 3
Registriert: Mittwoch 13. Dezember 2006, 14:13

Re: Danke bisher.

Beitragvon crack » Freitag 15. Dezember 2006, 16:38

z-boson hat geschrieben:Also, sehr nett von Dir.
Nur noch einige Anmerkungen:
1)
Stimmt das , dass WIN2 K und WINXP es nicht erlauben, das BS zu untergraben und per assembler und BIOS interrupts direkt die Hardware zu adressieren und zu kontrollieren?
-

Jein, bestimmte Hardware Zugriffe sind schlicht und einfach nicht mehr möglich, einige können unter Win32 (Konsole) benutzt werden, und Zugriffe auf die Festplatte sind durch eine Klasse neuer Int21h Funktion 44 Aufrufe ersetzt worden, da die alten DOS Funktionen natürlich kein NTFS Unterstützen, aber auch Win32 benötigt für verschiedene Aktionen einen Low Level Zugriff auf die Festplatte.
2) Ist der Int21 in meinen Worten richtig widergegeben?:
OS-Interrupt zur Bildschirmausgabe auf einer Konsole.
--

Der Interupt 21h ist der Multifunktions Interupt von MS DOS, also quasi der Vorgänger der Windows API, nähere Infos gibt dir 'Ralph Browns Interupt List'.
Int21h enthält u.A.: Konsolen Aus- und Eingabe, Datenträgerzugriff, Ein- / Ausgabe auf Peripheriegeräte und vieles mehr.
3) Haste n paar Links, wo ich studieren könnte, wie ich per Assembler DIREKT über das BIOS die Hardware manipuliere?!?!?
-

Ralph Browns Interupt List, Iczelions Tutorials, die Bücher und Internetpräsenz von Joachim Rohde, die Win32SDK auf der Codingcrew Hauptseite und Microsoft MSDN.

4) Wenn ich die unteren 16 bit immer ansprechen darf, ( um was hineinzukopieren oder was draus zu lesen, wie spreche ich die anderen 16 an ( bei mir 48 )?
Nicht mit eax ax, oder wie auch immer?!?!?!?


mit Verschiebebefehlen:
Code: Alles auswählen
...
push eax ;eax gesichert
shr eax,16 ;jetzt ist das High Word von EAX in AX
... ;hier kannst Du mit dem High Word von EAX (jetzt in AX) arbeiten
pop eax ;ursprünglichen Wert zurückholen
...


Oder mit 'WordSwap' Befehlen, für 64 Bit Maschinen muss erstmal der Assembler geschrieben werden, der Befehle wie 'DoubleWordSwap' unterstützt :wink:

Hoffe geholfen zu haben....

[EDIT: Korrektur, Ergänzung]
mit freundlichen grüssen,
with best regards,

crack
Benutzeravatar
crack
Administrator
 
Beiträge: 280
Registriert: Dienstag 21. Dezember 2004, 15:02
Wohnort: 53783 Eitorf

Aha, ASM speziell für 64er muss erst

Beitragvon z-boson » Montag 18. Dezember 2006, 11:08

noch gupdated werden?
Wie dem auch sei, Danke bisher.
Ich habe erstmal, genug Info.
...we have to create righteous thoughts for righteous words and righteous actions.
z-boson
Newbie
 
Beiträge: 3
Registriert: Mittwoch 13. Dezember 2006, 14:13


Zurück zu MASM32-Package

 


  • { RELATED_TOPICS }
    Antworten
    Zugriffe
    Letzter Beitrag
  • MASM mit MASM32 Compilieren?
    von Phatano » Freitag 4. November 2005, 01:42
    4 Antworten
    2512 Zugriffe
    Letzter Beitrag von crack Neuester Beitrag
    Dienstag 7. Februar 2006, 10:59
  • masm und gcc
    von Gast » Dienstag 2. März 2004, 22:23
    1 Antworten
    954 Zugriffe
    Letzter Beitrag von Marwin Neuester Beitrag
    Mittwoch 3. März 2004, 14:10
  • Handbuch zu MASM?
    von Gast » Samstag 17. Mai 2003, 23:20
    6 Antworten
    1690 Zugriffe
    Letzter Beitrag von CDW Neuester Beitrag
    Freitag 24. Oktober 2003, 18:18
  • MASM-Neuling...
    von Gast » Sonntag 10. August 2003, 19:15
    7 Antworten
    1321 Zugriffe
    Letzter Beitrag von Marwin Neuester Beitrag
    Freitag 10. Oktober 2003, 16:25
  • Masm deinstallieren
    von Gast » Samstag 1. Mai 2004, 12:15
    1 Antworten
    1117 Zugriffe
    Letzter Beitrag von Marwin Neuester Beitrag
    Samstag 1. Mai 2004, 13:00

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder

cron