Stampa a video array di interi

di il
5 risposte

Stampa a video array di interi

Sto da poco cimentandomi con l'Assembly.
Con questa semplice procedura voglio invertire un vettore di interi.
Ma non ho capito come produrre poi la stampa a video del vettore invertito, in modo da verificare la bontà del programma. Uso emu8086.
Ringrazio anticipatamente chi potrà fornirmi delucidazioni in merito.
alfredo66



; Inversione vettori di interi
ORG 100h

.MODEL SMALL
.STACK
.DATA
VETT DW 0,1,2,3,4,5,6,7,8,9
.CODE
.STARTUP

MOV CX, 5
LEA SI, VETT
LEA DI, VETT+18; carico in DI l'ultimo elemento del vettore
CICLO:
MOV AX, [SI]
MOV BX, [DI]
MOV [SI], BX
MOV [DI], AX
ADD SI, 2
SUB DI, 2
LOOP CICLO
MOV AH, 09H
INT 21H
RET

5 Risposte

  • Re: Stampa a video array di interi

    Devi trasformare i valori in ASCII (in questo caso è molto semplice dato che sono valori ad una sola cifra) e passarli alla funzione del DOS (o BIOS) che visualizza un carattere.

    Ovvero dopo il LOOP non devi usare quella INT ma scrivere
    
    MOV CX, 10
    LEA SI, VETT
    
    CICLO2:
    MOV DX,[SI]
    OR DL,'0'
    
    MOV AH, 02H
    INT 21H    
    
    ADD SI,2
    LOOP CICLO2
    
    RET
    
  • Re: Stampa a video array di interi

    Ok, grazie.
    Provo subito!!!
  • Re: Stampa a video array di interi

    Funziona bene, grazie!
    L'unica cosa che non ho ancora capito: perché metti in OR il registro DL col carattere zero?
  • Re: Stampa a video array di interi

    Perché stai trattando valori binari mentre per visualizzarli prima devono essere convertiti in ASCII.
  • Re: Stampa a video array di interi

    OK, tutto chiaro.
    Ancora grazie!
    Saluti
    alfredo66
Devi accedere o registrarti per scrivere nel forum
5 risposte