Questo sito ha bisogno della pubblicità per poter essere mantenuto. Gentilmente disabilita il blocco della pubblicità nel tuo browser per questo sito web.
Caricamento in corso...Caricamento in corso...
Caricamento in corso...

Somma delle cifre in posizioni pari

Scrivere un programma Assembly che calcola la somma delle cifre in posizione pari in una sequenza di valori interi positivi, assumendo di considerare valori a singola cifra.

A tal fine, realizzare i seguenti passi:
1. Leggere da tastiera una stringa di max 10 caratteri;
2. Creare un ciclo in cui, per ciascun carattere della stringa in posizione pari - 
- si effettua la conversione el carattere nel valore numerico corripondente(per fare questo basta sottrarre '0' al carattere);
- si somma il valore ottenuto alla somma parziale;
3. Al termine del ciclo, calcolare il prodotto tra la somma risultante e la lunghezza effettiva della stringa;
4. Se il risultato della moltiplicazione è maggiore di 100, visualizzare il messaggio 'Risultato maggiore di 100', altrimenti visualizzare il 
messaggio 'Risultato minore di 100'.

#make_COM#
ORG 100h
 
Acquisizione MACRO var1
LEA DX,var1
MOV Ah,0Ah
INT 21h
ENDM
 
Stampa MACRO var2
LEA DX,var2
MOV AH,09h
INT 21h
ENDM
 
Stampa MSGACQ
Acquisizione Stringa
 
MOV SI,0
MOV CH,0
MOV CL,Stringa[1]
 
ciclo:
MOV AH,0
MOV AL,SI+2
MOV BL,2
DIV BL
 
CMP AH,0
JE pari
JMP continua
 
pari:
MOV BH,Stringa[SI+2]
SUB BH,'0'
ADD Somma,BH
 
continua:
INC SI
LOOP ciclo
 
MOV BL,Somma
CALL Moltiplico
 
RET
 
Stringa DB 11,?,11 DUP ('$')
MSGACQ DB 'Inserisci Stringa $'
a_capo DB 13,10,'$'
Somma DB 0
MSG1 DB 'Maggiore$'
MSG2 DB 'Minore$'
 
Moltiplico PROC
MOV AL,BL
MOV BH,Stringa[1]
MUL BH
 
CMP AX,100
JAE maggiore
JB minore
 
maggiore:
Stampa MSG1
JMP fine
 
minore:
Stampa MSG2
 
fine:
RET
ENDP