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

    Problema in Assembly 8086

    Salve a tutti, ho da poco cominciato a studiare il microprocessore 8086. Mi serve il vostro aiuto perchè non riesco a risolvere un piccolo problema, dovrei leggere mediante 5 variabili una parola di 5 lettere e contare l'occorrenza della lettera A nella parola. Il mio problema è che non riesco a controllare se è stata effettivamente inserita la lettera A. Dovrei utilizzare un contatore ? Non abbiamo ancora cominciato i cicli, al momento utilizziamo le selezioni (IF). Ecco qui il mio codice:

    .MODEL SMALL
    .STACK
    .DATA
    car1 db? ;primo carattere
    car2 db? ;secondo carattere
    car3 db? ;terzo carattere
    car4 db? ;quarto carattere
    car5 db? ;quinto carattere
    .CODE

    INIZIO:
    mov ax @data
    mov ds,ax
    ;lettura primo carattere
    mov ah,01
    int 21h
    mov car1,al
    ;controllo se car1 è una 'A'



    ;lettura secondo carattere
    mov ah,01
    int 21h
    mov car2,al
    ;controllo se car2 è una 'A'




    ;lettura terzo carattere
    mov ah,01
    int 21h
    mov car3,al
    ;controllo se car3 è una 'A'




    ;lettura quarto carattere
    mov ah,01
    int 21h
    mov car4,al
    ;controllo se car4 è una 'A'




    ;lettura quinto carattere
    mov ah,01
    int 21h
    mov car5,al
    ;controllo se car5 è una 'A'

    ;fine programma
    mov ah,4ch
    int 21h
    END INIZIO

    Come vedete, ho lasciato in bianco lo spazio relativo al controllo. Chi di voi riesce a spiegarmi precisamente come devo procedere per terminare il programma ? Grazie in anticipo!

  2. #2
    Basta semplicemente usare una variabile come contatore

  3. #3
    E come si fa ? E' la prima volta che devo utilizzare un contatore in ASM. Se non ho capito male dovrebbe essere così:

    ;controllo se car1 è una 'A'
    cmp car1,a
    ;jne salta se car1 è diverso da 'A'
    jne uguale ad a
    cont++ (in C)
    jne fine salta se car1 è diverso da 'A'
    ;leggi car2 ecc. ecc.

    E' giusto ? Come posso utilizzare il cont++ in Assembly ? Grazie

  4. #4
    Quote Originariamente inviata da patocosmic Visualizza il messaggio
    E come si fa ? E' la prima volta che devo utilizzare un contatore in ASM. Se non ho capito male dovrebbe essere così:

    ;controllo se car1 è una 'A'
    cmp car1,a
    ;jne salta se car1 è diverso da 'A'
    jne uguale ad a
    cont++ (in C)
    jne fine salta se car1 è diverso da 'A'
    ;leggi car2 ecc. ecc.

    E' giusto ? Come posso utilizzare il cont++ in Assembly ? Grazie
    Si, come pseudocodice è giusto.
    Per incrementare il contatore puoi usare l'istruzione INC.

  5. #5
    E dove lo dovrei azzerare il contatore ? Puoi farmi un esempio specifico nel mio caso ?

  6. #6
    Il contatore lo azzeri ovviamente solo all'inizio.
    Nel tuo esempio, al posto di cont++ devi scrivere la funzione di incremento INC.

    Prova a farlo tu e magari lo correggo

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 © 2025 vBulletin Solutions, Inc. All rights reserved.