Deutsch
Assembler Forum

Neue Asm-Demo's.

 

Frank
Abbing
Hallo,

sollte der eine oder andere einen interessanten Profan-Assembler Code schreiben, werd ich den natürlich gerne mit die das XPIA Paket aufnehmen.
 
15.07.2004  
 




Michael
Dell
!!!Achtung!!! Löscht auch Schreibgeschützte Dateien!
KompilierenMarkierenSeparieren
 {$cliq}
Declare DF_Erg&,DF_FileName$
Clear DF_Erg&,DF_FileName$
DF_FileName$ = "E:EIGENE DATEIENTEST.DAT"  Bitte "TEST.DAT" erzeugen und Pfad Anpassen!!!

ASMSTART DelFile

    PARAMETERS Addr(DF_FileName$)
    Invoke exist, para1
    JZ Ende
    Invoke SetFileAttributesA, para1, 32
    Invoke SetFileAttributesA, para1, 128
    Invoke DeleteFileA, para1
    Ende:
    Return DF_erg&
    ; Rückgabewerte
    ; 1 = Datei gelöscht
    ; 0 = Datei nicht gelöscht

ASMEND

Cls
Print "Datei " + DF_FileName$ + " :  < " + Str$(DF_Erg&) + " >      (0 = nicht gelöscht/1 = gelöscht)"
WaitInput
End
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
04.10.2005  
 




Frank
Abbing
Klasse, Michael! In der MASM32.lib stecken noch jede Menge interessante und hilfreiche Funktionen....
 
04.10.2005  
 




Frank
Abbing
Hier der Aufruf zweiter Systemdialoge, Color und Font:
KompilierenMarkierenSeparieren
 {$cliq}
Declare z&,bereich#,afont&
Cls
===========================
Systemdialog Color aufrufen
===========================

AsmStart SysColor

    Parameters %hwnd,%hinstance
    invoke ColorDialog,para1,para2,0
    Return z&

AsmEnd

Print "RGB-Wert = "+Str$(z&)
==========================
Systemdialog Font aufrufen
==========================
Dim bereich#,1024
Clear bereich#

AsmStart SysFont

    Parameters %hwnd,bereich#
    invoke FontDialog,para1,para2,CF_SCREENFONTS or CF_EFFECTS

    .if eax

        invoke CreateFontIndirect,para2

    .endif

    Return afont&

AsmEnd

If afont&

    z&=@Create("Text",%hwnd,"Eine Schriftart wurde ausgewählt.",0,24,320,64)
    SetFont z&,afont&

Else

    Print "Kein Font ausgewählt."

EndIf

WaitInput
Case afont&:DeleteObject afont&
End
 
04.10.2005  
 




Michael
Dell
Listet alle vorhanden fixen Laufwerke in einer Listbox auf
Motto einfacher gehts nicht...
KompilierenMarkierenSeparieren
 {$cliq}
Declare GD_LB&,GD_Txt&
Cls
GD_LB&  = Create("SortedListBox",%HWnd,"",40,40,200,300)
GD_Txt& = Create("Text",%HWnd,"Gewählt:  ",40,360,200,20)

ASMSTART GetDrives

    PARAMETERS GD_LB&
    Invoke load_drives, para1        ; Listet alle vorhanden "fixen" Laufwerke in einer Listbox auf

ASMEND

WhileNot ((%Key = 2) Or (%MenuItem = -2))

    WaitInput
    SetText GD_Txt&,("Gewählt:  " + GetString$(GD_LB&,GetCurSel(GD_LB&)))

EndWhile

End
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
04.10.2005  
 




Michael
Dell
Datei- Kopieren & Datei- Anhängen

[box:057332201c]Achtung!!! - XPIA erzeugt nur den Source (LAST.ASM & LAST.DEF)
zum erzeugen der DLL wird MASM32v8.2 SP2 benötigt![/box:057332201c]
KompilierenMarkierenSeparieren
 {$Clq}
Declare FC_FileIn$,FC_FileOut$,FC_Erg&,FA_FileIn$,FA_FileOut$,FA_Erg&
FC_FileIn$  = "TEST1.DAT"
FC_FileOut$ = "TEST2.DAT"
FA_FileIn$  = FC_FileIn$
FA_FileOut$ = FC_FileOut$
Cls
Print ("Kopiere " + FC_FileIn$ + " nach " + FC_FileOut$ + ". Bitte Warten...")

ASMSTART fCopy

    Parameters Addr(FC_FileIn$),Addr(FC_FileOut$)
    Return FC_Erg&
    Local fHndl1  :DWORD
    Local fHndl2  :DWORD
    Local InCnt   :DWORD
    Local OutCnt  :DWORD
    Local Count   :DWORD
    Local GesCnt  :DWORD
    Local BuffAdd :DWORD
    Start:
    mov Count, 983040
    mov BuffAdd, alloc(Count)
    invoke exist, para1
    jz Ende
    invoke exist, para2
    jz Weiter1
    invoke SetFileAttributesA, para2, 32
    invoke SetFileAttributesA, para2, 128
    invoke DeleteFileA, para2
    Weiter1:
    mov GesCnt, 0
    mov fHndl1, fopen(para1)
    mov fHndl2, fcreate(para2)
    Weiter2:
    mov GesCnt, fseek(fHndl1,GesCnt,0)
    fseteof fHndl2
    mov InCnt, fread(fHndl1, BuffAdd, Count)
    mov OutCnt, fwrite(fHndl2, BuffAdd, InCnt)
    mov eax, GesCnt
    add eax, InCnt
    mov GesCnt, eax
    mov eax, OutCnt
    sub eax, Count
    jz Weiter2
    fclose fHndl1
    fclose fHndl2
    Ende:
    free BuffAdd
    Xor eax, eax

ASMEnd

Print
Print "Taste..."
WaitKey
Print ("Füge " + FC_FileIn$ + " zu " + FC_FileOut$ + " hinzu. Bitte Warten...")

ASMSTART fApp

    Parameters Addr(FA_FileIn$),Addr(FA_FileOut$)
    Return FA_Erg&
    Local fHndl1  :DWORD
    Local fHndl2  :DWORD
    Local InCnt   :DWORD
    Local OutCnt  :DWORD
    Local Count   :DWORD
    Local GesCnt  :DWORD
    Local GesCnt2 :DWORD
    Local BuffAdd :DWORD
    Start:
    mov Count, 983040
    mov BuffAdd, alloc(Count)
    invoke exist, para1
    jz Ende
    invoke exist, para2
    jz Ende
    mov GesCnt, 0
    mov GesCnt2, 0
    mov fHndl1, fopen(para1)
    mov fHndl2, fopen(para2)
    ;fseteof fHndl2
    mov GesCnt2, fseek(fHndl2,0,FILE_END)
    Weiter2:
    mov GesCnt, fseek(fHndl1,GesCnt,0)
    mov GesCnt2, fseek(fHndl2,GesCnt2,0)
    mov InCnt, fread(fHndl1, BuffAdd, Count)
    mov OutCnt, fwrite(fHndl2, BuffAdd, InCnt)
    mov eax, GesCnt
    add eax, InCnt
    mov GesCnt, eax
    mov eax, GesCnt2
    add eax, OutCnt
    mov GesCnt2, eax
    mov eax, OutCnt
    sub eax, Count
    jz Weiter2
    fclose fHndl1
    fclose fHndl2
    Ende:
    free BuffAdd
    Xor eax, eax

ASMEnd

Print
Print "Taste zum Beenden..."
WaitKey
End
Benötigte zusätzliche Includes (Pfade Anpassen!):[box:057332201c]include c:masm32includemsvcrt.inc
include c:masm32macrosmacros.asm
includelib c:masm32libmsvcrt.lib[/box:057332201c]
Korrektur am: 11.10.05
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
09.10.2005  
 



Hallo Michael,
sieht ja sehr interessant aus, dein letztes Beispiel. Die vorigen bestanden ja meist nur API-Aufrufen per Makro (invoke). Wie lange hast Du gebraucht, ASM soweit zu lernen, würde mich ja auchmal ransetzen ASM zu lernen. Bisher hab ich immer vor den ersten Erfolgen abgebrochen
 
09.10.2005  
 



ASM lernt man eigendlich an einem einzigen Tag.

Die wichtigsten Finessen hat man dann so nach einer Woche drauf.

Danach feilt man nur noch am Stil.

ASM ist absolut die einfachste Sprache - man muß halt nur Jonglieren können.

Salve.
 
09.10.2005  
 




Michael
Dell
Richtig,

is nicht soo kompliuiert wies aussieht. Mein Problem ist eher, nicht die oft logischer wirkende Syntax von Hochsprachen mit der direkteren von Assembler zu verwechseln. Am meisten lern ich aus Macros und den Sourcen für die Libs.

Hier gibts Basis- Beispiele: [...] 

Und hier die berühmte Interrupt- Liste von Ralf Brown: [...] 
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
09.10.2005  
 



@M.Dell
Nicht schon wieder , hab mir schon ein Assemblerbuch gekauft, das nur auf DOS und Interrupts eingeht. Ich habe kein DOS und ich möchte nur ASM für 32-Bit, also FLAT erlernen. Kann die Beispiele für DOS ja noch nicht mal testen.
Gibts den nichts für 32-Bit only. Nur ne Anleitung für die Adressierungsarten und die ganzen anderen Befehle
 
10.10.2005  
 




Michael
Wodrich
Assembler-Anleitung vom Guru Iczelion (einfach googlen). Da ist auch irgendwo eine Übersetzung von ihm in deutsch im Netz (ICZTUTES).

Oft helfen auch die Assembler-Foren weiter.

Schöne Grüße
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
10.10.2005  
 



@TS:

32-Bit Asm heist doch eigendlich nix weiter als das Handling von:

a) Registern
b) Speicherbereichen
b) Stack
c) Apis

Für die Registermanipulation sind Befehle wie mov add inc dec xor etc. zuständig, für die Manipulation von Speicherbereichen weist man zunächst die Adresse des Mems einem Register zu und manipuliert diesen anschließend über die [seekpos] Schreibweise, für den Stack gibts Push & Pop, und die Apis werden per Call aufgerufen nachdem man die Parameter in umgekehrter Reinfolge auf den Stack gepackt hat. (Der BackVal jeder Api landet in eax].

Das wars auch im Großen und Ganzen.

Dann gibts natürlich noch die Labels (für gotos/ jmp & Compareanweisungen) und dann kommt auch schon der highlevel-Krahm. (Macros / ifs und whiles statt cmp & cmp)

Da gibts nix groß zu lernen.

Salve.
 
10.10.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.814 Betrachtungen

Unbenanntvor 0 min.
Jens-Arne Reumschüssel02.07.2023
Jörg Sellmeyer28.05.2020
funkheld03.01.2014
Michael Borowiak31.01.2012

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie