Char1 db "k" ; Carattere Num dd 45 ; Numero di ripetizioni .......... Buf1 resb 256 ; Buffer di lavoro
Char2 dw "ab" ; Coppia di caratteri Num dd 45 ; Numero di ripetizioni .......... Buf1 resb 256 ; Buffer di lavoro
Char4 dd "xyzh" ; Blocco di 4 caratteri Num dd 45 ; Numero di ripetizioni .......... Buf1 resb 256 ; Buffer di lavoro
Msg1 db "Prova di copiatura" ; Messaggio Sorgente .......... Buf1 resb 256 ; Buffer Destinazione
Msg1 db "Copia speculare" ; Messaggio Sorgente .......... Buf1 resb 256 ; Buffer Destinazione
Msg1 db "Il mare di Catania " ; Primo Messaggio Msg2 db "ha un bel colore azzurro." ; Secondo Messaggio .......... Buf1 resb 256 ; Buffer Destinazione
Msg1 db "Copia solo i dispari" ; Messaggio Sorgente .......... Buf1 resb 256 ; Buffer Destinazione
Msg1 db "Copia i dispari e zappa i pari" ; Messaggio Sorgente Char1 db "z" ; Carattere di Zapping .......... Buf1 resb 256 ; Buffer Destinazione
Buf1 db "ciao??....." ; messaggio di n caratteri/byte (1 carattere = 1 byte) _start: MOV AL,'z' ; Dato di 1 byte caricato in AL
MOV [Buf1],AL ; Scrittura in memoria del byte contenuto in AL
MOV [Buf1+1],AL ; Scrittura in memoria del byte contenuto in AL
Buf1 db "ciao??....." ; messaggio di n caratteri/byte (1 carattere = 1 byte) _start: MOV AL,'z' ; Dato di 1 byte caricato in AL MOV EDI,Buf1 ; L'indirizzo Buf1 viene duplicato (copiato) nel registro EDI
MOV [EDI],AL ; Scrittura in memoria del byte contenuto in AL INC EDI ; Variazione dell'indirizzo, EDI punta alla locazione successiva
MOV ECX,5 ; Impostazione contatore per scrivere su 5 caselle ancora: MOV [EDI],AL ; Scrittura in memoria del byte contenuto in AL INC EDI ; Variazione dell'indirizzo, EDI punta alla locazione successiva LOOP ancora ; Ricicla ECX volte
MOV ECX,5 ; Impostazione contatore per scrivere su 5 caselle ancora: STOSB ; Scrittura in memoria di AL e Variazione dell'indirizzo EDI LOOP ancora ; Ricicla ECX volte
MOV ECX,5 ; Impostazione contatore per scrivere su 5 caselle REP STOSB ; Ricicla ECX volte: Scrittura in memoria di AL e Variazione dell'indirizzo EDI
MOV AL,'z' ; Dato di 1 byte caricato in AL MOV EDI,Buf1 ; Indirizzo iniziale del buffer di memoria nel registro EDI MOV ECX,5 ; Impostazione contatore nel registro ECX REP STOSB ; Ricicla ECX volte: Scrittura in memoria di AL e Variazione dell'indirizzo EDI
MOV AX,'zk' ; Dato di 2 byte caricato in AX MOV EDI,Buf1 ; Indirizzo iniziale del buffer di memoria nel registro EDI MOV ECX,5 ; Impostazione contatore nel registro ECX REP STOSW ; Ricicla ECX volte: Scrittura in memoria di AX e Variazione dell'indirizzo EDI ; Ogni volta EDI viene incrementato automaticamente di 2 ; Alla fine saranno scritti: 5x2=10 byte
MOV EAX,'zkst' ; Dato di 4 byte caricato in EAX MOV EDI,Buf1 ; Indirizzo iniziale del buffer di memoria nel registro EDI MOV ECX,5 ; Impostazione contatore nel registro ECX REP STOSW ; Ricicla ECX volte: Scrittura in memoria di EAX e Variazione dell'indirizzo EDI ; Ogni volta EDI viene incrementato automaticamente di 4 ; Alla fine saranno scritti: 5x4=20 byte
myspace resb 4 ; blocco di 4 byte in RAM _start: MOV AX,4F75h ; Informazione di 2 byte caricata in AX MOV [myspace],AX ; Scrittura di 2 byte in RAM
msg db "Ciao a tutti." ; stringa di 13 caratteri in RAM _start: MOV AL,"M" ; Carica il Registro AL con il codice ASCII della lettera "M" MOV [msg],AL ; Scrive in memoria RAM, all'indirizzo msg
_start: MOV AL,"b" ; Carica il Registro AL con il codice ASCII della lettera "b" MOV [msg+2],AL ; Scrive in memoria RAM, all'indirizzo msg+2
_start: MOV AX,[msg+1] ; Legge in AX 2 byte dalla memoria RAM XCHG AH,AL ; Scambia il contenuto dei Registri AH ed AL MOV [msg+1],AX ; Scrive 2 byte in memoria RAM, all'indirizzo msg+1 MOV AL,"e" ; Carica il Registro AL con il codice ASCII della lettera "e" MOV [msg+5],AL ; Scrive in memoria RAM, all'indirizzo msg+5 MOV AX,"To" ; Carica il Registro AX con i codici ASCII delle lettere "To" MOV [msg+7],AX ; Scrive 2 byte in memoria RAM, all'indirizzo msg+7
%define STDIN 0
%define STDOUT 1
%define STDERR 2
mov eax, codice-Servizio ; da comunicare esclusivamente nel registro eax int 80h ; chiamata del Servizio
...... msg1 db "Ciao a tutti." ...... mov eax, 4 ; Codice del servizio richiesto (visualizza messaggio) mov ebx, 1 ; Codice del terminale (STDOUT) su cui mandare il messaggio mov ecx, msg1 ; Indirizzo del primo carattere del messaggio mov edx, 13 ; Lunghezza del messaggio (spazi inclusi) int 80h ; Chiamata Linux ......
...... buf1 resb 256 ; Spazio riservato in memoria (256 byte) ...... mov eax, 3 ; Codice del servizio richiesto (ricevi messaggio) mov ebx, 0 ; Codice del terminale (STDIN) da cui ricevere il messaggio mov ecx, buf1 ; Indirizzo del primo byte della memoria riservata al messaggio mov edx, 256 ; Quantità di spazio dedicata al messaggio int 80h ; Chiamata Linux ......
mov eax, 1 ; Codice del servizio "Chiusura Programma" int 80h ; Chiamata Linux
msg1 db "Ciao a tutti." ; stringa messaggio Lmsg1 $-msg1 ; calcolo Lunghezza stringa messaggio
buf1 resb 256 ; spazio/blocco di 256 byte di memoria RAM
Siano dati: il messaggio, Msg1 db 'Prova SMS !' ed il buffer Buf1 resb 50 1) Visualizzare Msg1 sul terminale, utilizzando la chiamata a sys_write. 2) Riempire i primi 30 byte di Buf1 con il carattere 'x'. 3) Copiare Msg1 in Buf1. 4) Visualizzare su terminale una stringa contenente solo i caratteri di posto dispari di Msg1. NOTE: Per costruire le soluzioni è possibile aggiungere dei caratteri sia a Msg1 sia a Buf1. In Msg1, considerare la 'P' di posto 1 e gli spazi come caratteri.
Esc[Line;ColumnH Esc[Line;Columnf |
Cursor Position: Moves the cursor to the specified position (coordinates). If you do not specify a position, the cursor moves to the home position at the upper-left corner of the screen (line 0, column 0). This escape sequence works the same way as the following Cursor Position escape sequence. |
---|---|
Esc[ValueA | Cursor Up: Moves the cursor up by the specified number of lines without changing columns. If the cursor is already on the top line, ANSI.SYS ignores this sequence. |
Esc[ValueB | Cursor Down: Moves the cursor down by the specified number of lines without changing columns. If the cursor is already on the bottom line, ANSI.SYS ignores this sequence. |
Esc[ValueC | Cursor Forward: Moves the cursor forward by the specified number of columns without changing lines. If the cursor is already in the rightmost column, ANSI.SYS ignores this sequence. |
Esc[ValueD | Cursor Backward: Moves the cursor back by the specified number of columns without changing lines. If the cursor is already in the leftmost column, ANSI.SYS ignores this sequence. |
Esc[s | Save Cursor Position: Saves the current cursor position. You can move the cursor to the saved cursor position by using the Restore Cursor Position sequence. |
Esc[u | Restore Cursor Position: Returns the cursor to the position stored by the Save Cursor Position sequence. |
Esc[2J | Erase Display: Clears the screen and moves the cursor to the home position (line 0, column 0). |
Esc[K | Erase Line: Clears all characters from the cursor position to the end of the line (including the character at the cursor position). |
q: esce dall'ambiente gdb; h: aiuto sui comandi gdb; l: lista alcune righe del sorgente; l num_riga: lista le righe del sorgente subito prima e subito dopo quella indicata; info address var: restituisce l'indirizzo di var; info variables: restituisce nome e indirizzo di tutte le variabili; info registers: visualizza lo stato dei registri; breakpoint num_riga: inserisce un blocco subito dopo la riga indicata; r: esegue il programma fino al primo blocco; c: riprende l'esecuzione; s: esegue solo l'istruzione successiva.
ls -l | lista il contenuto della directory corrente |
ls -l /mnt | lista il contenuto della directory /mnt |
cd /home/live/Desktop | Cambia cartella di lavoro, posizionandosi in /home/live/Desktop |
cd .. | Cambia cartella di lavoro, posizionandosi in quella di livello superiore |
man mkdir | visualizza la pagina di manuale relativa al comando mkdir |
cp file1 file2 | copia file1 in file2 |
cp -r dir1 dir2 | copia dir1 in dir2 (da notare l'opzione -r che attiva la ricorsione) |
geany & | avvia geany (da notare il parametro & che disimpegna la console per altri comandi) |
su | richiesta passaggio modalita' amministratore |
mkdir /mnt/sda7 | creazione della directory /mnt/sda7 |
mount /dev/sda7 /mnt/sda7 | montaggio della partizione /dev/sda7 nel punto /mnt/sda7 dell'albero delle directory |