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

    [emu8086] Problemi a stampare una stringa

    Consideriamo il semplice programma 8086
    codice:
    DSEG            SEGMENT PARA PUBLIC 'DATA'
    DONALD        DB  'DONALD$'
    MSG1            DB  'CIAO$'
    MSG2            DB  'PIPPO$'
    MSG3            DB  'PLUTO$'
    MSG4            DB  'PAPERINO$'
    DSEG            ENDS
    
    STACKM          SEGMENT PARA STACK 'STACK'
                    DB  64 DUP('12345678')
    STACKM          ENDS
    
                    ASSUME CS:CSEG, DS:DSEG, SS:STACKM
    
    CSEG            SEGMENT PARA PUBLIC 'CODE'
                    MOV DX, OFFSET MSG2
                    MOV AH,09h
                    INT 21h
                    RET
    Perchè mi stampa a video la stringa 'DONLD' ?
    Ultima modifica di MItaly; 06-07-2014 a 20:28 Motivo: Tag CODE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Va bene che è semplice ma va scritto correttamente

    Va indicato l'inizio del codice con la

    END start

    e deve essere inizializzato il registro DS all'inizio.
    Inoltre al termine del codice va eseguita la funzione 4c00h dell'INT 21


    codice:
    CSEG SEGMENT PARA PUBLIC 'CODE' 
    start:
    MOV AX,DSEG
    MOV DS,AX
    MOV DX, OFFSET MSG2
    MOV AH,09h
    INT 21h
    MOV AX,4c00h
    INT 21h  
    
    END start
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Ok, così funziona, grazie !!!
    ma se il MAIN lo definisco come PROC FAR, quando chiamo l'int 21H con AH = 09H il programma si pianta

  4. #4
    No,
    Funzia tutto.... ero io che sbagliavo.
    Thank you very much again for your help !!!!

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.