Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071

    [Assembler] Sottrazione

    Ho fatto questo programma... ma non capisco cos è che non va... mi fa uscire come risultato una faccina che ride...

    codice:
    
    Sistema SEGMENT STACK
       DB 64 DUP (?)
    Sistema ENDS
    
    
    Dati SEGMENT
       a   DB 4 DUP (?)
    Dati ENDS
     
    
    Codice SEGMENT
            ASSUME CS:Codice,SS:Sistema,DS:Dati
        
            Inizio:   MOV AH,01h      ;Input da tastiera. Ritorna il valore in AL
                       INT 21H
                       MOV a,AL
    
    
                       MOV AH,01h
                       INT 21H
    
    
                       SUB a,AL                 ;a=a-AL
    
                       MOV AH,0Ah
                       MOV AL,a                ;Metto il carattere della stringa in AL
                       MOV BH,0      ;così da poterlo stampare
                       MOV CX,1      ;una sola volta sullo schermo
                       INT 10H
    
            Premi:   MOV AH,08h      ;Input da tastiera senza echo
                       INT 21H   
    
                       CMP AL,27      ;Controlla se il tasto premuto sia il tasto ESC (27 dec.)
                         JE Esci         ;Se uguale esce dal programma
                         JNE Premi              ;Altrimenti attende che rivenga premuto un tasto...
    
             Esci:   MOV AX,4C00h      ;Torno al DOS
                      INT 21h
    
    Codice ENDS
    
    END Inizio

    Ho provato la stampa anche così... ma non va:
    codice:
          MOV AH,0Ah
          MOV AL,a+30h                ;Metto il carattere della stringa in AL
          MOV BH,0      ;così da poterlo stampare
          MOV CX,1      ;una sola volta sullo schermo
          INT 10H
    E infine ho provato anche così:
    codice:
          MOV AH,01h
          INT 21H
          MOV a,AL
    
          MOV AH,01h
          INT 21H
    
          SUB a,AL
    
          MOV DL,a
          MOV AH,02H
          INT 21H
    Nessuno dei tre funziona.... cosa sbaglio?

    Grazie per l'aiuto

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Devi trasformare il risultato in ASCII prima di visualizzarlo ...


    ...
    MOV AL,a ; Metto il risultato della sottrazione in AL
    OR AL,30h ; lo trasformo in ASCII
    MOV BH,0 ;così da poterlo stampare
    ...

  3. #3
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Ahhhh perfetto.. si funziona... invece io in una prova avevo fatto MOV AL,a+30h
    ma non dovrebbe essere la stessa cosa?

    e poi altre 3 domandine (non c'è bisogno di scrivere il codice)

    se voglio inserire un numero di più cifre lo devo fare con un ciclo o esiste una particolare istruzione?

    per quanto riguarda i numeri negativi (sia come risultato che per inserirli)?

    non ricordo bene... con "a DB 4 DUP (?)" alloco 4 byte di memoria per la variabile a (4 byte per un intero come in c)... corretto?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da Il Pazzo
    Ahhhh perfetto.. si funziona... invece io in una prova avevo fatto MOV AL,a+30h
    ma non dovrebbe essere la stessa cosa?
    Non e' la stessa cosa ...

    Originariamente inviato da Il Pazzo
    e poi altre 3 domandine (non c'è bisogno di scrivere il codice)

    se voglio inserire un numero di più cifre lo devo fare con un ciclo o esiste una particolare istruzione?
    Esiste una funzione per l'input di una stringa ma, dopo, devi provvedere con un ciclo a trasformare il valore inserito da ASCII a binario ...

    Originariamente inviato da Il Pazzo
    per quanto riguarda i numeri negativi (sia come risultato che per inserirli)?
    I numeri negativi sono rappresentati con il metodo del "complemento a due" ... le operazioni di addizione e sottrazione operano gia' in complemento a due ...

    Originariamente inviato da Il Pazzo
    non ricordo bene... con "a DB 4 DUP (?)" alloco 4 byte di memoria per la variabile a (4 byte per un intero come in c)... corretto?
    In quel modo allochi 4 byte (32 bit) per la tua variabile, ma non la utilizzi completamente perche' stai lavorando a 16 bit ... (e poi nel tuo codice lavori con soli 8 bit) ...

  5. #5
    Utente di HTML.it L'avatar di Il Pazzo
    Registrato dal
    Jul 2004
    Messaggi
    1,071
    Ah ti ringrazio... quindi potrei anche dichiarare "a DB (?)"... giusto? (non dovrei neanche avere problemi con numeri a + cifre così.. no?)


    allora per il resto ti faccio sapere dopo che smanetto un pò.. intanto grazie ancora...

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.