Advertisement
Guest User

Untitled

a guest
Apr 19th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.94 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. main(){
  5.   int i;
  6.   char stringa[80],*buffer,charline='*';
  7.   buffer=stringa;
  8.   strcpy( stringa,"prova di programma assembler 3b inf");
  9.  _asm{
  10.  
  11.  jmp avvio
  12.  
  13. /* tabella colori
  14. foreground             background
  15. 0  nero                0  nero
  16. 1  blu                 1  blu
  17. 2  verde               2  verde
  18. 3  celeste             3  celeste
  19. 4  rosso               4  rosso
  20. 5  fuxia               5  fuxia
  21. 6  arancione           6  arancione
  22. 7  grigio chiaro       7  bianco
  23. 8  grigio scuro
  24. 9  blu chiaro
  25. 10 verde chiaro
  26. 11 azzurro chiaro
  27. 12 rosso chiaro
  28. 13 fuxia chiaro
  29. 14 giallo
  30. 15 bianco
  31. */
  32.  
  33. /*
  34.    input
  35.    ch valore 0 non flash valore 1 flash del carattere
  36.    bl valore da 0 a 7 backgroud carattere
  37.    bh valore da 0 a 15 foreground del carattere
  38.  
  39.    output
  40.    bh attributo del carattere
  41. */
  42. attributo:
  43.    push cx
  44.    mov cl,4
  45.    shl bl,cl
  46.    or  bh,bl
  47.    mov cl,7
  48.    shl ch,cl
  49.    or  bh,ch
  50.    pop cx
  51.    ret
  52.  
  53.  
  54. /*
  55.    input
  56.    bl codice ascii del carattere da scrivere
  57.    bh attributo del carattere
  58.    cl colonna
  59.    ch riga
  60.  
  61.    output
  62.    disegna il carattere in bl con attributo in bh alla riga ch e colonna cl
  63.  
  64.  
  65. */
  66. scrivi:
  67.    push ax
  68.    push cx
  69.    push si
  70.    push es
  71.    mov ax,160
  72.    mul ch
  73.    add cl,cl
  74.    mov ch,0
  75.    add ax,cx
  76.    mov si,ax
  77.    mov ax,0xB800
  78.    mov es,ax
  79.    mov es:[si],bx
  80.    pop es
  81.    pop si
  82.    pop cx
  83.    pop ax
  84.    ret
  85.  
  86. /*
  87.    input
  88.    bh contiene l'attributo con cui pulire lo schermo
  89.  
  90.    output
  91.    pulisce lo schermo in base all'attributo dato
  92. */
  93. cls:
  94.   push cx
  95.   push bx
  96.   mov cl,0
  97.   mov ch,0
  98.   mov bl,32
  99.  
  100. cls1:
  101.   call scrivi
  102.   inc cl
  103.   cmp cl,80
  104.   je clsncol
  105.   jmp cls1
  106.  
  107. clsncol:
  108.   mov cl,0
  109.   inc ch
  110.   cmp ch,25
  111.   je clsfine
  112.   jmp cls1
  113.  
  114. clsfine:
  115.   pop bx
  116.   pop cx
  117.   ret
  118.  
  119.  
  120. /*
  121.   input
  122.   bh attributo dei caratteri
  123.   cl colonna di inizio stampa
  124.   ch riga di inizio stampa
  125.   si inizio della stringa
  126.  
  127. */
  128.  
  129.  
  130. print:
  131.   push si
  132.   push bx
  133.   push cx
  134.   mov si,0
  135.  
  136. printciclo:
  137.   mov bl,[stringa+si]
  138.   cmp bl,0
  139.   je printfine
  140.   call scrivi
  141.   inc cl
  142.   inc si
  143.   jmp printciclo
  144.  
  145. printfine:
  146.   pop cx
  147.   pop bx
  148.   pop si
  149.   ret
  150.  
  151. lineh:
  152.   push dx
  153.   push bx
  154.   push cx
  155.  
  156. linehciclo:
  157.   mov dl,79 ;numero della colonna da raggiungere
  158.   cmp dl,cl ;verifica se si e' raggiunta la colonna scelta
  159.  je linehfine
  160.  call scrivi
  161.  inc cl
  162.  jmp linehciclo
  163.  
  164. linehfine:
  165.  pop cx
  166.  pop bx
  167.  pop dx
  168.  ret
  169.  
  170. linev:
  171.  push dx
  172.  push bx
  173.  push cx
  174.  
  175. linevciclo:
  176.  mov dl,25 ;numero della riga da raggiungere
  177.  cmp dl,ch ;verifica se si e' raggiunta la riga scelta
  178.   je linevfine
  179.   call scrivi
  180.   inc ch
  181.   jmp linevciclo
  182.  
  183. linevfine:
  184.   pop cx
  185.   pop bx
  186.   pop dx
  187.   ret
  188.  
  189. avvio:
  190.   mov bl,0
  191.   mov bh,15
  192.   call attributo
  193.   call cls
  194.   mov bl,65 ;carattere utilizzato
  195.   mov cl,5 ;colonna di partenza
  196.   mov ch,0 ;riga di partenza
  197.   call lineh
  198.   call linev
  199.  }
  200.  printf("fine");
  201.  getch();
  202. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement