Помогите с програмкой на ассемблере!

Тема в разделе "Другие", создана пользователем Guest_Merlin_*, 8 янв 2006.

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

    Guest_Merlin_* Гость

    Народ помогите нужна прога на ассемблере которая рисует небольшой круг на экране и через определенное время перемещает его в рандомную позицию. Очень нужно, горю на допуске к эзамену! Если что у кого есть вышлите на akron_m@mail.ru
     
  2. logosman

    logosman Гость

    Когда-то давно написал под DOS на TASM. Пишет напрямую в видео память 0xa000 (real mode).

    Без закраски.

    ; IN: XC,YC - Position
    ; R - RADIUS
    ; COLOR - Color of circle
    xc EQU ss:[bp+8]
    yc EQU ss:[bp+6]
    R EQU ss:[bp+4]
    Color EQU ss:[bp+2]

    CIRCLE_PROC PROC
    mov bp,sp

    mov ax,yc
    sub ax,R
    mov [y],ax
    inc [y]

    mov ax,xc
    sub ax,R
    inc ax
    mov [xb],ax

    xor edx,edx

    mov cx,R
    shl cx,1
    dec cx
    @FOR_Y:
    push cx

    mov ax,[xb]
    mov [x],ax

    mov cx,R
    shl cx,1
    dec cx
    @FOR_X:

    movzx eax,[x]
    movzx ebx,word ptr xc
    sub eax,ebx
    imul eax

    xchg eax,esi

    movzx eax,[y]
    movzx ebx,word ptr yc
    sub eax,ebx
    imul eax

    add eax,esi

    movzx ebx,word ptr R
    imul ebx,ebx

    cmp eax,ebx
    ja @NOT_CIRCLE

    movzx ebx,word ptr R
    dec ebx
    imul ebx,ebx

    cmp eax,ebx
    jb @NOT_CIRCLE

    imul ax,[y],320
    add ax,[x]
    xchg di,ax

    mov bx,ds

    mov ax,0a000h
    mov ds,ax

    mov ax,color
    mov byte ptr [di],al

    mov ds,bx

    @NOT_CIRCLE:
    inc [x]
    loop @FOR_X

    pop cx

    inc [y]
    loop @FOR_Y

    ret 8

    xb dw ?
    x dw ?
    y dw ?
    ENDP

    circle MACRO x,y,R,color
    push x y R color
    call circle_proc
    endm


    С закраской:

    ; IN: XC,YC - Position
    ; R - RADIUS
    ; COLOR - Color of circle
    xc EQU ss:[bp+8]
    yc EQU ss:[bp+6]
    R EQU ss:[bp+4]
    Color EQU ss:[bp+2]

    FILLCIRCLE_PROC PROC
    mov bp,sp

    mov ax,yc
    sub ax,R
    mov [y],ax
    inc [y]

    mov ax,xc
    sub ax,R
    inc ax
    mov [xb],ax

    xor edx,edx

    mov cx,R
    shl cx,1
    dec cx
    @FOR_Y:
    push cx

    mov ax,[xb]
    mov [x],ax

    mov cx,R
    shl cx,1
    dec cx
    @FOR_X:

    movzx eax,[x]
    movzx ebx,word ptr xc
    sub eax,ebx
    imul eax

    xchg eax,esi

    movzx eax,[y]
    movzx ebx,word ptr yc
    sub eax,ebx
    imul eax

    add eax,esi

    movzx ebx,word ptr R
    imul ebx,ebx

    cmp eax,ebx
    ja @NOT_CIRCLE

    imul ax,[y],320
    add ax,[x]
    xchg di,ax

    mov bx,ds

    mov ax,0a000h
    mov ds,ax

    mov ax,color
    mov byte ptr [di],al

    mov ds,bx

    @NOT_CIRCLE:
    inc [x]
    loop @FOR_X

    pop cx

    inc [y]
    loop @FOR_Y

    ret 8

    xb dw ?
    x dw ?
    y dw ?
    ENDP

    fillcircle MACRO x,y,R,color
    push x y R color
    call fillcircle_proc
    endm

    На почту кидать некогда.
     
Загрузка...
Похожие Темы - Помогите програмкой на
  1. limbra
    Ответов:
    3
    Просмотров:
    47
  2. NylevoiChelovek
    Ответов:
    5
    Просмотров:
    113
  3. Ruska132
    Ответов:
    49
    Просмотров:
    420
  4. gURaBA_N
    Ответов:
    7
    Просмотров:
    149
  5. uxbmw3w
    Ответов:
    0
    Просмотров:
    69
Статус темы:
Закрыта.

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