killbios
26:05:2007, 15:52
усем доброго дня суток..!!!
тока начинаю учить асм....а именно графические его возможности.....
нужна программка которая рисует линию....
хочу посмотреть, как это работает, шоб потом над ней поиздеватса...
*(только желательно, что бы она полная была и код под дОС)
заранее сенкс!!!!
killbios
28:05:2007, 09:52
пасиба..за ссылочку, посмотрел но разбралса не доконца...
как я понял, то там графика вызываетса из готовой ф-ии....
напр: Used to draw simple lines (0 and 45 degrees in 4 quadrants). Called from GrLine.c
это мне пока не понятно......мне с простенького - типа когда так прога начинаетса:
.model small
.stack 100h
.Data
))
Hex_Vulture
28:05:2007, 19:03
ну смотри, тут был пост про графу на асме, в чем ссуть.
; вызовем 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 у меня точно работает.
killbios
6:06:2007, 15:21
народ!! помогите доделать прогу - дальше у мя мозгов не хватает....((
надо чтобы по очередности зажигалсь каждые из этих четырехугольгиков - сначала верхний, далее он тухнет и загораетса нижнийи так далее......это должно происходить в один момент - один горит, второй - нет....
заранее спасиба
вот код:
.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-хугольника с общей стороной....
progstone
16:06:2007, 14:44
снеси справочник толковй по асму посмотри int10
progstone
28:08:2007, 19:07
есть два способа поставит точку
1)через int10h видео прерывание
2)непосредственно записью в видеопамять
Ассемблер не язык высокого уровня чтобы в нем была стандартная библиотека для графических примитивов поэтому линия рисуется по точкам.А конкретнее есть метод ЦДА и метод Брезентхема для рисования линии поиши в поисковеке нет напиши мне я тебе солью.