Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2010, 16:36   #1
morgonXak
 
Регистрация: 16.12.2009
Сообщений: 7
Счастье графика на ассемблере

В центре экрана рисуется круг диаметром 16 пиксел. При нажиатии клавиш управления
курсором (стрелки вверх-вниз, вправо-влево) он передвигается со скоростью 3 пиксела на
нажатие. При достижении центром круга края экрана, движение в данном направлении
остановить.

у меня есть как нарисовать круг, я не знаю как его передвинуть на 3 пиксиля)))

помогите, буду признателен)))
зарание спасибо!!!!!
Если что исходник круга, прикрипил)))
в архиве код находится исходник но он не идет))
помогите)))))
Вложения
Тип файла: rar circle.rar (3.0 Кб, 77 просмотров)
Тип файла: rar код.rar (1.9 Кб, 41 просмотров)

Последний раз редактировалось morgonXak; 24.01.2010 в 14:36.
morgonXak вне форума Ответить с цитированием
Старый 25.01.2010, 05:13   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

morgonXak
анимация так не делается, каждый раз рассчитывать по-точечный вывод окружности, это не дело, ниже пример вывода "шагающего" человечка
Код:
.model tiny
.286
.code
org 100h
start:  MOV AH,0Fh ;запомнить видеорежим -- видеорежим может быть не обязательно равным 3
    INT 10h
    MOV byte ptr VIDEOR,AL; запоминаем видеорежим чтобы потом его востановить
    mov    ax,0A000h 
        mov    ES,ax
        MOV     AX,13h
        INT     10h
    cld
        MOV     BX,2 ; инициализируем индекс фаз рисунка
        MOV    DI,320*12
    mov cx,200; время на экране -- ставь любое число
MOVE_MASK: push cx
    MOV  SI,tab[bx]
SHOW_KADR: MOV  CX,13; количество строк в рисунке
DRAW_H: push    cx    
    MOV    CX,10 ; количество точек в строке делим на 2    
        REP MOVSW; выводим сразу по 2 точки
        ADD    DI,320-20; переходим на следующую строку
        pop    cx
    loop DRAW_H
    xor bx,2; переключаем идекс фазы рисунка
    sub di,320*13-1; 1 - плавность перемещения по экрану чем больше число - тем быстрее
    push bx
    mov ah,0    ;Получить системное время
    int 1Ah    ; Return: CX:DX=число тиков от полуночи 
    mov bx,dx  ;1 секунда=18.2 тика        
delay:    int 1Ah    ;пропускаем 55 милисекунды
    cmp bx,dx
    jz delay
    pop bx
    pop cx
    loop MOVE_MASK
exit:   MOV     AX,VIDEOR; восстанавливаем первоначальный режим
        INT     10h                 
        INT     20h; выход в DOS
H1    DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,9,9,0
      DB 0,0,0,0,0,0,0,0,0,0,9,9,0,0,9,9,0,0,9,9
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
     
H2    DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,0,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,9,9,0,0
      DB 0,0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,9,9,0
      DB 0,0,0,0,0,0,0,0,0,0,9,9,0,0,0,0,0,0,9,9
tab dw H1,H2; адреса фаз рисунков
VIDEOR dw 0
end    start
нарисуй матрицу с кругом в 16 пикселов и используй ее, только в твоем случае обрабатывать нужно не 1Ah прерывание, а 9 или 16h
Mikl___ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Планировщик на ассемблере Spartiat Помощь студентам 0 04.06.2009 18:43
Вывод графика на ассемблере Foster Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 11 24.03.2009 00:32
Часики на Ассемблере -=Hellsing-= Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 7 07.02.2009 11:14