GLCD KS

Software e Hardware para linha x86

Moderadores: andre_luis, 51

GLCD KS

Mensagempor tcpipchip » 06 Nov 2014 21:02

https://www.dropbox.com/s/rxcyvdwk63tlyfm/GLCD.png?dl=0

Diversão para os alunos!

Código: Selecionar todos
.MODEL   SMALL
;                  000 ADD

IO0  EQU  0000h  ; 000 0000 00000 0000
IO1  EQU  0200h  ; 000 0001 00000 0000

; I/O Address Bus decode - every device gets 0x200 addresses */

; 8251A USART
 
IO2  EQU  0400h

;8253
IO3  EQU  0600h

DATA_LCD   EQU  (IO0) ; ESCREVE BARRAMENTO LCD
CONT_LCD   EQU  (IO1) ; ESCREVE BARRAMENTO CONTROLE

; 8251A USART
ADR_USART_DATA EQU  (IO2 + 00h)
ADR_USART_CMD  EQU  (IO2 + 02h)
ADR_USART_STAT EQU  (IO2 + 02h)

 ; 8253A Timer

ADR_TIMER_DATA0   EQU  (IO3 + 00h)
ADR_TIMER_DATA1   EQU  (IO3 + 02h)
ADR_TIMER_DATA2   EQU  (IO3 + 04h)
ADR_TIMER_CONTROL EQU  (IO3 + 06h)

TIMER_COUNTER0   EQU 00h
TIMER_COUNTER1   EQU 40h
TIMER_COUNTER2   EQU 80h

TIMER_LATCH     EQU 00h
TIMER_LSB     EQU 10h
TIMER_MSB     EQU 20h
TIMER_LSB_MSB      EQU 30h

TIMER_MODE0   EQU 00h
TIMER_MODE1   EQU 02h
TIMER_MODE2   EQU 04h
TIMER_MODE3   EQU 06h
TIMER_MODE4   EQU 08h
TIMER_MODE5   EQU 09h
TIMER_BCD   EQU 01h

;8255
IO4  EQU  0800h

ADR_PPI_PORTA   EQU  (IO4)
ADR_PPI_PORTB   EQU  (IO4 + 02h)
ADR_PPI_PORTC   EQU  (IO4 + 04h)
ADR_PPI_CONTROL   EQU  (IO4 + 06h)

PPI_PORTA_INP   EQU  10h
PPI_PORTA_OUT   EQU  00h
PPI_PORTB_INP   EQU  02h
PPI_PORTB_OUT   EQU  00h
PPI_PORTCL_INP   EQU  01h
PPI_PORTCL_OUT   EQU  00h
PPI_PORTCH_INP   EQU  08h
PPI_PORTCH_OUT   EQU  00h
PPI_MODE_BCL_0   EQU  00h
PPI_MODE_BCL_1   EQU  04h
PPI_MODE_ACH_0   EQU  00h
PPI_MODE_ACH_1   EQU  20h
PPI_MODE_ACH_2   EQU  40h
PPI_ACTIVE   EQU  80h

.8086
.code

MACRO_INICIALIZA_8253_TIMER0 MACRO HIGH,LOW,DELAY
   PUSHF
   PUSH AX
   PUSH CX
   PUSH DX
   
   MOV AL,36H
   MOV DX, ADR_TIMER_CONTROL
   OUT DX,AL

   MOV AL,LOW
   MOV DX, ADR_TIMER_DATA0
   OUT DX,AL

   MOV AL,HIGH
   MOV DX, ADR_TIMER_DATA0
   OUT DX,AL
   
   MOV CX, DELAY
   
   LOOP $

   POP DX
   POP CX
   POP AX
   POPF
ENDM

MACRO_INICIALIZA_8253_TIMER1 MACRO HIGH,LOW,DELAY
   PUSHF
   PUSH AX
   PUSH CX
   PUSH DX
   
   MOV AL,76H
   MOV DX, ADR_TIMER_CONTROL
   OUT DX,AL

   MOV AL,LOW
   MOV DX, ADR_TIMER_DATA1
   OUT DX,AL

   MOV AL,HIGH
   MOV DX, ADR_TIMER_DATA1
   OUT DX,AL
   
   MOV CX, DELAY
   
   LOOP $

   POP DX
   POP CX
   POP AX
   POPF
ENDM

MACRO_INICIALIZA_8253_TIMER2 MACRO HIGH,LOW,DELAY
   PUSHF
   PUSH AX
   PUSH CX
   PUSH DX
   
   MOV AL,0B6H
   MOV DX, ADR_TIMER_CONTROL
   OUT DX,AL

   MOV AL,LOW
   MOV DX, ADR_TIMER_DATA2
   OUT DX,AL

   MOV AL,HIGH
   MOV DX, ADR_TIMER_DATA2
   OUT DX,AL
   
   MOV CX, DELAY
   
   LOOP $

   POP DX
   POP CX
   POP AX
   POPF
ENDM

MACRO_CONTROLE_LCD MACRO CONTROLE   
   PUSH AX
   PUSH DX
        MOV AL, CONTROLE
   MOV DX, DATA_LCD
   OUT DX, AL
   MOV DX, CONT_LCD  ; E = HIGH
   MOV AL, 2
   OUT DX, AL
   CALL WAITS ; PAUSA LCD PROCESSAR ENTRADA
   MOV DX, CONT_LCD  ; E = LOW
   MOV AL, 0
   OUT DX, AL
   POP DX
   POP AX
ENDM

MACRO_IMPRIME_LCD MACRO DADO
        PUSH AX
   PUSH DX
        MOV AL, DADO
   MOV DX, DATA_LCD
   OUT DX,AL
   MOV DX, CONT_LCD
   MOV AL, 3   ; 00000011B
   OUT DX, AL
   CALL WAITS
   MOV DX, CONT_LCD
   MOV AL, 1
   OUT DX,AL
   POP DX
   POP AX
ENDM

MACRO_IMPRIME_REGISTRADOR MACRO DADO
        PUSH AX
   PUSH BX
   PUSH CX
   XOR AX,AX
        MOV DL, DADO
   MOV AL,DL 
   MOV BL,10D ; AX = AL/BL ==> AL QUOCIENTE E AH RESTO
   DIV BL
   ADD AH,"0"
   PUSH AX
   MOV AH,0
   DIV BL
   ADD AH,"0"
   PUSH AX
   POP AX
   MACRO_IMPRIME_LCD AH
   POP AX
   MACRO_IMPRIME_LCD AH
   POP CX
   POP BX
   POP AX
ENDM

ORG 0008H
PONTEIRO_TRATADOR_INTERRUPCAO DB 4 DUP("J")

ORG 0400H

ENABLE_PULSE:
   CALL GLCD_EN_HIGH
   CALL GLCD_EN_LOW
   RET

GLCD_ON:
   CALL GLCD_CS1_LOW
   CALL GLCD_CS2_LOW
   CALL GLCD_RS_LOW
   CALL GLCD_RW_LOW
   MOV AL,03FH
   CALL MANDA_PORT_B
   CALL ENABLE_PULSE
   RET   
   
GLCD_SET_START_LINE:
   CALL GLCD_RS_LOW
   CALL GLCD_RW_LOW
   CALL GLCD_CS1_LOW
   CALL GLCD_CS2_LOW
   MOV  GLCD_DATA,0C0H
   OR   GLCD_DATA, AL
   CALL ENABLE_PULSE
   RET   

GLCD_GOTO_COL:
   PUSHF
   PUSH AX
   CALL GLCD_RS_LOW
   CALL GLCD_RW_LOW
   CMP AH,64
   JL LEFT
   
   CALL GLCD_CS2_LOW
   CALL GLCD_CS1_HIGH
   SUB AH,64
   MOV COL_DATA,AH
   JMP SAI_GOTO_COL
   
LEFT:
    CALL GLCD_CS1_LOW
    CALL GLCD_CS2_HIGH
    MOV COL_DATA,AH

SAI_GOTO_COL:
   OR COL_DATA, 40H
   AND COL_DATA, 7FH
   MOV AL,COL_DATA
   CALL MANDA_PORT_B
   CALL ENABLE_PULSE
   POP AX
   POPF
   RET
   
GLCD_GOTO_ROW:
   PUSH AX
   CALL GLCD_RS_LOW
   CALL GLCD_RW_LOW
   OR AL,0B8H
   AND AL,0BFH
   MOV COL_DATA,AL
   CALL MANDA_PORT_B
   CALL ENABLE_PULSE
   POP AX
   RET
   
; AH Y=LINHA E  AL X=COLUNA
GLCD_GOTO_XY:
   CALL GLCD_GOTO_COL
   CALL GLCD_GOTO_ROW
   RET

; AL = DATA
GLCD_WRITE:
   CALL GLCD_RS_HIGH
   CALL GLCD_RW_LOW
   CALL MANDA_PORT_B
   CALL ENABLE_PULSE
   RET
   
;AL = DATA 
GLCD_CLRLN:   
   PUSHF
   PUSH AX
   PUSH CX
   MOV AH,0
   CALL GLCD_GOTO_XY
   MOV AH,64
   CALL GLCD_GOTO_XY
   CALL GLCD_CS1_LOW
   MOV AL,0
   MOV CX,64
ESCREVA:   
   CALL GLCD_WRITE
   LOOP ESCREVA
   POP CX
   POP AX
   POPF
   RET

GLCD_CLR:
   PUSHF
   PUSH AX
   MOV AL,0
CLRLN:   
   CALL GLCD_CLRLN
   ADD AL,1
   CMP AL,8
   JNE CLRLN
   POP AX
   POPF
   RET

;AH, AL, BH
GLCD_DRAW_POINT:
    PUSHF
   PUSH AX
    PUSH BX
    PUSH CX

    PUSH AX ; SALVA AH, AL
    PUSH AX ; SALVA AH, AL
   
    MOV CH,AH ; SALVA AH
    MOV AH,0

    MOV BL,8
    DIV BL
   
    MOV AH,CH
    CALL GLCD_GOTO_XY
   
    POP AX  ; RESTAURA AH, AL
   
    CMP BH,0
    JE LIGHT_SPOT
   
    MOV AH,0
    MOV BH,8
    DIV BH
    ; AH RESTO
    MOV CL,AH
    MOV AL,1
    SHL AL,CL
    MOV COL_DATA_AUX,AL
   
    MOV AH,CH
   CALL GLCD_READ_DATA
   OR COL_DATA_AUX,AL

    JMP SAI_GLCD_DRAW_POINT
   
LIGHT_SPOT:
    MOV AH,0
    MOV BH,8
    DIV BH
    ; AH RESTO
    MOV CL,AH
    MOV AL,1
    SHL AL,CL
    NOT AL
    MOV COL_DATA_AUX,AL

    MOV AH,CH
   CALL GLCD_READ_DATA
   AND COL_DATA_AUX,AL

SAI_GLCD_DRAW_POINT:
    POP AX

    MOV CH,AH ; SALVA AH
    MOV AH,0

    MOV BL,8
    DIV BL
   
    MOV AH,CH
    CALL GLCD_GOTO_XY
   
    MOV AL, COL_DATA_AUX
    CALL GLCD_WRITE
   
    POP CX
    POP BX
   POP AX
    POPF
    RET

GLCD_READ_DATA:
   CALL INICIALIZA_8255_PORT_INPUT
   CALL GLCD_RW_HIGH
   CALL GLCD_RS_HIGH
   CMP AH,63
    JG  HAB_CS2

HAB_CS1:
   CALL GLCD_CS2_HIGH
   CALL GLCD_CS1_LOW
    JMP HAB

HAB_CS2:
   CALL GLCD_CS2_LOW
   CALL GLCD_CS1_HIGH

HAB:
     CALL GLCD_EN_HIGH
     CALL GLCD_EN_LOW
     CALL GLCD_EN_HIGH
    CALL LE_PORT_B
     MOV READ_DATA,AL
    CALL GLCD_EN_LOW
    CALL INICIALIZA_8255_PORTB_OUTPUT
    RET

; AL = INDICE CARACTER FONT (COMECA EM 0)
PRINT_CAR:
   PUSHF
   PUSH AX
   PUSH BX
   PUSH CX
   MOV BL,5
   MUL BL
   MOV BX,AX
    MOV CX,5
PRINTING_CAR:
   MOV AL,FONTS[BX]
    CALL GLCD_WRITE
    INC BX
   LOOP PRINTING_CAR
   POP CX
   POP BX
   POP AX
   POPF
   RET

PLOT_BMP:
   PUSHF
   PUSH AX
   PUSH SI
   MOV AL,0
   MOV AH,0
PLOT:
   CALL GLCD_GOTO_XY
    PUSH AX
   MOV AL,[SI]
    CALL GLCD_WRITE
   POP AX
   INC SI
   INC AH
   CMP AH,127
   JNE PLOT
   MOV AH,0
   INC AL
   CMP AL,8
   JNE PLOT
   POP SI
   POP AX
   POPF
   RET

GLCD_CS1_HIGH:
   PUSHF
   PUSH AX
   OR  GLCD_CONTROL, 32
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_CS1_LOW:
   PUSHF
   PUSH AX
   MOV AL, 32
   NOT AL
   AND  GLCD_CONTROL, AL
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_CS2_HIGH:
   PUSHF
   PUSH AX
   OR  GLCD_CONTROL, 16
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_CS2_LOW:
   PUSHF
   PUSH AX
   MOV AL, 16
   NOT AL
   AND  GLCD_CONTROL, AL
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_RST_HIGH:
   PUSHF
   PUSH AX
   OR  GLCD_CONTROL, 1
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_RST_LOW:
   PUSHF
   PUSH AX
   MOV AL, 1
   NOT AL
   AND  GLCD_CONTROL, AL
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_EN_HIGH:
   PUSHF
   PUSH AX
   OR  GLCD_CONTROL, 2
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_EN_LOW:
   PUSHF
   PUSH AX
   MOV AL, 2
   NOT AL
   AND  GLCD_CONTROL, AL
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_RW_HIGH:
   PUSHF
   PUSH AX
   OR  GLCD_CONTROL, 4
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET
   
GLCD_RW_LOW:
   PUSHF
   PUSH AX
   MOV AL, 4
   NOT AL
   AND  GLCD_CONTROL, AL
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_RS_HIGH:
   PUSHF
   PUSH AX
   OR  GLCD_CONTROL, 8
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET

GLCD_RS_LOW:
   PUSHF
   PUSH AX
   MOV AL, 8
   NOT AL
   AND  GLCD_CONTROL, AL
   MOV AL,GLCD_CONTROL
   CALL MANDA_PORT_A
   POP AX
   POPF
   RET
   
   
INICIALIZA_8251:                                     
   XOR AL,AL
   MOV DX, ADR_USART_CMD
   OUT DX,AL
   OUT DX,AL
   OUT DX,AL
   MOV AL,40H
   OUT DX,AL
   MOV AL,4DH
   OUT DX,AL
   MOV AL,37H
   OUT DX,AL
   RET

RECEBE_CARACTER:
   PUSHF
   PUSH DX
AGUARDA_CARACTER:
   MOV DX, ADR_USART_STAT
   IN  AL,DX
   TEST AL,2
   JZ AGUARDA_CARACTER
   MOV DX, ADR_USART_DATA
   IN AL,DX
   SHR AL,1
NAO_RECEBIDO:
   POP DX
   POPF
   RET

MANDA_CARACTER:
   PUSHF
   PUSH DX
   PUSH AX  ; SALVA AL
   MOV DX, ADR_USART_DATA
BUSY:
   MOV DX, ADR_USART_STAT
   IN  AL,DX
   TEST AL,1
   JZ BUSY
   MOV DX, ADR_USART_DATA
   POP AX  ; RESTAURA AL
   OUT DX,AL
   POP DX
   POPF
   RET
   
INICIALIZA_8255_PORTB_OUTPUT:
   PUSHF
   PUSH AX
   PUSH DX
   MOV DX, ADR_PPI_CONTROL
   MOV AL,0
   OR AL,PPI_PORTA_OUT
   OR AL,PPI_PORTB_OUT 
   OR AL,PPI_PORTCL_INP
   OR AL,PPI_PORTCH_INP
   OR AL,PPI_MODE_BCL_0
   OR AL,PPI_MODE_ACH_0
   OR AL,PPI_ACTIVE
   OUT DX,AL
   POPF
   POP AX
   POP DX
   RET

INICIALIZA_8255_PORT_INPUT:
   PUSHF
   PUSH AX
   PUSH DX
   MOV DX, ADR_PPI_CONTROL
   MOV AL,0
   OR AL,PPI_PORTA_OUT
   OR AL,PPI_PORTB_INP
   OR AL,PPI_PORTCL_INP
   OR AL,PPI_PORTCH_INP
   OR AL,PPI_MODE_BCL_0
   OR AL,PPI_MODE_ACH_0
   OR AL,PPI_ACTIVE
   OUT DX,AL
   POPF
   POP AX
   POP DX
   RET

MANDA_PORT_A:
   PUSHF
    PUSH DX
   MOV DX,ADR_PPI_PORTA
   OUT DX,AL
    POP DX
   POPF
   RET

MANDA_PORT_B:
   PUSHF
    PUSH DX
   MOV DX,ADR_PPI_PORTB
   OUT DX,AL
    POP DX
   POPF
   RET

LE_PORT_B:
    PUSHF
   PUSH DX
   MOV DX,ADR_PPI_PORTB
   IN AL,DX
    POP DX
   POPF
   RET

LE_PORT_C:
    PUSHF
   PUSH DX
   MOV DX,ADR_PPI_PORTC
   IN AL,DX
    POP DX
   POPF
   RET
     
.startup

   MOV AX,0000
   MOV DS,AX
   
   MOV WORD PTR PONTEIRO_TRATADOR_INTERRUPCAO, OFFSET INTERRUPT_ONE_SECOND
   MOV WORD PTR PONTEIRO_TRATADOR_INTERRUPCAO + 2, SEG INTERRUPT_ONE_SECOND
   
   MOV AX,@DATA
   MOV DS,AX
   MOV AX,@STACK
   MOV SS,AX
   
   MOV DX, CONT_LCD
   MOV AL, 0
   OUT DX, AL
   
   MACRO_CONTROLE_LCD 38H
   MACRO_CONTROLE_LCD 0CH
   MACRO_CONTROLE_LCD 02H
   
   ;31,14,14,4,14,14,31,0
   MACRO_CONTROLE_LCD 40H
   MACRO_IMPRIME_LCD 31
   MACRO_IMPRIME_LCD 14
   MACRO_IMPRIME_LCD 14
   MACRO_IMPRIME_LCD 04
   MACRO_IMPRIME_LCD 14
   MACRO_IMPRIME_LCD 14
   MACRO_IMPRIME_LCD 31
   MACRO_IMPRIME_LCD 00
   MACRO_CONTROLE_LCD 80H

   MACRO_CONTROLE_LCD 83H
   MACRO_IMPRIME_LCD "H"
   MACRO_IMPRIME_LCD "O"
   MACRO_IMPRIME_LCD "R"
   MACRO_IMPRIME_LCD "A"
   MACRO_IMPRIME_LCD 00
   MACRO_IMPRIME_LCD "C"
   MACRO_IMPRIME_LCD "E"
   MACRO_IMPRIME_LCD "R"
   MACRO_IMPRIME_LCD "T"
   MACRO_IMPRIME_LCD "A"
      
   CALL INICIALIZA_8251       
   CALL INICIALIZA_8255_PORTB_OUTPUT
   
   CALL GLCD_CS1_HIGH
   CALL GLCD_CS2_HIGH
   CALL GLCD_RST_HIGH
   CALL GLCD_ON

DEMO:
   CALL GLCD_CLR
   MOV AL,0
   CALL GLCD_SET_START_LINE
   
   MOV BH,1
AGUARDA:
    MOV AL,0
COL:
   MOV CX,127
FILL_COL:
   MOV AH,CL
   CALL GLCD_DRAW_POINT
   LOOP FILL_COL
   ADD AL,16
   CMP AL,64
   JNE COL

   CALL GLCD_CLR
   LEA SI, TRUCK
   CALL PLOT_BMP

PAUSA: JMP PAUSA

   CALL GLCD_CLR
   MOV AH,0
   MOV AL,0
   CALL GLCD_GOTO_XY
   MOV AL,1
   CALL PRINT_CAR

FIM: JMP FIM

      
   MACRO_CONTROLE_LCD 0C4H   
   MACRO_IMPRIME_REGISTRADOR CONTADOR_HORAS
   MACRO_IMPRIME_LCD ":"
   MACRO_IMPRIME_REGISTRADOR CONTADOR_MINUTOS
   MACRO_IMPRIME_LCD ":"
   MACRO_IMPRIME_REGISTRADOR CONTADOR_SEGUNDOS
      
   MACRO_INICIALIZA_8253_TIMER0 00H,0BFH,10000  ; 523.25HZ NOTA DO (020BH)
   MACRO_INICIALIZA_8253_TIMER0 00H,0AAH,10000  ; 587.33HZ NOTA RE (020BH)
   MACRO_INICIALIZA_8253_TIMER0 00H,97H,10000  ; 659.26HZ NOTA MI (020BH)
   MACRO_INICIALIZA_8253_TIMER0 00H,8FH,10000  ; 698.46HZ NOTA FA (020BH)
   MACRO_INICIALIZA_8253_TIMER0 00H,7FH,10000  ; 783.99HZ NOTA SO (020BH)
   MACRO_INICIALIZA_8253_TIMER0 00H,71H,10000  ; 880.00HZ NOTA LA (020BH)
   MACRO_INICIALIZA_8253_TIMER0 00H,65H,10000  ; 987.77HZ NOTA SI (020BH)
   MACRO_INICIALIZA_8253_TIMER0 00H,5FH,10000  ; 1046.50 HZ NOTA DO (020BH)
   MACRO_INICIALIZA_8253_TIMER0 00H,00H,10000  ; 1046.50 HZ NOTA DO (020BH)

   MACRO_CONTROLE_LCD 0C4H   
   MACRO_IMPRIME_REGISTRADOR CONTADOR_HORAS
   MACRO_IMPRIME_LCD ":"
   MACRO_IMPRIME_REGISTRADOR CONTADOR_MINUTOS
   MACRO_IMPRIME_LCD ":"
   MACRO_IMPRIME_REGISTRADOR CONTADOR_SEGUNDOS

    MOV AL,"."
   CALL MANDA_CARACTER

   JMP DEMO

WAITS:
   PUSH CX
   MOV CX,500
WAIT1:
   NOP
   LOOP WAIT1
   POP CX
   RET
   
INTERRUPT_ONE_SECOND:
    PUSHF
   
    INC BYTE PTR CONTADOR_SEGUNDOS
    CMP BYTE PTR CONTADOR_SEGUNDOS,60
    JNE SAI_INTERRUPT
    MOV BYTE PTR CONTADOR_SEGUNDOS,0
    INC BYTE PTR CONTADOR_MINUTOS
    CMP BYTE PTR CONTADOR_MINUTOS,60
    JNE SAI_INTERRUPT
    MOV BYTE PTR CONTADOR_MINUTOS,00
    INC BYTE PTR CONTADOR_HORAS
    CMP BYTE PTR CONTADOR_HORAS,24
    JNE SAI_INTERRUPT
    MOV BYTE PTR CONTADOR_HORAS,00

SAI_INTERRUPT:
   
    POPF

    IRET
   

.DATA
CONTADOR_SEGUNDOS DB 0
CONTADOR_MINUTOS DB 0
CONTADOR_HORAS DB 0

GLCD_CONTROL DB 0
GLCD_DATA    DB 0
COL_DATA DB 0
COL_DATA_AUX DB 0
READ_DATA DB 0

TRUCK    DB 0,  0,  0,  0,  0,248,  8,  8,  8,  8,  8,  8, 12, 12, 12, 12
      DB 12, 10, 10, 10, 10, 10, 10,  9,  9,  9,  9,  9,  9,  9,  9,  9
      DB 9,  9,  9,  9,  9,  9,  9,  9,  9,  9,137,137,137,137,137,137
      DB 137,137,137,137,137,137,137,  9,  9,  9,  9,  9,  9,  9,  9,  9
      DB   9,  9, 13,253, 13,195,  6,252,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB 240,240,240,240,240,224,224,240,240,240,240,240,224,192,192,224
      DB 240,240,240,240,240,224,192,  0,  0,  0,255,255,255,255,255,195
      DB 195,195,195,195,195,195,  3,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,255,240, 79,224,255, 96, 96, 96, 32, 32, 32, 32, 32
      DB  32, 32, 32, 32, 32, 32, 32, 32, 64, 64, 64, 64,128,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,255,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB 255,255,255,255,255,  0,  0,  0,  0,255,255,255,255,255,  0,  0
      DB   0,  0,255,255,255,255,255,  0,  0,  0,255,255,255,255,255,129
      DB 129,129,129,129,129,129,128,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,255,  1,248,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8
      DB   8,  8,  8,  8, 16,224, 24, 36,196, 70,130,130,133,217,102,112
      DB  160,192, 96, 96, 32, 32,160,160,224,224,192, 64, 64,128,128,192
      DB  64,128,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0, 63, 96, 96, 96,224, 96, 96, 96, 96, 96, 96
      DB  99, 99, 99, 99, 99, 96, 96, 96, 96, 99, 99, 99, 99, 99, 96, 96
      DB  96, 96, 99, 99, 99, 99, 99, 96, 96, 96, 99, 99, 99, 99, 99, 99
      DB  99, 99, 99, 99, 99, 99, 99, 96, 96, 96, 96, 96, 96, 96, 64, 64
      DB  64,224,224,255,246,  1, 14,  6,  6,  2,  2,  2,  2,  2,  2,  2
      DB   2,  2,  2,  2,130, 67,114, 62, 35, 16, 16,  0,  7,  3,  3,  2
      DB   4,  4,  4,  4,  4,  4,  4, 28, 16, 16, 16, 17, 17,  9,  9, 41
      DB 112, 32, 67,  5,240,126,174,128, 56,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1
      DB   1,  1,127,127,127,127,255,255,247,251,123,191, 95, 93,125,189
      DB 189, 63, 93, 89,177,115,243,229,207, 27, 63,119,255,207,191,255
      DB 255,255,255,255,255,255,255,127,127,127,127,127,127,127,127,255
      DB 255,255,127,127,125,120,120,120,120,120,248,120,120,120,120,120
      DB 120,248,248,232,143,  0,  0,  0,  0,  0,  0,  0,  0,128,240,248
      DB 120,188,220, 92,252, 28, 28, 60, 92, 92, 60,120,248,248, 96,192
      DB 143,168,216,136, 49, 68, 72, 50,160, 96,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,128,192,248,248,248,248,252,254,254,254,254,254,254
      DB 254,254,254,254,254,255,255,255,255,255,246,239,208,246,174,173
      DB 169,128,209,208,224,247,249,255,255,252,220,240,127,255,223,255
      DB 255,255,255,255,255,254,254,255,255,255,255,255,255,255,254,255
      DB 255,255,255,255,255,255,254,254,254,254,254,254,254,254,254,254
      DB 254,254,254,254,255,255,255,255,255,255,254,255,190,255,255,253
      DB 240,239,221,223,254,168,136,170,196,208,228,230,248,127,126,156
      DB 223,226,242,242,242,242,242,177, 32,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  1,  1,  1,  1,  3,  3,  3,  7,  7,  7,  7,  7, 15
      DB  15, 15,  7, 15, 15, 15,  7,  7, 15, 14, 15, 13, 15, 47, 43, 43
      DB  43, 43, 43, 47,111,239,255,253,253,255,254,255,255,255,255,255
      DB 191,191,239,239,239,191,255,191,255,255,255,255,255,255,255,255
      DB 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
      DB 255,255,255,255,127,127,127,127,255,255,191,191,191,191,255,254
      DB 255,253,255,255,255,251,255,255,255,127,125, 63, 31, 31, 31, 31
      DB  31, 31, 63, 15, 15,  7,  7,  3,  3,  3,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0
      DB   1,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1
      DB   1,  1,  1,  1,  3,  3,  3, 11, 11, 11, 11,  7,  3, 14,  6,  6
      DB   6,  2, 18, 19, 19,  3, 23, 21, 21, 17,  1, 19, 19,  3,  6,  6
      DB  14, 15, 15,  7, 15, 15, 15, 11,  2,  0,  0,  0,  0,  0,  0,  0
      DB   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0


FONTS     DB   00H, 00H, 00H, 00H, 00H ; (space)
      DB   00H, 00H, 5FH, 00H, 00H ; !
      DB   00H, 07H, 00H, 07H, 00H ; "
      DB   14H, 7FH, 14H, 7FH, 14H ; #
      DB   24H, 2AH, 7FH, 2AH, 12H ; $
      DB   23H, 13H, 08H, 64H, 62H ; %
      DB   36H, 49H, 55H, 22H, 50H; &
      DB   00H, 05H, 03H, 00H, 00H; '
      DB   00H, 1CH, 22H, 41H, 00H; (
      DB   00H, 41H, 22H, 1CH, 00H; )
      DB   08H, 2AH, 1CH, 2AH, 08H; *
      DB   08H, 08H, 3EH, 08H, 08H; +
      DB   00H, 50H, 30H, 00H, 00H; H,
      DB   08H, 08H, 08H, 08H, 08H; -
      DB   00H, 60H, 60H, 00H, 00H; .
      DB   20H, 10H, 08H, 04H, 02H; /
      DB   3EH, 51H, 49H, 45H, 3EH; 0
      DB   00H, 42H, 7FH, 40H, 00H; 1
      DB   42H, 61H, 51H, 49H, 46H; 2
      DB   21H, 41H, 45H, 4BH, 31H; 3
      DB   18H, 14H, 12H, 7FH, 10H; 4
      DB   27H, 45H, 45H, 45H, 39H; 5
      DB   3CH, 4AH, 49H, 49H, 30H; 6
      DB   01H, 71H, 09H, 05H, 03H; 7
      DB   36H, 49H, 49H, 49H, 36H; 8
      DB   06H, 49H, 49H, 29H, 1EH; 9
      DB   00H, 36H, 36H, 00H, 00H; :
      DB   00H, 56H, 36H, 00H, 00H; ;
      DB   00H, 08H, 14H, 22H, 41H; <
      DB   14H, 14H, 14H, 14H, 14H; =
      DB   41H, 22H, 14H, 08H, 00H; >
      DB   02H, 01H, 51H, 09H, 06H; ?
      DB   32H, 49H, 79H, 41H, 3EH; @
      DB   7EH, 11H, 11H, 11H, 7EH; A
      DB   7FH, 49H, 49H, 49H, 36H; B
      DB   3EH, 41H, 41H, 41H, 22H; C
      DB   7FH, 41H, 41H, 22H, 1CH; D
      DB   7FH, 49H, 49H, 49H, 41H; E
      DB   7FH, 09H, 09H, 01H, 01H; F
      DB   3EH, 41H, 41H, 51H, 32H; G
      DB   7FH, 08H, 08H, 08H, 7FH; H
      DB   00H, 41H, 7FH, 41H, 00H; I
      DB   20H, 40H, 41H, 3FH, 01H; J
      DB   7FH, 08H, 14H, 22H, 41H; K
      DB   7FH, 40H, 40H, 40H, 40H; L
      DB   7FH, 02H, 04H, 02H, 7FH; M
      DB   7FH, 04H, 08H, 10H, 7FH; N
      DB   3EH, 41H, 41H, 41H, 3EH; O
      DB   7FH, 09H, 09H, 09H, 06H; P
      DB   3EH, 41H, 51H, 21H, 5EH; Q
      DB   7FH, 09H, 19H, 29H, 46H; R
      DB   46H, 49H, 49H, 49H, 31H; S
      DB   01H, 01H, 7FH, 01H, 01H; T
      DB   3FH, 40H, 40H, 40H, 3FH; U
      DB   1FH, 20H, 40H, 20H, 1FH; V
      DB   7FH, 20H, 18H, 20H, 7FH; W
      DB   63H, 14H, 08H, 14H, 63H; X
      DB   03H, 04H, 78H, 04H, 03H; Y
      DB   61H, 51H, 49H, 45H, 43H; Z
      DB   00H, 00H, 7FH, 41H, 41H; [
      DB   02H, 04H, 08H, 10H, 20H; "\"
      DB   41H, 41H, 7FH, 00H, 00H; ]
      DB   04H, 02H, 01H, 02H, 04H; ^
      DB   40H, 40H, 40H, 40H, 40H; _
      DB   00H, 01H, 02H, 04H, 00H; `
      DB   20H, 54H, 54H, 54H, 78H; a
      DB   7FH, 48H, 44H, 44H, 38H; b
      DB   38H, 44H, 44H, 44H, 20H; c
      DB   38H, 44H, 44H, 48H, 7FH; d
      DB   38H, 54H, 54H, 54H, 18H; e
      DB   08H, 7EH, 09H, 01H, 02H; f
      DB   08H, 14H, 54H, 54H, 3CH; g
      DB   7FH, 08H, 04H, 04H, 78H; h
      DB   00H, 44H, 7DH, 40H, 00H; i
      DB   20H, 40H, 44H, 3DH, 00H; j
      DB   00H, 7FH, 10H, 28H, 44H; k
      DB   00H, 41H, 7FH, 40H, 00H; l
      DB   7CH, 04H, 18H, 04H, 78H; m
      DB   7CH, 08H, 04H, 04H, 78H; n
      DB   38H, 44H, 44H, 44H, 38H; o
      DB   7CH, 14H, 14H, 14H, 08H; p
      DB   08H, 14H, 14H, 18H, 7CH; q
      DB   7CH, 08H, 04H, 04H, 08H; r
      DB   48H, 54H, 54H, 54H, 20H; s
      DB   04H, 3FH, 44H, 40H, 20H; t
      DB   3CH, 40H, 40H, 20H, 7CH; u
      DB   1CH, 20H, 40H, 20H, 1CH; v
      DB   3CH, 40H, 30H, 40H, 3CH; w
      DB   44H, 28H, 10H, 28H, 44H; x
      DB   0CH, 50H, 50H, 50H, 3CH; y
      DB   44H, 64H, 54H, 4CH, 44H; z
      DB       00H, 08H, 36H, 41H, 00H; {
      DB   00H, 00H, 7FH, 00H, 00H; |
      DB   00H, 41H, 36H, 08H, 00H; }
      DB   08H, 08H, 2AH, 1CH, 08H; ->
      DB   08H, 1CH, 2AH, 08H, 08 ; <-
.STACK

MINHA_PILHA DW 128 DUP(?)

END
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Voltar para Intel x86

Quem está online

Usuários navegando neste fórum: Majestic-12 [Bot] e 1 visitante

x