Wer traut sich an Assembler???

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Loo-2004, 12. Dezember 2005 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. Dezember 2005
    Hat schon jemand Assembler "gecodet"?

    ich glaub zwar nich^^ aber einfach mal fragen...
    würdet ihr euch überhaupt trauen Assembler anzufassen?


    ich hatte noch nie den drang von meiner normaln proggi sprache wegzugehn...

    +respekt & 10er an alle assemblerer+



    vb & c++ rulez [un java au..aber nich so arg]
     
  2. 12. Dezember 2005
    ich hatte schon ne buch in der hand...
    aber dann...
    naja zum cracken reicht mein wissen manchmal...^^
    PHP & C++ rockz!
     
  3. 12. Dezember 2005
    Wir habens letztens in der Schule durchgenommen .

    Aber nur ne ampelschaltung etc gemacht. ISt ganz lustig
    PHP rockz natürlich mehr
     
  4. 12. Dezember 2005
    wenn ich mir mal so ein quelltext angucke von einer datei

    ähnelt das irgendwie mit php und batch find ich ^^ und vll noch c++ aber c++ und php ist ja ähnlich ^^
     
  5. 12. Dezember 2005
    Code:
    __asm
    {
    mov eax,12ff30h;
    mov ebp,eax;
    mov esp,eax;
    sub eax,8;
    push 00657865h; //0exe
    push 2E646D63h; //.dmc
    push 0h;
    push eax;
    mov eax,77e699c1h; //winexec addr
    call eax;
    }
    
    Also für mich hat das relativ wenig Ähnlichkeiten mit C++ oder sogar php.
    //PS für alle die sich über den Syntax wundern.. ist gcc-Inlineasm.
     
  6. 12. Dezember 2005
    hab auch nicht gesagt alle ^^
     
  7. 12. Dezember 2005
    also ausser irgendwelche progs die dann evtl. über console angesteuert werden kann assembler doch 0 oder irre ich mich

    ich glaub kein mensch kann mit assembler was richtiges coden womit sich heutzutage geld machen lässt, für sowas gibts (leider) c++, ...

    nya php owns, IT OWNS! ;D

    wir hatten mal über die schule was mit assembler gecoded
    aber das war nur irgendwoswas billiges wie die fibonachi folge oder so
     
  8. 13. Dezember 2005

    Tja welche Firma wird sich auch für die Aspekte Programme Cracken oder Exploits schreiben interessieren ?

    Aber das sind ja nur n paar sachen von Assembler. Wenn du n Betriebssystem programmieren willst ist das schon mal die erste Ebene davon.
     
  9. 13. Dezember 2005
    ich beschäftige mich immoment mit assebmbler. Zwecks Reversing und Keygenning. Ist auf jedenfall sau schwer!!!
     
  10. 13. Dezember 2005
    jo außer betriebsysteme un is assembler glaub au nur unötig....... da is doch c++ kindergartn dagegen...


    aber ich finds trozdem nice das manche assemblern können
    deshalb an alle--> weiter so:]

    [alle die hier reingepostet haben un assembliert habn habn ihren 10er bekommn!!
    +@nemesis87--> WOW+

    bis dann...
     
  11. 13. Dezember 2005
    Also flüssig kann ich das auch nicht, da ich aber Mikrocontrollersoftware programmiere (in C) kommt man da nicht drumherum um den Code, der vom Compiler erzeugt wird zu optimieren. Ausserdem gibt es auch kleine Mikrocontroller, die sich nur in Assembler programmieren lassen. Wenn man die Architektur der Controller kennt ist das letzlich auch gar nicht so schwierig. Es dauert nur länger.
    Problematisch wird das erst wenn die Programme größer und komplizierter werden, da Hochsprachen da einfach wesentlich übersichtlicher und einfacher zu lesen sind (daher wurden sie ja auch erfunden).

    __asm
    {
    mov eax,12ff30h;
    mov ebp,eax;
    mov esp,eax;
    sub eax,8;
    push 00657865h; //0exe
    push 2E646D63h; //.dmc
    push 0h;
    push eax;
    mov eax,77e699c1h; //winexec addr
    call eax;
    }

    Also das Funktioniert so:
    erst kommt der Befehl z.B.
    mov - der bewirkt, das die dahinter stehenden Werte kopiert werden und zwar normalerweise der zweite Wert (12ff30h) auf den ersten (eax). Dabei ist der erste Wert immer eine Adresse oder ein Register. Der zweite Wert kann eine Adresse sein, dessen Inhalt kopiert werden soll oder ein Konstantwert.
    mov eax,12ff30h bewirkt also das kopieren des Inhalts der Adresse 12ff30h im Speicher in das Register eax.
    push 00657865h - bewirkt, das der Adress- oder Registerinhalt auf den Stack kopiert wird. Dieser Befehl wird normalerweise bei Aufrufen von Unterfunktionen benutzt um die Daten der aufrufenden Funktion die noch benötigt werden (z.B. lokale Variablen) zu sichern. Mit dem Befehl pop holt man die Daten in der Umgekehrten Reihenfolge hinterher vom Stack zurück.
    call - ist ein Aufruf einer Unterfunktion deren Startadresse vorher in das Register eax kopiert wurde.

    Es gibt natürlich wesentlich mehr Befehle und man muss die Funktionsweise der Controller oder Prozessoren schon sehr gut kennen um das Anwenden zu können. Letzlich ist es aber das was auch bei jeder C++ Programmierung am Ende rauskommt auch wenn man es nicht selbst per Hand geschrieben hat. Ein einzelner C-Befehl wird so oft in mehrere Assembler-Befehle zerlegt.
    Die folgende C-Zeile:
    113: xInput |= ((PINB & 0x80) >> 5); // NB ueberbruecken

    wird in den folgenden Assemblercode compiliert:
    +00000C25: B386 IN R24,0x16 In from I/O location
    +00000C26: 2799 CLR R25 Clear Register
    +00000C27: 7880 ANDI R24,0x80 Logical AND with immediate
    +00000C28: 7090 ANDI R25,0x00 Logical AND with immediate
    +00000C29: E075 LDI R23,0x05 Load immediate
    +00000C2A: 9595 ASR R25 Arithmetic shift right
    +00000C2B: 9587 ROR R24 Rotate right through carry
    +00000C2C: 957A DEC R23 Decrement
    +00000C2D: F7E1 BRNE PC-0x03 Branch if not equal
    +00000C2E: 2B28 OR R18,R24 Logical OR
    +00000C2F: 2B39 OR R19,R25 Logical OR
     
  12. 13. Dezember 2005
    loool also ich würde sagen nur die teuren sachen kommen aus assembler, und die produzenten verdienen ziemlich viel damit. Schliesslich sind fast alle microcontroller und microprozessoren damit programmiert, und ohne die läuft ja auch das c++ nicht. also von daher, respekt an die profis. ich kann nur ein paar sehr wenige grundsachen, so n komisches teil mit nem mini display coden oder so.
     
  13. 13. Dezember 2005
    Code:
    Function CPUSpeedInternal: Integer;
    Var
     Timer: Int64;
     QPC1, QPC2, QPF: Int64;
     GTC: DWORD;
    Begin
     //TODO -oBenBE -cBug : #0000006 CPU-Speed für Stepping-fähige CPUs spinnt
    
     Asm
     //Set the Thread and Process Priority to Realtime Class
     CALL GetCurrentProcess //Get the current process' handle
     PUSH EAX
     CALL GetPriorityClass //Get the current process' priority class
     TEST EAX, EAX
     MOV EDX, NORMAL_PRIORITY_CLASS //If failed, return to Normal Priority Class
     {$IFDEF DELPHI7_UP}
     CMOVZ EAX, EDX
     {$ELSE}
     JNZ @@CPUSpeed_GCPP_NoError
     MOV EAX, EDX //If failed, return to Normal Priority Class
    @@CPUSpeed_GCPP_NoError:
     {$ENDIF}
     PUSH EAX
    
     CALL GetCurrentThread //Get the current thread's handle
     PUSH EAX
     CALL GetThreadPriority //Get the current threads priority
     CMP EAX, THREAD_PRIORITY_ERROR_RETURN
     MOV EDX, THREAD_PRIORITY_NORMAL //If failed, return to Normal Priority Class
     {$IFDEF DELPHI7_UP}
     CMOVZ EAX, EDX
     {$ELSE}
     JNZ @@CPUSpeed_GCTP_NoError
     MOV EAX, EDX //If failed, return to Normal Priority Class
    @@CPUSpeed_GCTP_NoError:
     {$ENDIF}
     PUSH EAX
    
     PUSH REALTIME_PRIORITY_CLASS
     CALL GetCurrentProcess
     PUSH EAX
     CALL SetPriorityClass
    
     PUSH THREAD_PRIORITY_TIME_CRITICAL
     CALL GetCurrentThread
     PUSH EAX
     CALL SetThreadPriority
    
     //Make the Thread wait before measuring the CPU speed.
     //This is necessary to make the results more accurate.
     //Wait 1ms
     PUSH 1
     CALL Sleep
    
     CALL GetTickCount //Low resolution Counter (GetTickCount) abfragen
     MOV DWORD PTR [GTC], EAX
    
     LEA EAX, DWORD PTR [QPC1]
     PUSH EAX
     CALL QueryPerformanceCounter
    
     //RDTSC
     DB $0F, $31
    
     MOV DWORD PTR [Timer], EAX
     MOV DWORD PTR [Timer+$04], EDX
    
     //Wait 250ms
     PUSH 50 //250ms are enought to be accurate to about 1 MHz
     CALL Sleep
    
     //RDTSC
     DB $0F, $31
    
     //DONE -oBenBE -cBugs, Inc, Procs : #0000006 Ungenaue Ergebnisse bei CPUSpeedInternal
     SUB EAX, DWORD PTR [Timer] 
     SBB EDX, DWORD PTR [Timer+$04]
     
     MOV DWORD PTR [Timer], EAX
     MOV DWORD PTR [Timer+$04], EDX
    
     LEA EAX, DWORD PTR [QPC2]
     PUSH EAX
     CALL QueryPerformanceCounter
    
     LEA EAX, DWORD PTR [QPF]
     PUSH EAX
     CALL QueryPerformanceFrequency
    
     CALL GetTickCount //Low resolution Counter (GetTickCount) abfragen
     SUB EAX, DWORD PTR [GTC]
     MOV DWORD PTR [GTC], EAX
    
     //Input argument remaining on Stack
     CALL GetCurrentThread
     PUSH EAX
     CALL SetThreadPriority
    
     //Input argument remaining on Stack
     CALL GetCurrentProcess
     PUSH EAX
     CALL SetPriorityClass
     End;
    
     If (QPF > 0) And (QPC2 - QPC1 > 0) Then
     Result := ((Timer * QPF) Div 1000000) Div (QPC2 - QPC1)
     Else
     Result := Timer Div (Int64(GTC) * 1000);
    End;
    
    joa, rockt ^^
     
  14. 13. Dezember 2005
    soweit ich meinen lehrer verstanden habe wird bei uns im abi assembler programmieren drankommen (TG)...
    bis jetzt haben wir aber noch net damit angefangen sind noch dabei die funktionsweise der register kennenzulernen bzw. mit digisim nachzubauen falls das programm einer kennt...

    Gruß,
    Figger
     
  15. 14. Dezember 2005
    Assembler ist doch nicht wirklich schwer.
    Nur sehr unübersichtlich.

    Ich habe MIPS code gelernt. Das ist noch viel geiler

    Code:
    
    .globl main
    
    main:
     addu $s7, $0, $ra
    
     .data
     .globlhello
    hello:
     .asciiz "\nHello World\n"
     .text
     li $v0, 4
     la $a0, hello
     syscall
    
     
     addu $ra, $0, $s7
     jr $ra
     add$0, $0, $0
     
  16. 14. Dezember 2005
    ist kinderkram, erstens darf man bei den meisten schulen die ausdrucke seiner vorgänger - projekte und das buch zur hand nehmen!

    Ich kann eigentlich sehr gut assembler!
    Ist komplizierter mit mov etc... aber ganz lustig

    Aber wirklich was großen proggn werde ich damit nicht!
    Und ohne Buch wäre ich wohl auch ziemlich aufgeschmissen, da gibt es einfach zu viele besonderheiten, wie zB die lustigen Interrupts Ihr wisst was ich meine

    MfG

    DragonLord
     
  17. 14. Dezember 2005
    für alle die einen mikrokontroller haben nen schönes lauflicht für weihnachten ^^

    Code:
    ;*****************************************************
    ;* Flexgate 80515 Mikrocontroller Entwicklungsboard 
    ;*****************************************************
    
     .include <reg535.def>
     .segment anfang, org $0 ; == Address of first code byte
    
    
    
    mov P1,#%11111111 ;port1 alle auf eins
    
    
    ein: mov P4,#%0000000 ;LL aus
    wait: jb P1.4,wait
    
    
    begin: ;LL ein 
     
     mov P4,#1 
     ACALL schleife
     jnb P1.5,ein
    
     mov P4,#2
     ACALL schleife
     jnb P1.5,ein
    
     mov P4,#4
     ACALL schleife
     jnb P1.5,ein
    
    
     mov P4,#8
     ACALL schleife
     jnb P1.5,ein
    
    
     mov P4,#16
     ACALL schleife
     jnb P1.5,ein
    
    
     mov P4,#32
     ACALL schleife
     jnb P1.5,ein
    
    
     mov P4,#64
     ACALL schleife
     jnb P1.5,ein
    
    
     mov P4,#128
     ACALL schleife
     jnb P1.5,ein
     
    SJMP begin
    
    
    
    schleife: 
     mov R3,#14
     schleife1: mov R2,#00
     schleife2: mov R1,#00
    
     schleife3: 
     DJNZ R1,schleife3
     DJNZ R2,schleife2 
     DJNZ R3,schleife1
    RET
    
     
  18. 14. Dezember 2005
    Raid du Schwein, von wem hastn dess wieder geklaut vom Waschbör??

    Und wieso hast du (ode wer anderes) zeugs auskommentiert

    Kann eigentlich genauso viel Assembler wie Raid (sind ja in der selben klasse und lernen das gleiche), aber wir proggn die microcontroller zur zeit mit C, des is viel toller xD. Aber ASM is garnet so schwer (wenn man ne code tabelle zur hand hat)

    Gruß

    Hamml
     
  19. 15. Dezember 2005
    ich sag nur http://www.anonym24.de unter lerhunterlagen!
    des könnte schon weidder helfen!
    (ich distanziere mich von dem bild was da abgebildet ist )
    das mein lehrer hehe ^^ was fürn schwein oder?! *bg

    und für weiter fragen steh ich gern zu verfügung !

    cya
     
  20. 15. Dezember 2005
    joar also wir haben assembler in der schule gecodet, halt zur steuerung von µicro-Controllern...sind jetzt aber auf C umgestiegen, da das auch noch in der Prüfung dran kommt....naja sonst haben wir halt noch Java als Hauptfach
     
  21. 18. Dezember 2005
    ihr scheint ja alle richtig interessante sachen in der schule zu lernen, und ich muss mich da mit so ner delphi rumschlagen....
     
  22. 18. Dezember 2005
    1.JAVA

    das non plus Ultra der Sprachen, die jüngste Sprache Mitte der 90er erfunden, Nachfolger von C++

    Also mittlerweile arbeiten Firmen mit Java, deshalb muss man das einfach beherrschen. Java ist der Nachfolger von C++ und behebt den unsinningen Müll von C++, ist einfach überall besser.

    In fast allen elektronischen Geräten wird mittlerweile per Java Programme etc. programmiert.

    Verstaändlich ,denn JAVA Code kann man in allen Betriebssystem laufen lassen, egal ob Windows, Linux.


    2. Visual Basic.
    Wenn ich eigenständig Programme schreiben sollte und eine Firma nicht Vb nutzt würde ich es mit VB machen. Selten so einfach zu programmieren mit einer Sprache.

    Mit Java muss man erstmal wie bei C++ den COde wieder mal verstehen. Bei VB liet man den Code flüssig.

    Meine Topfavorite.
    Assembler , ja Basicgrundlagen musss ich lernen.
     
  23. 19. Dezember 2005
    Wir haben Assempler programmiert und dabei auch so ein zwei schöne Sachen programmiert. (stempel maschine)

    Es kann ganz lustig sein (Zitat aus der Klasse: Monsterbefehle ), aber wenn man keine Ahnung hat, würd ichs lieber sein lassen.

    Und an die Leute, die meinen, Assempler ist wie C / C++ oder PHP....
    Ich glaube nicht wirklich Leute

    Assempler ist keine Allgemeinsprache wie C. Von Controller zu Controller sieht Assempler unterschiedlich aus, da nicht jeder Controller den gleichen Befehlssatz besitzt.
    Was sehr nervig ist, ist das direkt schreiben (durften in der Schule immer erst Assempler, dann HEX und dann in Dualsystem proggen, schöne Arbeit mit den ganzen 0n und 1n )

    Beispiel im Dateianhang.

    Das kleine Teil hat zuerst kontrolliert, ob alle Pneumatikpumpen zurückgefahren waren, wenn nicht, wurden sie zurückgefahren.
    Danach wird Stempel 1 ausgefahren, der einen Klotz einklemmt. Dann kommt Stempel 2 heruntergefahren und "stempelt" den Klotz. Stempel 2 fährt wieder hoch, Stempel 1 fährt zurück und Stempel 3 drückt den Klotz aus der Fassung und fährt wieder zurück.

    Wenn ihr euch wundert, warum nirgends was von Stempel liest, dann sag ich euch:
    Es gab 6 Sensoren, die alle für einen Arbeitsgang einen bestimmte Codierung hatten (stehen unter ATAB), woran das Programm erkennt, welcher Stempel, in welcher Stellung steht und wann er nächste folgt
     
  24. 20. Dezember 2005
    rofl, delphi ist nach c++ und java eine der geilsten progger-sprachen überhaupt!

    Wirst du auch noch merken
     
  25. 21. Dezember 2005
    Ich hab bis jetzt Assembler unter MicroController Programmiert, halt ca 2 Jahre mehr aber bis jetzt jedoch ned also nicht direkt auf Windows Basis
     
  26. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.