Ribalta Stringa

Quello più vicino al linguaggio macchina vero e proprio.

Ribalta Stringa

Postby Thief on Mon Aug 28, 2006 1:56 pm

Eccovi il sorgente di un programma in ASM in cui dopo aver inserito una stringa esso ve la visualizza ribaltata. :)
Code: Select all
; - by Thief

SEG_A          SEGMENT
               ASSUME CS:SEG_A, DS:SEG_A
               ORG   100H

Ribalta        PROC   FAR

inizio:        jmp   START   ;salta a START

max_len        EQU   1000   ;massima lunghezza
sorgente       db   max_len+1 dup(?)   ;stringa da ribaltare
destinaz       db   max_len   dup(?)   ;stringa ribaltata

START:
               mov   si,0   ;punta al primo elemento dell'array
prossimo_car:  mov   ah,01h     ;legge un car dalla tastiera
               int   21h
               cmp    al,0Dh             ;è = a return ?
               je   fine_lettura   ;se si smetti di leggere
               mov       sorgente[si],al ;sposta il carattere in sorgente
               inc       si                ;incrementa si
               jmp   prossimo_car   ;leggi il prossimo car
         
fine_lettura:
               mov   cx,si       
               push    cx   ;memorizza la lunghezza nello stack
               mov   bx,OFFSET sorgente
               mov   si,OFFSET destinaz
               add   si,cx   ;aggiunge a si la lunghezza della stringa
               dec   si   ;decrementa si
      
Ribaltamento:
               mov   al,[bx]   ;routine di ribaltamento
               mov   [si],al   ; parto dal fondo e la copio
               inc       bx                      ; in destinaz
               dec   si
               loop   Ribaltamento   ; salto a Ribaltamento
      
               pop   si   ;prelevo la lunghezza
               mov   destinaz[si+1],'$'   ;aggiungo il terminatore
               mov   ah,09h      
               mov   dx,OFFSET destinaz
               int   21h   ;stampo la stringa ribaltata
   
               RETN
Ribalta        ENDP

SEG_A          ENDS
               END   inizio
Non sempre il passare del tempo ti fornisce l?esperienza. Molte volte, se non t?inventi l?esperienza, non riesci a far passare il tempo.

--> http://worldlink.altervista.org/
User avatar
Thief
Algoritmo
 
Posts: 147
Joined: Thu Jul 06, 2006 10:36 am
Location: On the Net..

Ribalta Stringa

Sponsor

Sponsor


Postby Falcon on Mon Aug 28, 2006 2:11 pm

Bè ke dire...ho dato uno sguardo veloce sembra un ottimo lavoro...cn quale ambiente d sviluppo lavori?
Linux Slackware User
User avatar
Falcon
Java Programmer
 
Posts: 542
Joined: Sat Jul 08, 2006 8:38 am

Postby k8 on Mon Aug 28, 2006 2:15 pm

Complimenti Thief,te la cavi in tutti i linguaggi eh!
;)
User avatar
k8
Admin
 
Posts: 2115
Joined: Tue Jun 06, 2006 4:00 pm

Postby Thief on Mon Aug 28, 2006 3:10 pm

Compilato con il Tasm.
Mr.Keit wrote:Complimenti Thief,te la cavi in tutti i linguaggi eh!
;)

Cerco di imparare più linguaggi possibili. :D (almeno ci provo) ;)
Non sempre il passare del tempo ti fornisce l?esperienza. Molte volte, se non t?inventi l?esperienza, non riesci a far passare il tempo.

--> http://worldlink.altervista.org/
User avatar
Thief
Algoritmo
 
Posts: 147
Joined: Thu Jul 06, 2006 10:36 am
Location: On the Net..


Return to ASM

Who is online

Users browsing this forum: No registered users and 1 guest

cron