Pokaż wyniki 1 do 4 z 4

Temat: Asembler - Program rysujący figury - prośba o pomoc w modyfikacji

  1. #1

    Domyślnie Asembler - Program rysujący figury - prośba o pomoc w modyfikacji

    Witam!
    Potrzebuję pomocy przy zmodyfikowaniu istniejącego już programu, wygląda tak:
    http://img33.imageshack.us/img33/5857/asm.png
    W górnej części wybieramy kolor, niżej mamy 2 wiersze - w pierwszym rysujemy prostokąty, zaś w drugim trójkąty.
    Czy analogicznie ktoś potrafiłby mi pomóc w dorobieniu rysowania okręgów/kół?

    Poniżej zamieszczam kod programu:


    .MODEL small
    .486

    delay macro time
    local ext,iter
    push cx
    mov cx,time
    ext:
    push cx
    mov cx,5000
    iter:
    loop iter
    pop cx
    loop ext
    pop cx
    endm

    sdat segment use16
    buffer db 100 dup(0)
    wpis db 100 dup(0)
    DDX DW ?
    DDY DW ?
    delta DW ?
    E1 DW ?
    E2 DW ?
    X DW ?
    Y DW ?
    SGNX DW ?
    SGNY DW ?
    X0 DW ?
    X1 DW ?
    X2 DW ?
    xx DW ?
    yy DW ?
    Y0 DW ?
    Y1 DW ?
    Y2 DW ?
    Color DB ?
    LICZNIK dw ?
    TRYB dw ?
    TMP DW ?
    DDX_DDY DW ?

    sdat ends;
    ;-----------------------------------------------------------------------------------

    putpixel MACRO XX, YY, kolor

    PUSH AX
    PUSH BX
    PUSH CX
    PUSH DX
    MOV AH,0CH
    MOV AL,kolor
    MOV CX,XX
    MOV DX,YY
    INT 10H
    POP DX
    POP CX
    POP BX
    POP AX
    ENDM

    ;***********************************************

    STK segment stack
    dw 100 dup(?)
    STK ends;

    codseg segment use16
    assume ds:sdat,cs:codseg,ss:stk



    MAIN PROC far

    MOV COLOR,1
    MOV TRYB,0


    MOV AH,00H
    MOV AL,12H
    INT 10H

    mov ax,00h
    int 33h

    mov ax,01h
    int 33h

    mov cx,0020h
    mov dx,0020h
    loop2:
    mov bx,0020h
    mov ax,0020h
    loop1:
    putpixel dx,bx,5
    inc bx
    sub ax,01h
    JNZ loop1
    inc dx
    sub cx,01h
    JNZ loop2

    mov cx,0020h
    mov dx,0060h
    loop4:
    mov bx,0020h
    mov ax,0020h
    loop3:
    putpixel dx,bx,1
    inc bx
    sub ax,01h
    JNZ loop3
    inc dx
    sub cx,01h
    JNZ loop4

    mov cx,0020h
    mov dx,00A0h
    loop6:
    mov bx,0020h
    mov ax,0020h
    loop5:
    putpixel dx,bx,0Ah
    inc bx
    sub ax,01h
    JNZ loop5
    inc dx
    sub cx,01h
    JNZ loop6


    mov cx,0020h
    mov dx,00E0h
    loop8:
    mov bx,0020h
    mov ax,0020h
    loop7:
    putpixel dx,bx,07h
    inc bx
    sub ax,01h
    JNZ loop7
    inc dx
    sub cx,01h
    JNZ loop8

    mov cx,0020h
    mov dx,0200h
    loop14:
    mov bx,0020h
    mov ax,0020h
    loop13:
    putpixel dx,bx,04h
    inc bx
    sub ax,01h
    JNZ loop13
    inc dx
    sub cx,01h
    JNZ loop14
    ;----------------------------------------------------------------------------
    mov COLOR, 0
    mov x0,200h
    mov x1,220h
    mov y0,20h
    mov y1,40h
    call bresenham
    mov x0,200h
    mov x1,220h
    mov y0,40h
    mov y1,20h
    call bresenham

    mov cx,0300h
    mov dx,0001h
    loop1444:
    mov bx,00FFh
    mov ax,0001h
    loop1333:
    putpixel dx,bx,04h
    inc bx
    sub ax,01h
    JNZ loop1333
    inc dx
    sub cx,01h
    JNZ loop1444

    mov cx,0300h
    mov dx,0001h
    loop1444a:
    mov bx,0050h
    mov ax,0001h
    loop1333a:
    putpixel dx,bx,04h
    inc bx
    sub ax,01h
    JNZ loop1333a
    inc dx
    sub cx,01h
    JNZ loop1444a


    mov COLOR, 01h
    ;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    loop21:

    mov ax,0005h
    mov bx,01h
    int 33h
    sub ax,01h
    JNZ loop21
    mov ax,03h
    int 33h
    mov x0,cx
    mov y0,dx
    mov AX, 50h
    sub AX, y0
    JS ddd
    mov y0, 51h
    ddd:
    mov xx,cx
    mov yy,dx
    ;-----------------------------------------------------

    CMP yy,0020h
    JG dalej
    JMP loop23a
    dalej:
    CMP yy,0040h
    JL dalej2
    JMP loop23a
    dalej2:
    CMP xx,0020h
    JG dalej3
    JMP loop23a
    dalej3:
    CMP xx,0040h
    JL dalej4
    JMP loop23a
    dalej4:
    MOV COLOR,5
    JMP loop21

    loop23a:
    CMP yy,0020h
    JG dalej1
    JMP loop23b
    dalej1:
    CMP yy,0040h
    JL dalej12
    JMP loop23b
    dalej12:
    CMP xx,0060h
    JG dalej13
    JMP loop23b
    dalej13:
    CMP xx,0080h
    JL dalej14
    JMP loop23b
    dalej14:
    MOV COLOR,1
    JMP loop21

    loop23b:
    CMP yy,0020h
    JG dalej2a
    JMP loop23c
    dalej2a:
    CMP yy,0040h
    JL dalej22
    JMP loop23c
    dalej22:
    CMP xx,00A0h
    JG dalej23
    JMP loop23c
    dalej23:
    CMP xx,00C0h
    JL dalej24
    JMP loop23c
    dalej24:
    MOV COLOR,0Ah
    JMP loop21

    loop23c:
    CMP yy,0020h
    JG dalej3a
    JMP loop23d
    dalej3a:
    CMP yy,0040h
    JL dalej32
    JMP loop23d
    dalej32:
    CMP xx,00E0h
    JG dalej33
    JMP loop23d
    dalej33:
    CMP xx,0100h
    JL dalej34
    JMP loop23d
    dalej34:
    MOV COLOR,7h
    JMP loop21

    loop23d:
    CMP yy,00ffh
    JG dalej4a
    JMP loop23f
    dalej4a:
    MOV TRYB, 0
    JMP loop23

    loop23f:
    CMP yy,0020h
    JG dalej6a
    JMP loop23g
    dalej6a:
    CMP yy,0040h
    JL dalej62
    JMP loop23g
    dalej62:
    CMP xx,0200h
    JG dalej63
    JMP loop23g
    dalej63:
    CMP xx,0220h
    JL dalej64
    JMP loop23g
    dalej64:
    MOV AH,00H
    MOV AL,03
    INT 10H
    mov ax,4c00h
    int 21h
    JMP loop21

    loop23g:
    CMP yy,0050h
    JG dalej7a
    JMP loop23h
    dalej7a:
    CMP yy,00FFh
    JL dalej72
    JMP loop23h
    dalej72:
    MOV TRYB, 2
    JMP loop23

    loop23h:
    JMP loop21


    loop23:

    mov ax,06h
    mov bx,01h
    int 33h
    sub ax,01h
    JZ loop23

    loop22:
    mov ax,0005h
    mov bx,01h
    int 33h
    sub ax,01h
    JNZ loop22
    mov ax,03h
    int 33h
    mov x1,cx
    mov y1,dx
    mov x2,cx
    mov y2,dx
    mov AX, 51h
    sub AX, y1
    JS ddd2
    JMP loop21
    ddd2:

    loop24:
    mov ax,06h
    mov bx,01h
    int 33h
    sub ax,01h
    JZ loop24

    CMP TRYB, 2
    JZ kontynuuj2

    call bresenham

    loop22aaa:
    mov ax,0005h
    mov bx,01h
    int 33h
    sub ax,01h
    JNZ loop22aaa
    mov ax,03h
    int 33h
    mov x1,cx
    mov y1,dx

    loop24aaa:
    mov ax,06h
    mov bx,01h
    int 33h
    sub ax,01h
    JZ loop24aaa

    call bresenham

    mov ax,x2
    mov x0,ax
    mov ax,y2
    mov y0,ax

    call bresenham

    JMP loop21
    ;--------------------------------------------------------------------------


    kontynuuj:

    putpixel x0,y0,COLOR
    JMP loop21

    kontynuuj2:


    MOV AX,X1 ;obliczany DDX
    SUB AX,X0
    JS kw2
    MOV DDX,AX
    MOV AX,Y1 ;obliczamy DDY
    SUB AX,Y0
    JS kw3
    MOV DDY,AX
    JMP rys

    kw2:
    MOV ax, x0
    MOV BX, X1
    MOV x1, ax
    MOV X0, BX
    MOV AX,X1 ;obliczany DDX
    SUB AX,X0
    MOV DDX,AX
    MOV AX,Y1 ;obliczamy DDY
    SUB AX,Y0
    JS kw3
    MOV DDY,AX
    JMP rys
    kw3:
    MOV ax, y0
    MOV BX, y1
    MOV y1, ax
    MOV y0, BX
    MOV AX,Y1 ;obliczamy DDY
    SUB AX,Y0
    MOV DDY,AX

    rys:
    mov cx,DDX
    mov dx,x0
    loopk1:
    mov bx,y0
    mov ax,DDY
    loopk2:
    putpixel dx,bx,COLOR
    inc bx
    sub ax,01h
    JNZ loopk2
    inc dx
    sub cx,01h
    JNZ loopk1

    JMP loop21

    kontynuuj3:

    JMP loop21

    ;************************************************* ********
    MOV AH,08H;GETCH
    INT 21H
    MOV AH,00H; graficzny tryb
    MOV AL,03; tryb tekstowy
    INT 10H

    mov ax,4c00h
    int 21h

    MAIN ENDP

    ;************************************************* ********

    bresenham PROC
    PUSH AX
    PUSH BX
    PUSH CX
    PUSH DX

    MOV AX,X1 ;obliczany DDX
    SUB AX,X0
    MOV DDX,AX

    MOV SGNX,0001H ;sprawdzanie czy DDX>0
    TEST DDX,8000H
    JZ dx_dodatni
    MOV SGNX,0FFFFH ;-1
    MOV AX,X0 ; /DDX/
    SUB AX,X1
    MOV DDX,AX
    dx_dodatni:

    MOV AX,Y1 ;obliczamy DDY
    SUB AX,Y0
    MOV DDY,AX

    MOV SGNY,0001H ;sprawdzenie czy DDY>0
    TEST DDY,8000H
    JZ dy_dodatni
    MOV SGNY,0FFFFH ;-1
    MOV AX,Y0 ; /DDY/
    SUB AX,Y1
    MOV DDY,AX
    dy_dodatni:

    MOV AX,DDX ;sprawdzenie czy DDX-DDY>0
    SUB AX,DDY
    MOV DDX_DDY,0H
    TEST AX,8000H
    JZ DDY_wieksze_od_DDX
    MOV DDX_DDY,1H ; dla DDY>DDX zamiana DDX<=>DDY
    MOV AX,DDX
    MOV TMP,AX
    MOV AX,DDY
    MOV DDX,AX
    MOV AX,TMP
    MOV DDY,AX

    DDY_wieksze_od_DDX:

    MOV AX,DDY ; 2*(DDY-DDX)
    SUB AX,DDX
    SHL AX,1
    MOV delta,AX; delta=2*(DDY-DDX)
    MOV AX,DDY
    SHL AX,1
    MOV E1,AX ;E1=2*DDY
    MOV AX,delta
    MOV E2,AX ;E2=delta=2*(DDY-DDX)
    MOV AX,X0 ;X=X0 Y=Y0
    MOV X,AX
    MOV AX,Y0
    MOV Y,AX

    putpixel X,Y,Color

    iteracja:
    TEST delta,8000H
    JZ delta_dodatnia

    TEST DDX_DDY,1H
    JZ zamiana_1
    MOV AX,Y ;dla kata > 45 stopni INC Y
    ADD AX,SGNY
    MOV Y,AX
    JMP bez_zamiany_1
    zamiana_1:
    MOV AX,X ;INCX ;dla kata < 45 stopni ICN X
    ADD AX,SGNX
    MOV X,AX
    bez_zamiany_1:
    MOV AX,delta
    ADD AX,E1
    MOV delta,AX
    JMP przeskok_delta

    delta_dodatnia:

    MOV AX,X ;INCX
    ADD AX,SGNX
    MOV X,AX
    MOV AX,Y ;INCY
    ADD AX,SGNY
    MOV Y,AX


    MOV AX,delta
    ADD AX,E2
    MOV delta,AX
    przeskok_delta:

    putpixel X,Y,Color
    MOV AX,X1
    SUB AX,X
    SUB AX,1
    JC koniec
    JMP iteracja
    koniec:


    POP DX
    POP CX
    POP BX
    POP AX
    RET
    bresenham ENDP

    ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~

    codseg ends
    end main

  2. Domyślnie

    Niestety,wytłumaczyć nie wytłumaczę,ale mogę pokazać Ci wędkę - proszę.
    Rybki przy odrobinie szczęścia sam złapiesz.

  3. #3

    Domyślnie

    a czy ktoś pomógłby mi w zrozumieniu tego programu dodając do istniejącego kodu komentarze?

  4. #4

    Domyślnie

    oczekujesz pomocy, wrzucasz mase kodu, a ludzie nie maja czasu i checi na czytanie tego.


    powiedz co program ma robic, dal 10 linijek przykladu dla 1-2 figur i juz, ktos ci odpowie. moze nawet ja

Podobne wątki

  1. Prośba o pomoc - IT Underground
    By siwa-megi in forum Współpraca/Moderacja
    Odpowiedzi: 1
    Autor: 08-25-2009, 09:55
  2. IP - prośba o pomoc
    By Anihilator in forum Anonimowość w sieci
    Odpowiedzi: 5
    Autor: 06-09-2009, 13:47
  3. Prośba o wszelaką pomoc,UBUNT 6.10
    By Iwan in forum Linux
    Odpowiedzi: 18
    Autor: 04-29-2008, 22:04
  4. Odpowiedzi: 1
    Autor: 10-17-2007, 18:21
  5. Wielka Prośba o pomoc w walce z routerem
    By Parol in forum Hacking
    Odpowiedzi: 2
    Autor: 01-31-2007, 17:33

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj