PDA

Visualizza la versione completa : [ASSEMBLY] Esercizio di somma in Assembly


Shalafi01
07-05-2018, 19:36
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:



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

oregon
07-05-2018, 21:29
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

Shalafi01
08-05-2018, 18:40
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$"

oregon
08-05-2018, 23:41
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?

Shalafi01
09-05-2018, 18:13
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.

oregon
09-05-2018, 19:51
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?

Loading