Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [ASM] Problemino stupido

    Ciao a tutti,
    Stavo vedendo un po' la programmazione Assembly per x86 (già conosco non benissimo l'Assmebly MIPS) e non riesco a far funzionare questo stupidissimo programma che dovrebbe stampare su schermo il mitico "Hello World"
    ecco il listato:

    Codice PHP:
    ;Hello World Win32 assembly programming

    .model small
    .stack
    .data

    message db 
    "Hello World!$"        ;message to display

    .code

    start
    :
    mov dx,OFFSET message    ;move OFSSET of Message into dx
    mov ax
    ,SEG message        ;move SEGMENT of Messafe into ax
    mov ds
    ,ax                ;DS:AX points to displaing string

    mov ah
    ,9                ;set function (display string)
    int 21h                    ;call dos service
    mov ax
    ,4c00h            ;return to dos DOS
    int 21h

    end    start                
    ;end here 
    l'assemblatore (uso MASM 32 integrato con RadASM) mi rimanda il seguente output:
    Assembling: C:\masm32\prova1.asm
    C:\masm32\prova1.asm(13) : error A2004: symbol type conflict
    C:\masm32\prova1.asm(21) : warning A4023: with /coff switch, leading underscore required for start address : start

    Make error(s) occured.Make error(s) occured.

    Sapreste indicarmi quel'è il problema?

    Ciao e grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2003
    Messaggi
    166
    Ciao. Allora anzitutto io quando scrivo un codice in assembly scrivo prima di .model... la direttiva .386.
    Infatti questo serve per scegliere il tipo di processore (ovvero la grandezza dei registri e roba simile.
    non credo che tuttavia sia necessario.
    L'errore che ti fa il compilatore non è anomalo... ho provato a scrivere un codice così ed ecco che il compilatore si è rifiutato di eseguire il suo lavoro.
    Non sono sicuro della causa di ciò... comunuqe quando programmavo per Dos (ora sono passato a win) non caricavo mai il registro DS in quanto puntava già al segmento corretto.
    Ti consiglio di eliminare la riga: Non dovrebbero esserci problami.
    Ad ogni modo non ci sono errori nel tuo codice.... Anche senza la direttiva .386 (o altro) dovrebbe andare...
    Forse è dovuto al compilatore....
    prova con "ml /coff /Cp /c "nomefile.asm""
    così il tutto non viene passato al linker, ma dovrai farlo dopo....
    Inoltre prova ascaricarti A86. e' un compilatore (non freeware) che in versione demo assembla codice fino a .286 (in pratica registri a 16 bit), linka direttamente (solo file .COM) ed è mooolto flessibile.
    Il Masm te lo consiglio per programmazione sotto win32...
    Ciao.

    P.S. --> Se vuoi a86 te lo spedisco per mail assieme a qualche manuale se vuoi.
    Ennio

  3. #3
    grazie mi faresti un grande favore

    senda a marco.trognoni@studio.unibo.it

    cmq grazie per la dritta ora me lo ha assemblato senza problemi

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305
    Hai fatto il copia e incolla di un listato per il compilatore Tasm della borland........
    Se provi a incollarlo e compilarlo con tasm, ti stamperà:
    Hello World!

    ciao

  5. #5
    Originariamente inviato da scancode
    Hai fatto il copia e incolla di un listato per il compilatore Tasm della borland........
    Se provi a incollarlo e compilarlo con tasm, ti stamperà:
    Hello World!

    ciao
    Più che copia e incolla ho seguito delle dispense universitarie

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.