Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- main(){
- int i;
- char stringa[80],*buffer,charline='*';
- buffer=stringa;
- strcpy( stringa,"prova di programma assembler 3b inf");
- _asm{
- jmp avvio
- /* tabella colori
- foreground background
- 0 nero 0 nero
- 1 blu 1 blu
- 2 verde 2 verde
- 3 celeste 3 celeste
- 4 rosso 4 rosso
- 5 fuxia 5 fuxia
- 6 arancione 6 arancione
- 7 grigio chiaro 7 bianco
- 8 grigio scuro
- 9 blu chiaro
- 10 verde chiaro
- 11 azzurro chiaro
- 12 rosso chiaro
- 13 fuxia chiaro
- 14 giallo
- 15 bianco
- */
- /*
- input
- ch valore 0 non flash valore 1 flash del carattere
- bl valore da 0 a 7 backgroud carattere
- bh valore da 0 a 15 foreground del carattere
- output
- bh attributo del carattere
- */
- attributo:
- push cx
- mov cl,4
- shl bl,cl
- or bh,bl
- mov cl,7
- shl ch,cl
- or bh,ch
- pop cx
- ret
- /*
- input
- bl codice ascii del carattere da scrivere
- bh attributo del carattere
- cl colonna
- ch riga
- output
- disegna il carattere in bl con attributo in bh alla riga ch e colonna cl
- */
- scrivi:
- push ax
- push cx
- push si
- push es
- mov ax,160
- mul ch
- add cl,cl
- mov ch,0
- add ax,cx
- mov si,ax
- mov ax,0xB800
- mov es,ax
- mov es:[si],bx
- pop es
- pop si
- pop cx
- pop ax
- ret
- /*
- input
- bh contiene l'attributo con cui pulire lo schermo
- output
- pulisce lo schermo in base all'attributo dato
- */
- cls:
- push cx
- push bx
- mov cl,0
- mov ch,0
- mov bl,32
- cls1:
- call scrivi
- inc cl
- cmp cl,80
- je clsncol
- jmp cls1
- clsncol:
- mov cl,0
- inc ch
- cmp ch,25
- je clsfine
- jmp cls1
- clsfine:
- pop bx
- pop cx
- ret
- /*
- input
- bh attributo dei caratteri
- cl colonna di inizio stampa
- ch riga di inizio stampa
- si inizio della stringa
- */
- print:
- push si
- push bx
- push cx
- mov si,0
- printciclo:
- mov bl,[stringa+si]
- cmp bl,0
- je printfine
- call scrivi
- inc cl
- inc si
- jmp printciclo
- printfine:
- pop cx
- pop bx
- pop si
- ret
- lineh:
- push dx
- push bx
- push cx
- linehciclo:
- mov dl,79 ;numero della colonna da raggiungere
- cmp dl,cl ;verifica se si e' raggiunta la colonna scelta
- je linehfine
- call scrivi
- inc cl
- jmp linehciclo
- linehfine:
- pop cx
- pop bx
- pop dx
- ret
- linev:
- push dx
- push bx
- push cx
- linevciclo:
- mov dl,25 ;numero della riga da raggiungere
- cmp dl,ch ;verifica se si e' raggiunta la riga scelta
- je linevfine
- call scrivi
- inc ch
- jmp linevciclo
- linevfine:
- pop cx
- pop bx
- pop dx
- ret
- avvio:
- mov bl,0
- mov bh,15
- call attributo
- call cls
- mov bl,65 ;carattere utilizzato
- mov cl,5 ;colonna di partenza
- mov ch,0 ;riga di partenza
- call lineh
- call linev
- }
- printf("fine");
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement