ОБСУЖДЕНИЕ

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

6 ответов 6,3 тыс.
Статус
Закрыто для дальнейших ответов.
Автор темы
усем доброго дня суток..!!!

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

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


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

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

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

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

; вызовем 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 у меня точно работает.
 
народ!! помогите доделать прогу - дальше у мя мозгов не хватает....((

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

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


вот код:

.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-хугольника с общей стороной....
 
снеси справочник толковй по асму посмотри int10
 
есть два способа поставит точку
1)через int10h видео прерывание
2)непосредственно записью в видеопамять
Ассемблер не язык высокого уровня чтобы в нем была стандартная библиотека для графических примитивов поэтому линия рисуется по точкам.А конкретнее есть метод ЦДА и метод Брезентхема для рисования линии поиши в поисковеке нет напиши мне я тебе солью.
 
Статус
Закрыто для дальнейших ответов.