1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Ajuda com Assembly

Discussão em 'Programação' iniciada por Andreleo, 2 de Junho de 2008. (Respostas: 4; Visualizações: 1328)

  1. Andreleo

    Andreleo Power Member

    Preciso um programa em assembly que desenhe um quadrado ou rectangulo.

    Quem pudesse ajudar agradecia :)

    Obrigado.
     
  2. OdracirPT

    OdracirPT Power Member

    Queres um programa já feito? Se é isso... :rolleyes:
     
    Última edição: 2 de Junho de 2008
  3. Andreleo

    Andreleo Power Member

    Estou enganado porque?
     
  4. Porque aqui não se fazem trabalhos. Se tiveres alguma coisa já feita e precisares de ajuda diz. Senão, esquece.
     
  5. Andreleo

    Andreleo Power Member

    Eu tenho isto:

    Código:
    ;programa que altera a cor de um rectangulo
    org 100h
            escrita equ 40h
            ecra equ 1
    section .text
            
            mov ah,00h
            mov al,13h              ;modo video 320*200 256 cores
            int 10h
            mov byte [cor],100
            mov byte [R],100
            mov byte [G],100
            mov byte [B],100
                            
            mov cx,16
            linhas: mov word [nlinhas],cx
                    mov cx, 100
                    colunas:mov word [ncolunas], cx
                            mov ah, 0ch
                            mov al, byte [cor]
                            mov bh, 0
                            mov cx, word [ncolunas]
                            mov dx, word [nlinhas]
                            int 10h
                            mov cx, word [ncolunas]
                    loop colunas           ;ciclo para desenhar os pixels colunas
    
                    mov cx, word [nlinhas]
            loop linhas                  ;ciclo para desenhar os pixels linhas 
       
    teclapremida:
            ;ler uma tecla
            mov ah, 07h
            int 21h
            mov byte [tecla],al        
            ;verifica se ‚ a tecla w
            tecla_w:cmp byte [tecla], 119
                    jnz tecla_s
                    inc byte [R]
                    call novacor
            ;verifica se ‚ a tecla s
            tecla_s:cmp byte [tecla], 115
                    jnz tecla_e
                    dec byte [R]
                    call novacor
            ;verifica se ‚ a tecla e
            tecla_e:cmp byte [tecla], 101
                    jnz tecla_d
                    inc byte [G]
                    call novacor
            tecla_d:cmp byte [tecla], 100
                    jnz tecla_r
                    dec byte [G]
                    call novacor
            tecla_r:cmp byte [tecla], 114
                    jnz tecla_f
                    inc byte [B]
                    call novacor
            tecla_f:cmp byte [tecla], 102
                    jnz tecla_q
                    dec byte [B]
                    call novacor
            tecla_q:cmp byte [tecla], 113
                    jnz teclapremida
                    jmp saidavideo
            ;definir a nova cor
            novacor:mov ah, 10h
                    mov al, 10h
                    mov bl, byte [cor]
                    mov bh, 0
                    mov dh, byte [R]
                    mov ch, byte [G]
                    mov cl, byte [B]
                    int 10h
                    ret
     
    saidavideo:
            mov ah,00h
            mov al,03h
            int 10h
            mov ah,4ch      ;saida para o dos
            int 21h
    section .data
            pixel db "."
            novalinha db 13,10
    section .bss
            ncolunas resw 1
            nlinhas resw 1
            cor resb 1
            R resb 1
            G resb 1
            B resb 1
            tecla resb 1
    
    Mas isto tem um rectangulo preenchido e consoante a tecla que se carregue a cor do preenchimento muda. E eu queria so desenhar o quadrado com uma cor escolhida pelo programador msm no proprio programa.

    Obrigado.
     
    Última edição: 2 de Junho de 2008

Partilhar esta Página