Programma in assembly 8086?

di il
22 risposte

Programma in assembly 8086?

Il comando è:
1) Letto un numero N, da tastiera, se maggiore di 5 visualizzarlo altrimenti visualizzare tutti i numeri da 1 a N.

2) Descrivere passo passo i comandi necessari per eseguire il programma.

Questo programma serve per scuola, bisogna usare il CICLO LOOP com CMP.
Grazie.

22 Risposte

  • Re: Programma in assembly 8086?

    Sì, ma qui non si fanno i compiti.
  • Re: Programma in assembly 8086?

    Non è un compito, è un esercizatione e non riesco a farla.
  • Re: Programma in assembly 8086?

    E' uguale. Non si fanno gli esercizi/esercitazioni/compiti altrui.

    Hai iniziato a scrivere del codice? Dove hai errori/problemi ?
  • Re: Programma in assembly 8086?

    Si a pomeriggio posto il codice con gli errori
  • Re: Programma in assembly 8086?

    Questo il codice che sono riuscito a fare.

    .MODEL SMALL
    .STACK 100
    .DATA

    NUM1 DB ?
    ris db ?
    dom1 DB "INSERISCI IL PRIMO VALORE: " ,13,10,"$"

    risp1 db "il numero e': " ,13,10,"$"
    risp2 db "I numeri che vanno da 1 alla somma sono: " ,13,10,"$"


    .CODE
    MOV AX,@DATA
    MOV DS,AX

    LEA DX,dom1;visualizza stringa
    MOV AH,9
    INT 21H

    MOV AH,1 ;acquisizione valore
    INT 21H
    SUB al,30H ;coversione valore



    cmp num1,5
    jb ciclo

    ciclo:

    inc ris




    LEA DX,risp2
    mov ah,9
    int 21H

    mov dl,ris
    mov ah,2
    int 21h

    cmp ris,al
    jl ciclo
    jmp fine

    LEA DX,risp1
    mov ah,9
    int 21H

    mov dl,num1
    mov ah,2
    int 21h

    fine: MOV AH,4CH ;fine
    INT 21H
    END


  • Re: Programma in assembly 8086?

    Ma il massimo numero N inseribile quanto è?

    E cosa c'entra quella frase con la ".. alla somma " ? Dove è richiesta la somma nell'esercizio?
  • Re: Programma in assembly 8086?

    Sisi è vero. Ho sbagliato, invece di somma ho corretto in "numero selezionato".
    Comunque N è un numero qualsiasi
  • Re: Programma in assembly 8086?

    Con "un numero qualsiasi" vuoi dire anche 126388 ?

    Guarda che l'input che fai con

    MOV AH,1 ;acquisizione valore
    INT 21H

    serve ad inserire un solo carattere (una sola cifra) quindi n vale da 0 a 9
  • Re: Programma in assembly 8086?

    Giusto, hai ragione.
    Correggo subito.
  • Re: Programma in assembly 8086?

    Ho corretto un paio di cose, ma l'eseguibile non fa quello che deve.
    .MODEL SMALL
    .STACK 100
    .DATA

    NUM1 DB ?
    ris db ?
    dom1 DB "INSERISCI IL PRIMO VALORE: " ,13,10,"$"

    risp1 db "il numero e': " ,13,10,"$"
    risp2 db "I numeri che vanno da 1 al numero inserito sono : " ,13,10,"$"


    .CODE
    MOV AX,@DATA
    MOV DS,AX

    LEA DX,dom1;visualizza stringa
    MOV AH,9
    INT 21H

    MOV AH,1 ;acquisizione valore
    INT 21H
    SUB al,30H ;coversione valore



    cmp al,5
    jg vis
    jbe ciclo



    ciclo: inc ris
    dec al



    LEA DX,risp2
    mov ah,9
    int 21H

    mov dl,ris
    mov ah,2
    int 21h

    cmp al,0
    jg ciclo
    je fine

    vis: LEA DX,risp1
    mov ah,9
    int 21H

    mov num1,al

    mov dl,num1
    mov ah,2
    sub dl,30h
    int 21h
    jmp fine

    fine: MOV AH,4CH ;fine
    INT 21H
    END


  • Re: Programma in assembly 8086?

    E che hai corretto? C'è sempre il codice

    MOV AH,1 ;acquisizione valore
    INT 21H

    Ma mi hai capito?
  • Re: Programma in assembly 8086?

    Scusami ma non sto capendo tanto bene per l'acquisizione del valore.
  • Re: Programma in assembly 8086?

    Nono scusami ho sbagliato, il numero da inserire va da 0 a 9.
    Riscontro problemi con il ciclo.
  • Re: Programma in assembly 8086?

    Va beh ... guarda le correzioni ... altrimenti facciamo notte ...

    (il numero non può essere da 0 a 9 semmai da 1 a 9) ... modifica il programma per controllare che non sia 0 ...
    
    .MODEL SMALL
    .STACK 100
    .DATA
    
    NUM1 DB ?
    ris db '1'
    dom1 DB "INSERISCI IL PRIMO VALORE: " ,13,10,"$"
    
    crlf  db 13,10,"$"
    risp1 db "il numero e': $"
    risp2 db "I numeri che vanno da 1 al numero inserito sono : $"
    
    .CODE
    MOV AX,@DATA
    MOV DS,AX
    
    LEA DX,dom1
    MOV AH,9
    INT 21H
    
    MOV AH,1 
    INT 21H
    mov num1,al 
    
    LEA DX,crlf
    MOV AH,9
    INT 21H
    
    cmp num1,'5'
    jg vis
    
    ciclo: 
    LEA DX,risp2
    mov ah,9
    int 21H 
    
    mov dl,ris
    mov ah,2
    int 21h
    
    LEA DX,crlf
    MOV AH,9
    INT 21H
    
    inc ris
    dec num1
    
    cmp num1,'0'
    jg ciclo
    je fine
    
    vis: 
    LEA DX,risp1
    mov ah,9
    int 21H 
    
    mov dl,num1
    mov ah,2
    int 21h
    
    LEA DX,crlf
    MOV AH,9
    INT 21H
    
    fine: 
    MOV AH,4CH 
    INT 21H
    END 
    
Devi accedere o registrarti per scrivere nel forum
22 risposte