Salve a tutti

Volevo sapere se qualcuno poteva aiutarmi col seguente esercizio di assembler...

visto che le mie conoscenze sono limitate :master: o deciso di postare qui per cercare aiuto


Allora l'esercizio richiede di creare un programma (in assembler) che:

1) Trasformi le lettere maiuscole presenti a video in minuscole

2) Al posto dei numeri inserire il carattere *

3) Visualizzare le lettere presenti sullo schermo in reverse di colore, ovvero se ad esempio una lettera è bianca su sfondo nero, bisogna rappresentarla nera su sfondo bianco

4) Colorare con colori casuali (sia di sfondo che di carattere) i dittonghi(due vocali di seguito) presenti sullo schermo

I primi due punti del programma sono riuscito a svolgerli da solo, i punti 3 e 4 però non ho idea di come poterli fare


EXTRN getche:FAR, putch:FAR, getbyte:FAR, putbyte:FAR, randomize: FAR, rand:FAR

; Segmento di definizione dati

DIM1 EQU 16
; Segmento Dati
DATA SEGMENT
VETT1 DB DIM1 DUP (?) ; vettore di 16 byte
DATA ENDS

; Segmento Stack

STACK SEGMENT STACK
DW 128 DUP (?)
STACK ENDS

; Segmento Video

VIDEO SEGMENT at 0B800h
DW 2000 DUP (?)
VIDEO ENDS

; Segmento Programma

CODE SEGMENT
START PROC FAR ; la procedura principale necessariamente FAR
ASSUME CS:CODE, DSATA, SS:STACK, ES:VIDEO

MOV AX,DATA ; Il registro di segmento DS adesso fa riferimento
MOV DS,AX ; alla zona dati
MOV AX,VIDEO ; Il registro di segmento ES adesso fa riferimento
MOV ES,AX ; alla zona video
;
; PROGRAMMA UTENTE
XOR SI,SI
XOR DI,DI
XOR BX,BX
CICLO: MOV AL,ES:[BX]
CMP AL,'A'
JB FORSENUM
CMP AL,'Z'
JA NOLETTERA
ADD AL,'a'-'A'
JMP NOLETTERa
FORSENUM: CMP AL,'0'
JB NOLETTERa
CMP AL,'9'
JA NOLETTERA
MOV AL,'*'
NOLETTERA: MOV ES:[BX],AL
FINE: ADD BX,2
CMP BX,4000
JB CICLO

MOV AH,4Ch
INT 21h

START ENDP
CODE ENDS
;
END START
; Chiusura file, richiama la procedura principale, inserire invio
; affinchè l'assemblatore riconosca l'ultima riga


Volevo quindi sapere se qualcuno è in grado di modificare il programma qui sopra e ripostarlo completo x favore...

Grazie in anticipo per qualsiasi forma di aiuto.