люди обьясните!

Тема в разделе "Другие", создана пользователем killbios, 26 май 2007.

Статус темы:
Закрыта.
  1. killbios

    killbios Гость

    усем доброго дня суток..!!!

    тока начинаю учить асм....а именно графические его возможности.....
    нужна программка которая рисует линию....

    хочу посмотреть, как это работает, шоб потом над ней поиздеватса...
    *(только желательно, что бы она полная была и код под дОС)


    заранее сенкс!!!!
     
  2. killbios

    killbios Гость

    пасиба..за ссылочку, посмотрел но разбралса не доконца...
    как я понял, то там графика вызываетса из готовой ф-ии....

    напр: Used to draw simple lines (0 and 45 degrees in 4 quadrants). Called from GrLine.c

    это мне пока не понятно......мне с простенького - типа когда так прога начинаетса:
    .model small
    .stack 100h
    .Data

    ))
     
  3. Hex_Vulture

    Hex_Vulture Гость

    ну смотри, тут был пост про графу на асме, в чем ссуть.

    ; вызовем 320x200 графический режим
    mov ax,0013h
    int 10h

    а дальше в буффер по адресу 0A000h кладешь байты - это рисование в буффер.

    >>Used to draw simple lines (0 and 45 degrees in 4 quadrants). Called from GrLine.c
    ну это видимо чувак вызывает процедуру из GrLine.c, но тебе -то на это наплевать.
    просто вызови ее из своей программы, ну хоть что-нибудь работающее у тебя есть?


    тока у него там VGASEG EQU 0a000H а не 0A000h - ну попробуй и так и так(может у него режим другой), я не специалист по DOS, но по крайней мере с 0A000h у меня точно работает.
     
  4. killbios

    killbios Гость

    народ!! помогите доделать прогу - дальше у мя мозгов не хватает....((

    надо чтобы по очередности зажигалсь каждые из этих четырехугольгиков - сначала верхний, далее он тухнет и загораетса нижнийи так далее......это должно происходить в один момент - один горит, второй - нет....

    заранее спасиба


    вот код:

    .286; dlia komand shl,shr
    JUMPS
    ASSUME CS:_CODE,DS:_DATA,SS:_STACK
    _STACK SEGMENT PARA STACK 'STACK'
    DB 2048 DUP (?)
    _STACK ENDS
    _DATA SEGMENT PARA PUBLIC 'DATA'
    COLORS DB 100*64 DUP(0)
    COLOR DB 0
    MAX DB 0
    X_WIDTH DW 110
    _DATA ENDS
    _CODE SEGMENT PARA PUBLIC 'CODE'

    ;===============================================

    MOV AX,0013H
    INT 10H
    ;MOV BL,33
    WAIT_ESC:
    ;dec BL
    MOV AX,0A000H

    ;=============nachalo figyri=============

    MOV ES,AX
    MOV AX,100 ;koordinata x
    MOV CX,40;DLINA POLOSKI po gorizontali
    MOV DX,50 ;koordinata y
    ;mov bh,bl
    NEXT_I:
    mov color,3h
    PUSH CX
    MOV CX,50; wirina po veriakli
    dec ax
    PUSH AX
    NEXT_J:
    CALL PUTPIXEL
    dec AX
    LOOP NEXT_J
    inc dx
    POP AX
    POP CX
    ;INC bh ;NA PRAVO
    LOOP NEXT_I
    mov ah,08h
    int 21h

    ;===============konec pervoi figyri===========

    ;============Vtoraya figura==============


    mov ax,100 ;otstyp 2kvadrata
    MOV CX,40;DLINA POLOSKI
    MOV DX,50 ;po x
    NEXT_L:
    mov color,4h
    PUSH CX
    MOV CX,50; wirina
    inc ax
    PUSH AX
    NEXT_K:
    CALL PUTPIXEL
    dec AX
    LOOP NEXT_K
    inc dX
    POP AX
    POP CX
    ;dec bh
    LOOP NEXT_L
    mov ah,08h
    int 21h

    ;===============konec 2oi figuri=======================

    IN AL,60H
    CMP AL,1
    JNE WAIT_ESC
    ;YSTANOVKA REGIMA CEKLICHESKOGO SDVIGA
    MOV AX,0003H
    INT 10H
    MOV AX,4C00H
    INT 21H

    ;==========================PutPixel===========================

    PUTPIXEL PROC NEAR
    PUSHA
    PUSH dX; zanesti slovo v stek
    LEA SI, COLOR;zagryzit efektivnui adres(smewenie)
    MOV DX, 320
    MUL Dx; ymnogit bez znaka
    POP dx; izvlech slovo iz steka
    ADD ax,Dx
    MOV DI,Ax
    MOVSW ;pereslat cepochky slov
    POPA
    RET
    PUTPIXEL ENDP

    _CODE ENDS
    end


















    эта прога рисует 2 4-хугольника с общей стороной....
     
  5. progstone

    progstone Гость

    снеси справочник толковй по асму посмотри int10
     
  6. progstone

    progstone Гость

    есть два способа поставит точку
    1)через int10h видео прерывание
    2)непосредственно записью в видеопамять
    Ассемблер не язык высокого уровня чтобы в нем была стандартная библиотека для графических примитивов поэтому линия рисуется по точкам.А конкретнее есть метод ЦДА и метод Брезентхема для рисования линии поиши в поисковеке нет напиши мне я тебе солью.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей