Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [ASSEMBLY] primo programma: Hello World!

    I hate the Assembly language!!
    allora... da poco tempo ho iniziato a studiare l'assembly (da internet), difficile, ma fico.
    Ho fatto molta teoria anche perchè avevo il computer che non andava, ma quando è arrivata l'ora di metterlo in pratica... aiuto!
    ho scaricato il compiler flat assembler e ho cominciato a scrivere il classico Hello World così:

    codice:
    .MODEL small ; indica al compilatore il modello di memoria da usare
    .STACK 100h ; dimensiona lo Stack
    
    .DATA ; inizio del segmento dati
    Messaggio DB "Salve Mondo",13,10,'$' ;dichiarazione del messaggio
    
    .CODE ; inizio del segmento di codice
    mov ax,SEG Messaggio ; ax = indirizzo del Segmento Dati
    mov ds,ax ; ds = ax
    mov dx,OFFSET Messaggio ; ds = offset del Segmento Dati
    mov ah,09h ; ah = 09h
    int 21h ; chiamata all'interrupt DOS
    mov ah,4Ch ; ah = 4Ch
    int 21h ; chiamata all'interrupt DOS
    END ; fine del programma
    mi dava errore su .model. allora, le mie basi teoriche sono crollate e sono andato a cercare su wikipedia l'hello world classico in assembly.

    trovo il codice ma quando lo compilo mi da ancora errore su model!

    che ca**o succede! qualcuno mi può fare un esempio di hello word in assembly che funzioni??

    PS ho guardato gli esempi che metta a disposizione il compiler e ho visto che scrivono solo gli include e il codice, senza model e quelle cose lì... perchè?
    ho provato anche a scrivere il programma senza quei comandi ma mi da errore su MOV!! :berto:

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Ma quale versione hai scaricato? Quello per Windows o per DOS?

  3. #3

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    E se hai scaricato la Win32 perche' scrivi codice per il DOS?

    Il modello di memoria SMALL e la gestione della memoria a segmentoffset era caratteristico della modalità di funzionamento delle CPU quando lavoravano con il DOS.

    Con Win32 e' un'altra cosa ... perche' non dai un'occhiata agli esempi forniti con l'assembler?

  5. #5
    (OT ma neanche poi tanto: perchè assembly? =))
    Rilasciata Python FTP Server library 0.5.1
    http://code.google.com/p/pyftpdlib/

    We'll be those who'll make the italian folks know how difficult can be defecating in Southern California without having the crap flying all around the house.

  6. #6
    Prova questo
    codice:
            format MZ
            use16
    
            push cs
            pop ds
            mov ah, 09h
            lea dx,[msg]
            int 21h
    
            mov ax, 4C00h
            int 21h
    
            msg: db "Salve Mondo$'
    Saluti

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    Se lavori con Win32 allora puoi scrivere

    codice:
    include 'win32ax.inc'
    
    .code
    
      hello:
    	invoke	MessageBox,HWND_DESKTOP,"Hello world!","Messaggio",MB_OK
    	invoke	ExitProcess,0
    
    .end hello
    Il linguaggio e' l'assembly, il programma che assembla è l'assembler ... spesso si fa confusione tra i due termini, e nel linguaggio comune ormai, assembler e assembly sono diventate la stessa cosa ...

  8. #8
    Prova questo
    codice:
            format MZ
            use16
    
            push cs
            pop ds
            mov ah, 09h
            lea dx,[msg]
            int 21h
    
            mov ax, 4C00h
            int 21h
    
            msg: db "Salve Mondo$'
    questo mi funziona, ma dove posso trovare qualche tutorialo guida possibilmente in italiano che mi spieghi come programmare in assembly (non in DOS)?

    Se lavori con Win32 allora puoi scrivere

    codice:
    include 'win32ax.inc'
    
    .code
    
      hello:
    	invoke	MessageBox,HWND_DESKTOP,"Hello world!","Messaggio",MB_OK
    	invoke	ExitProcess,0
    
    .end hello
    anche questo mi funzia... grazie...


    Il linguaggio e' l'assembly, il programma che assembla è l'assembler ... spesso si fa confusione tra i due termini, e nel linguaggio comune ormai, assembler e assembly sono diventate la stessa cosa ...
    però rimane sempre più corretto dire assembly!

    comunque io pensavo che l'assembly fosse indipendente dalla piattaforma! cioè, se io devo scrivere un bootloader, che non lavora su alcun sistema operativo, come lo scrivo?
    per dos?no
    per win32?neanche

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,465
    L'assembly e' la cosa piu' dipendente dalla piattaforma in assoluto che ci sia ... altro che indipendente.

    E' strettamente legata al tipo e modello di CPU che il sistema usa ... e quindi ...

  10. #10
    scusate se rispondo solo ora! comunque ho capito che l'assembly dipende dalla piattaforma hardware pero se io volessi scrivere un loader di un floppy come dovrei scriverlo?
    in assembly per dos?
    in assembly per win32?
    non penso!

    questo mi funziona, ma dove posso trovare qualche tutorial guida possibilmente in italiano che mi spieghi come programmare in assembly (non in DOS)?
    e chi è che può aiutarmi con questo quesito?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.