Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Assembly] Colorare pixel; e .dll

    Non sono un'esperto di Assembly.

    Mi chiedevco se con Asm si possono costruire librerie dll che poi utilizzo con altri linguaggi (tipo vb 6.0)?

    Se si, volevo sapere come.

    Volevo inoltre sapere le istruzioni necessarie per colorare dei pixel sullo schermo!!!!

    Thanks

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463

    Moderazione

    Meglio affrontare una sola domanda, in generale, per ciascuna discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    305

    Re: [Assembly] Colorare pixel; e .dll

    Originariamente inviato da tossam
    Non sono un'esperto di Assembly.

    Mi chiedevco se con Asm si possono costruire librerie dll che poi utilizzo con altri linguaggi (tipo vb 6.0)?

    Se si, volevo sapere come.

    Volevo inoltre sapere le istruzioni necessarie per colorare dei pixel sullo schermo!!!!

    Thanks
    1. Cerca con google "vb dll asm" troverai tut e sample da scaricare.
    2. Non hai scritto che tool asm usi. Cmq usando il tasm 5.0 puoi fare:

    codice:
    ; esempio di plottaggio di pixel nel modo 13 usando i servizi del bios - 
    ; INT 10h
    
    .model tiny
    .code
    org 100h
    start:
    
    mov ax,13 	; modo = 13h
    int 10h 	; chiama il servizio bios
    
    mov ah,0Ch 	; funzione 0Ch
    mov al,4 	; colore 4 - rosso (red)
    mov cx,160 	; posizione x = 160
    mov dx,100 	; posizione y = 100
    int 10h 	; chiama il servizio BIOS
    
    inc dx 		; plotta un altro pixel in basso
    int 10h 	; chiama il servizio BIOS
    inc cx 		; plot di un pixel a destra
    int 10h 	; chiama servizio BIOS
    dec dx 		; plottane un altro su
    int 10h 	; chiama servizio BIOS
    
    xor ax,ax 	; funzione 00h - attendi un tasto (get a key)
    int 16h 	; chiama servizio BIOS
    
    mov ax,3 	; modo = 3 (testo 80x25 colori)
    int 10h 	; chiama servizio BIOS
    
    mov ax,4C00h 	; esce al DOS
    int 21h
    
    end start
    
    ... cmq su google trovi di tutto basta cercare
    Oki.lib Libreria per creare il proprio Engine del sound nei propri progetti
    http://www.twork.it/public/oki/guestbook.asp

    Sistemi di Gestione Studio e Sviluppo per giochi a pronostici
    http://www.twork.it/programmi/programmi.html

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2004
    Messaggi
    286
    Il codice di sopra è per la modalità reale del processore (16 bit), ed utilizza il servizio bios per accendere un pixel e risulta più lento rispetto ad un accesso diretto alla memoria video.

    Ecco un semplice codice per accendere un pixel sullo schermo con indirizzamento diretto della memoria video, ovviamente sempre in modalità reale (in assembler non mi sono ancora mai cimentato su codici a 32 bit):

    codice:
    		.MODEL Small
    		.Stack 100h
    		.CODE
    
    START: 
    
    
    ; Setting Video Mode
    
         mov ax, 4F02h   	; Set VBE Mode. BX = Desired Mode to Set
         mov bx, 115h	             ; Switch to 800x600 16.8 Mega-Colors (8:8:8)
         int 10h		; call BIOS service
    
    
    ; Indecing to Video Segment
    
         mov ax, 0A000h	; 0A000H = Video memory star address.
         mov es, ax                   ; 0A000H in Extra Segment.
    
    
    ; Deliver Pixel Parameters
    
         mov bx, 600	             ; Pixel location = X * XpixelsFormat + Y = 
    	
    
    ; Drawing the pixel in RGB mode
    
    	mov al, 255	; Red color value (0 - 255)
    	mov es:[bx], al     	; Write it to the Screen (address:offset, color)
    
    	inc bx
    	mov al, 255	; Green color value (0 - 255)
    	mov es:[bx], al     	; Write it to the Screen (address:offset, color)
    
         	inc bx
    	mov al, 255	; Blu color value (0 - 255)
    	mov es:[bx], al     	; Write it to the Screen (address:offset, color)   
    
    
    ; Pause to admire results
    
         mov ah, 0      	; wait for key
         int 16h        	; keyboard bios interrupt
    
    
    End Start
    Il codice è scritto per Turbo Assempler

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 © 2025 vBulletin Solutions, Inc. All rights reserved.