Originariamente inviato da Helgast
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, DS
ATA, 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.