Non TASM "Hello World"*g*



  • Also...ich hab ein kleines prob, ich will mich schon seit längerer Zeit an ASM versuchen, habe einige (gute) tutorials geladen, bloss mein Problem ist ,alles für TASM ,in NASM etc. konnte ich das zeug nicht zu laufen bringen!
    Entweder es gibt eine möglichkeit an Tasm kostenlos ranzukommen ,oder ich bräuchte den source für einen Freeware assembler...Thx schonmal
    cu
    z-man



  • der wichtigste Unterschied ist, das in Nasm ein Label wirklich die Adresse Bezeichnet (Wie ein pointer in C), bei Tasm ist das anders (wenn ich mich recht entsinne).
    Diese Adressen musst du dann erst über "[]" referenzieren. ein Hello world in Nasm:

    .org 100h
    .bits 16
    .text
    
    mov ah, 09
    mov dx, Msg
    int 21h
    
    mov ax, 4C00h
    int 21h
    
    Msg db 'Hello World',10,13,'$'
    

    Am besten suchst du mal nach "nasmide" im Netz, das ist ein guter freeware-editor mit syntax highlighting & Co und auch ein paar Beispielen.



  • Free Tasm Download: *Zensiert*

    [edit]Was soll man dazu nun noch sagen 🙄 *Pfui*[/edit]

    [ Dieser Beitrag wurde am 11.12.2002 um 22:08 Uhr von Nobuo T editiert. ]



  • Thx,im moment arbeite ich mit diesem Hello World...das stand in einem der älteren Posts:

    org 100        ;Com Datei erstellen
    section .data
    Message db "Hello World!",0Dh,0Ah,"$"
    section .text
    mov ah,09h     ;Funktion Textausgabe
    mov dx,Message
    int 21h     
    mov ah,04Ch    ;Funktion zurück zu dos
    int 21h
    

    Ich bin schon weiter als vorher...jetzt kann ich tasteneinlesen etc. wie gesagt hab ich ja auch andere tuts und die interrupts etc. sind ja immer die selben 😃
    Allerdings hänge ich jetzt schon wieder an einem Problem...wie kann ich zb. Zahlen oder Strings einlesen...ich nehme mal an das man das bei Asm (ich bin C verwöhnt*g*) in der art lese zeichen schreibe an xyz position im speicher...machen muss...bloss alleine krieg ich das irgendwie schlecht hin... achja...in einem der Posts stand was von Leds am Parallelport blinken lassen, so ein Proggie hab ich schon in C geschrieben...wie sähe der der source zum Portansprechen in Asm aus?
    thx
    cu
    z-man
    ps: Keep coding!
    pps:Bitte Nasm code 😃

    @<Fangorn> :
    *grml*Jetzt werd ich gleich wieder in die Illegale Ebene runtergeschmissen!Nur so zur Info, ich meinte damit nichts illegales sondern lediglich sowas wie eine freie Version.Vielleicht hast du ja schonmal davon gehört, manche Firmen geben ältere Versionen ihre Programme kostenlos frei um für die neuen zu werben!!!!!



  • Ups...ich war beim Posten wohl nicht angemeldet...sorry...naja, ich wollte eigentlich noch ergänzen das ich mich ein wenig wundere!Nämlich in den Tutorials die ich habe steht drin das Com dateien nur ein Segment (was auch immer das ist...) haben dürfen...also Code & Daten wohl in einem seien müssen, ist dieser section befehl nicht sowas wie ne segmentdeffinition??Oder hab ich da was falsch verstanden...wenn ja wäre das ja keine Com datei mehr weil sie ja 2 segmente hätte?!?!?!?!?!?
    cu
    z-man

    [ Dieser Beitrag wurde am 14.12.2002 um 11:52 Uhr von z-man editiert. ]



  • Uff... So viele Fragen... Dann werde ich mal versuchen alles der Reihe nach zu beantworten 😃

    DOS nimmt dir bei Einlesen von Strings (Zahlen muessen dann erst vom String mit eigenen Funktionen kovertiert werden...) eigentlich alle Arbeit mit int 21h Funktion 0Ah ab. (Fuer naehere Infos: Interrupt Liste wie z.B. die hier)

    Port ansprechen geht mit dem "out" befehl. Beim IntelSyntax (NASM/TASM etc.) gibt hierbei der 1. Operand die Zieladdresse und der 2. den Wert an, der abgeschickt werden soll. (steht immer in al/ax/eax)
    Ports >FF koennen nur mit Hilfe von dx addressiert werden.
    Von Port lesen geht mit "in" dort sind die Funktionen des 1. und 2. Operanden vertauscht.
    Bsp:

    mov dx,0123h
    mov al,11h
    out dx,al
    
    in al,dx
    

    Zu der Sache mit den Segmenten:
    Ein Segment ist eigentlich ein Speicherblock, der ueber die Segmentregister cs,ds,es etc. adressiert werden kann.
    Im Realmode ist ein solches Segment immer 64KB gross. (Deshalb kann eine solche .com-datei auch hoechstens 64KB gross sein)
    Wenn Du ein Binary (.com-Datei) erstellst werden diese Section-Angaben weitgehend ignoriert und der ganze Kaese landet zum schluss wieder im selben Segment.

    PS:
    Wer schmeisst dich hier in die "Illegale Ebene" runter? 😕



  • Das hab ich gemeint*g* :

    Free Tasm Download: *Zensiert*
    [edit]Was soll man dazu nun noch sagen *Pfui*[/edit]

    War aber net so ernst gedacht...big thx für die antworten!Ich hoffe das stillt meinen wissensdurst...für ne weile*g*Ansonsten...geiles Board!!!!! 😃
    cu
    z-man
    ps: Keep coding!



  • nimm den a86 - der ist freeware und kompatibel zu tasm

    www.docjunior.de
    in der DL-Section.



  • Wo liegt der Vorteil?Ich bin mit Nasm eigentlich ganz zufrieden...kann das Teil was besser?
    cu
    z-man



  • eigentlich garnichts. nasm ist definitv besser - allerdings auch größer und ich persäönlich weiß nicht, ob ich damit umgehen kann. Naja, das ist ja mein Problem 😉


Anmelden zum Antworten