Stampa di una stringa in ordine inverso
Acquisisci una stringa da tastiera, massimo 8 caratteri, e restituiscila a video invertita.
Ad esempio: 123456 (INPUT) -> 654321 (OUTPUT)
#make_com# ;direttive
org 100h ; set location counter to 100h
JMP start
inseriscistringa MACRO stringa ;macro per l'inserimento della stringa
MOV dx, OFFSET stringa
MOV ah, 0Ah
INT 21h
ENDM
visualizza MACRO stringar ;macro per la visualizzazione delle stringhe
LEA dx, stringar
MOV ah, 09h
INT 21h
ENDM
start: ;inizio del programma
visualizza msginserire
inseriscistringa stringaLetta
mov CL, stringaLetta[1] ;copia in cl il numero effettivo di caretteri digitati
mov SI, CX
add SI, 1
mov AX, 0
mov BX, 0
ciclo:
mov AH, stringaLetta[SI] ;copia in ax i caratteri della stringa letta a partire dall'ultimo
mov stringaInversa[BX], AH ;copia in stringaInversa i caratteri di stringaLetta
dec SI ;decrementa l'indice di controllo della variabile stringaLetta
inc BX ;incrementa l'indice di controllo della variabile stringaInversa
loop ciclo
mov stringaInversa[BX], "$" ;inserisci il "tappo" alla stringa
visualizza acapo
visualizza msginvertita
visualizza msge ;visualizzare il carattere "e" con l'accento
visualizza msgduepunti
visualizza acapo
visualizza stringaInversa ;visualizza la variabile stringaInversa
RET
;dichiarazione delle variabili
stringaLetta db 9,?, 9 DUP("$")
stringaInversa db 9 DUP ("$")
msginserire db "Digitare una stringa di massimo 8 caretteri $"
msginvertita db "La stringa invertita $"
msgduepunti db ": $"
acapo db 10, 13, "$"
msge db 138, "$"
