masam 32 auf 64 bit betriebsystem?



  • kann masm32 auf einem 64bit betriebsystem funktionieren?



  • Ich tippe auf nein. Weil kommerziell und wegen 32 in der Bezeichnung...



  • Natürlich kann man das (nicht kommerzielle!) masm32-SDK auch auf allen 64 Bit Windows versionen benutzen, genau so wie der mitgelieferte Assembler (masm).



  • also beim 286er prozessor haben die register ja alle blos 16bits zB. das AX register.
    und dann kam die erweiterung vom 386er mit 32bit z.B EAX.

    Aber ein 286er programm sollte ich ja schon auf dem 386er übertragen können da das AX register ja auch existirt und EAX ja blos eine erweiterung ist.(umgekehrt natürllich nicht) oder?? oder gibt es sonst noch irgendwelche unterschiede beim programmieren die man beachten muss?

    ich habe hier ein buch ause dem Jahre 2006 welches sich legindlich mit den rigister bis 16bit befast und diese programme die da auf der CD sind als beispiel sollte ich dann ja schon zum laufen kriegen. oder?? (ich habe 64 bit)

    und wenn ich programme schreibe die blos bis 32 bit benötigen dann sollte das auf dem masm32 gehen?



  • **
    falls meine obigen vermutugen stimmen dann kapiere ich nicht weshalb das hier nicht funktioniert**

    also bei meinem buch aus dem Jahre 2006 habe ich das hello world beispiel in mein masm32 editor eingetipt (ich habe ein 64 bit betriebsystem)

    **hier mein code:
    **
    `.MODEL Small

    .STACK 100h

    .DATA

    Meldung DB "Hallo Welt$"

    .CODE

    Start: mov ax,@data

    mov ds,ax

    mov dx,OFFSET Meldung

    mov ah,09h

    int 21h

    mov ah,4Ch

    int 21h

    END Start`

    hier die meldung wenn ich auf assemble und link klicke:

    C:\assembler\hallo"
    Microsoft (R) Macro Assembler Version 6.14.8444
    Copyright (C) Microsoft Corp 1981-1997. All rights reserved.

    Assembling: C:\assembler\hallo.asm
    C:\assembler\hallo.asm(6) : error A2006: undefined symbol : DGROUP
    C:\assembler\hallo.asm(13) : warning A4023: with /coff switch, leading underscore required for start address : Start
    _
    Assembly Error
    Drücken Sie eine beliebige Taste . . .

    **
    hier die meldung wenn ich auf assemble und dann auf link klicke (sollte ja eigentlich kein unterschied machen doch es kommt eine andere meldung)**

    Microsoft (R) Incremental Linker Version 5.12.8078
    Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

    LINK : fatal error LNK1181: cannot open input file "C:\assembler\hallo.obj"
    Datenträger in Laufwerk C: ist Betriebsystem
    Volumeseriennummer: 08EE-4BF4

    Verzeichnis von C:\assembler

    15.05.2010 21:06 173 hallo.asm
    1 Datei(en), 173 Bytes
    0 Verzeichnis(se), 2'855'124'992 Bytes frei



  • Das ist 16bit Code. Der funktioniert unter einem 64bit Windows nicht mehr.



  • Was muss ich dann am code ändern? Ich meine das was ein 16 bit prozessor kann kann ein 64bit ja auch?? also weshalb geht das dann nicht? Er hat in den registern einfach mehr speicher zu verfügung oder??



  • Wenn der Prozessor im long mode (64Bit) läuft, gibt es keine unterstüzung für 16 bit code. Hier muss du dann auf einen Emulator wie z.B. DOSBox zurückgreifen.
    Zudem brauchst du eine ander Befehlszeile für den Assembler und den Linker (link16.exe !!!) -> Hier findest du eine batch, die dir 16 Bit Programme erstellt.

    BTW: dein tolles Buch aus dem Jahre 2006 kannst du getrost in den Müll werfen 😃



  • Vielen Dank für die schnellen Antworten

    Ja mein tolles Buch aus dem Jahre 2006 war das einzige Buch welches ich in der Stadbibliothek gefunden habe 🙂

    Vieleicht kennt ja jemand ein gutes Buch über assembler aus dem Jahre 2010 😃
    oder 2009 wäre auch nich schlecht



  • äm und wie ist es eigentlich mit 32bit code auf 64bit betriebsystem?



  • 32Bit-Programme lassen sich im 64Bit-Modus ausfuehren.
    Sollte dir eigentlich schon aufgefallen sein. Es gibt schliesslich noch immer nicht all zu viele native 64Bit-Programme. 😉

    Ich hoffe, dir ist zudem die Bedeutung des Unterschieds zwischen Betriebssystemen bewusst?
    Was du da oben gepostet hast, war zB. ein 16Bit DOS-Programm (der Code enthaelt Systemaufrufe an die DOS-API). DOS-Programme laufen so oder so nicht mehr in 64Bit-Windows-Versionen. Genau so wenig wie zB. Linux-Programme. Dh. auch ein 32Bit-DOS-Programm wird nicht laufen. Fuer DOS-Programme wirst du also auf jeden Fall einen externen Emulator wie die DOS-Box brauchen.

    Wenn du nativ lauffaehige Programme schreiben willst, muessen das schon 32- oder 64Bit Windows-Programme sein, dh. Windows exe-Dateien, die Systemaufrufe ueber die WinAPI machen.


Anmelden zum Antworten