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

    [ASSEMBLY] Esercizio di somma in Assembly

    Ciao, sto cerco di fare questo programma in cui, chiesti da tastiera due numeri restituisca la somma (1 cifra). Nonostante la compilazione non mi dia errori però il programma non funziona e si blocca dopo aver inserito il primo valore, aiutatemi pls!

    programma:

    codice:
    data segment
        pkey db "Premi un tasto per uscire...$"
        input db "Inserisci il primo numero $"
        input2 db "Inserisci il secondo numero $"
        output db "La somma e' $"
        a db ?
        b db ?
        somma db ?
    ends
    
    
    stack segment
        dw   128  dup(0)
    ends
    
    
    code segment
    start:
    ; set segment registers:
        mov ax, data
        mov ds, ax
        mov es, ax
                    
        lea dx, input   
        mov ah, 9
        int 21h
        
        mov ah,01h    
        int 21h
        sub al,30h
        mov a, al  
        
        lea dx, input   
        mov ah, 9
        int 21h 
        
        mov dh,1
        int 21h 
        sub dl,30h
        mov b, dl  
        
        mov ah,a
        add ah,b
        mov somma,ah  
        
        lea dx, output   
        mov ah, 9
        int 21h     
        
        lea dx, somma   
        mov ah, 2
        int 21h
    Ultima modifica di LeleFT; 08-05-2018 a 08:55 Motivo: Aggiunti i tag CODE

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Due errori

    => la prima lea dx, input va bene, ma la seconda deve essere lea dx, input2

    => dopo add ah,b devi aggiungere anche la linea add ah,30h
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Due errori

    => la prima lea dx, input va bene, ma la seconda deve essere lea dx, input2

    => dopo add ah,b devi aggiungere anche la linea add ah,30h
    Grazie per l'aiuto ma l'errore rimane e per quanto mi scervelli non riesco a capire. Questo è il messaggio di errore:

    INT 21h, AH=09h -
    address: 07238
    byte 24h not found after 2000 bytes.
    ; correct example of INT 21h/9h:
    mov dx, offset msg
    mov ah, 9
    int 21h
    ret
    msg db "Hello$"

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ovviamente deve essere

    mov dl,somma

    e non

    lea dx,somma

    Comunque, quando hai l'errore, a che punto del programma sei? Cosa viene visualizzato?
    Cosa usi per eseguire il codice?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ovviamente deve essere

    mov dl,somma

    e non

    lea dx,somma

    Comunque, quando hai l'errore, a che punto del programma sei? Cosa viene visualizzato?
    Cosa usi per eseguire il codice?

    L'errore me lo subito dopo aver visualizzato "Inserisci il secondo numero ". Quello che viene prima invece, l'input e la scritta "inserisci il primo numero" funzionano correttamente.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ripeto ... cosa usi per eseguire il codice? Hai fatto le correzioni che ti ho suggerito? Adesso come è diventato il codice corretto? Come termina il codice dopo l'ultima istruzione?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Tag per questa discussione

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.