IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Бегущая точка, графика в тасме
сообщение
Сообщение #1


Гость






Привет спецам...
Вот пытаюсь разобраться с этим "зверем" - Assemblerом.
Нужно написать лабораторную по графике - бегущая по горизонтали точка.
Вот чегой то накарякал, точка пробегает справа на лево 1 раз, только очень быстро, глазу не заметно...
А как вставить в Assemblerе регулируемую паузу? Есть ли какая ф-ция для етого?
А может это все можно написать по другому, более толково?
Буду рад любой помощи и советам.
	.model	tiny
.code
org 100h
start:
mov ax, 0013h
int 10h
mov cx, 319
mov dx, 100;рисую точку в 100 строке
ekran:
int 10h
mov al, 00110011b;зеленая точка
mov ah, 0Ch
int 10h
dec cx
inc cx
inc cx
mov al, 000b   ; черным затушевываю хвост линии
mov ah, 0Ch
int 10h
dec cx
dec cx
int 10h
jns ekran
ret
end start
Заранее благодарен.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






1). Метку ekran надо сместить на строку ниже.
2).

DEC CX
INC CX
INC CX


Вполне модно заменить на один INC CX.
3).
Подытожим:

.model tiny
.code
org 100h
start:
mov ax, 0013h         ;режим
int 10h                     ;установим
mov cx, 319             ;справа налево... по-еврейски как-то
mov dx, 100             ;строка

ekran:
mov ax,0C00h          ;чёрным закрасим предыдущую точку (неважно, что её
                              ;может и не было
int 10h                     ;зарисуем
dec cx                     ;переходим к следующей точке
mov ax,0C33h          ;зелёным
int 10h                     ;рисуем
inc cx                       ;вернёмся к предыдущей
mov ah,1                  ;проверка на нажатие кловиши
int 16h                     ;нажата/ненажата возвращает в ZF
jz done                    ;тут возможно jnz - не помню
loop ekran               ;само изменит CX
mov cx,319              ;заново!
jmp ekran
done:
xor ah,ah                 ;очистка буфера клавы
int 16h
ret
end start
Вот... А паузу можно всунуть по-разному... Можно хоть int 8h перехватывать, а можно просто - через int 21h получать время и работать с миллисекундами.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 3.05.2024 18:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name