Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    541

    [Assembly] Muovere un carattere sullo schermo

    Utilizzo Tasm su Dos e dovrei creare una piccola applicazione che permetta schiacciando i tasti freccia della tastiera (su, giù, destra, sinistra) di far muovere un carattere sullo schermo.
    La superficie è infinita dunque ad esempio quando arrivo in fondo alla finestra (ultima riga) e non c'è più spazio, schiacciando in basso il carattere compare in alto (prima riga). Lo stesso vale su tutti i bordi (visione a toroide dello spazio). Qualcuno può aiutarmi ad impostare il codice?
    GRAZIE

  2. #2
    Qualcuno può aiutarmi ad impostare il codice?
    Quali sono i problemi che incontri nella stesura del codice?
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    541
    la parte del movimento visto che devo restare sulla stessa schermata ma spostando il carattere. Come si può fare? Mettiamo il caso che io voglia partire dal centro.

  4. #4
    Il numero di righe/colonne è fissato a priori oppure modifichi la risoluzione tramite codice?

    In entrambi i casi sai qual è il numero massimo di righe/colonne, dunque dopo aver rilevato la pressione di un tasto verifichi se il "cursore" abbia superato o meno i valori massimi di righe/colonne ed in tal caso lo (ri)posizioni opportunamente.

    Concettualmente è banale... Puoi mostare cosa hai scritto finora? In tal modo sarà più facile aiutarti.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    541
    non ho scritto nulla perchè fino ad ora ho avuto un approccio statico con i comandi e la linea di comando. Intendo dire che fino ad ora ho sempre avuto problemi del tipo inserisci TOT dati che poi elaboravo, finita l'elaborazione ricominciava da capo. In questo caso la finestra si aggiorna in base al movimento del carattere e non so proprio da dove partire.

    Sapresti indirizzarmi su un codice simile in modo da studiarlo?

  6. #6
    Sapresti indirizzarmi su un codice simile in modo da studiarlo?
    Sarebbe la cosa più sbagliata... Visto che non hai mai fatto una cosa del genere devi fare uno sforzo iniziale nel pensare come risolvere il problema.

    Per risolverlo devi ovviamente invocare degli interrupt (acquisizione da tastiera, stampa di un carattere sullo schermo, posizionamento del cursore, ...) e scrivere delle routine ad hoc (cancellazione dello schermo, gestione delle coordinate, ...).

    Cose del genere per intenderci:

    codice:
    procedure ClrScr; assembler; 
    { procedure to clear the screen } 
    asm 
    	mov ax,VideoSegment { set the video segment } 
    	mov es,ax 
    	mov cx,25*80 { get number of characters on screen } 
    	xor bx,bx { set start position on screen } 
    	@@1: 
    	mov byte ptr es:[bx],0 { clear character } 
    	add bx,2 { move to next position } 
    	loop @@1 
    end; 
    
    procedure GotoXY ( x, y : byte ); assembler; 
    { procedure to move the cursor to the specified coordinates } 
    asm 
    	mov dh,y { set DH=y-1 } 
    	dec dh 
    	mov dl,x { set DL=x-1 } 
    	dec dl 
    	mov bh,0 { set page number=0 } 
    	mov ah,2 { set service number } 
    	int 10h { call video interrupt } 
    end;
    (ovviamente queste sono routine Pascal basate sul BASM, l'importante è comprendere il principio)

    NOTA: non potrai fare a meno di consultare la Ralf Brown's Interrupt List.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    541
    per chiarirmi meglio le idee ho cercato un programma già scritto, se vedo che funziona posso capire meglio a mio avviso. Possibile che non ci sia nulla in rete? Anche qualcosa di simile.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.