Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/16: Рейтинг темы: голосов - 16, средняя оценка - 4.69
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
1
TASM

Screensaver

17.09.2010, 15:20. Показов 3309. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужен Screensaver написаный на Assembler (TASM). В котором бы ездил текст по екрану и отбивался от краев ну как на Windows!

Помогите найти!!!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2010, 15:20
Ответы с готовыми решениями:

Screensaver, выводящий дату и время
Вот есть код на ассемблере с выводом текущей даты\времени на экран. А нужно сделать из этого...

Устранить screensaver
На предприятии до фига ретивая служба безопасности придумала идиотское правило. На всех компьютерах...

Batch Screensaver
Возникла идея написать скринсэйвер на бат. Допустим просто поставить картинку на весь экран как...

Советы по созданию ScreenSaver
Пока не знаю в какой даже раздел написать пост. Задумал написать свой ss на C#. Идея просто и...

18
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
17.09.2010, 16:07 2
а чем не устраивает Плавающий текст ?
0
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
17.09.2010, 16:16  [ТС] 3
Понимаешь, просто изначально мне поставили задание, сделать что бы "ездил текст" ну вот я и пытался рыть в этом направлении, а сегодня сказали сделать типа как в виндовс

Конечно же твой труд мне ОЧЕНЬ помог с плавающим текстом, за что тебе огромное человеческое СПАСИБО!

А не можешь помочь теперь с этим Очень прошу ато я уже и готовые ОСИ искал что бы хоть как-то пример посмотреть нигде нету
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
17.09.2010, 16:23 4
Цитата Сообщение от bookkc Посмотреть сообщение
что бы "ездил текст"
он и ездит - я же дописал там
Цитата Сообщение от bookkc Посмотреть сообщение
типа как в виндовс
а как в виндовс?
Цитата Сообщение от bookkc Посмотреть сообщение
готовые ОСИ искал
круто! но вряд ли чем поможет. Хотя их немало исходников в сети
0
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
17.09.2010, 16:54  [ТС] 5
а как в виндовс?
Ну представь, запускаю я программу, и появляется текст, который в хаотическом порядке "ездит" по екрану и отбивается от "краев" екрана. Подобный скринсевер есть на некоторых версиях Windows.
Ну думаю ты понял что нужно
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
17.09.2010, 18:48 6
Цитата Сообщение от bookkc Посмотреть сообщение
в хаотическом порядке "ездит" по екрану
добавь к той проге перемещение вверх/вниз и какой нить простенький генератор случайных чисел для задания направления
0
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
17.09.2010, 18:53  [ТС] 7
Вот с этим как раз и проблема

Дело в том что я пока что учусь и много по просту не получается, не что-бы мне лень, просто не получается
0
158 / 105 / 6
Регистрация: 22.08.2010
Сообщений: 215
17.09.2010, 20:46 8
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
.model tiny
.code
.startup
 
    mov ax,3
    int 10h
 
    mov dh,15   ; dh = y coord
    mov dl,5    ; dl = x coord
    mov si,1    ; si = direction flag for y
    mov di,si   ; di = direction flag for x
 
    ; main loop
draw_m:
    push dx     ; save current coords
 
    mov ax,1300h
    xor bh,bh   ; zero vid page
    mov bl,0ah  ; color
    mov cx,textsize ; string size
    mov bp,offset text
    int 10h     ; draw string at dh:dl
 
    ; do small delay
delay:
    xor ah,ah
    int 1Ah
    add dx,4    ; 4 * 18.2
    mov bx,dx
d_loop:     
    int 28h     ; NTVDM idle
    int 1Ah
    cmp dx,bx
    jne d_loop  
 
    pop dx          ; restore coords
 
    mov ah,1    ; get keyboard state
    int 16h
    jz clear_str    ; if no key do clear current string
    xor ah,ah   ; get key from buf
    int 16h
    cmp al,27   ; if ESC presed
    je done_prog
 
clear_str:
    push dx     ; save coords
    mov ax,1300h
    xor bh,bh
    mov bl,0ah
    mov cx,textsize
    mov bp,offset clear
    int 10h     ; draw clear string at current XY
    pop dx
 
    test si,si      ; if si = 0
    jz dec_y    ; then  dec y
    inc dh      ; inc y
    cmp dh,24   ; if y > 24
    jb test_x   
    xor si,si   ; si direction flag = 0
    jmp test_x
dec_y:
    dec dh      ; dec y
    cmp dh,0    ; if y > 0
    ja test_x   
    mov si,1    ; si direction flag = 1
test_x:
    test di,di  ; if di = 0
    jz dec_x    ; then dec x
    inc dl      ; inc x
    cmp dl,80-textsize ; if x > 80-text length
    jb test_done    
    xor di,di   ; di direction flag = 0
    jmp test_done
dec_x:
    dec dl      ; dec x
    cmp dl,0    ; if x > 0
    ja test_done
    mov di,1    ; di derection flag = 1
test_done:
    jmp draw_m  ; go to main loop
 
done_prog:
    int 20h     ; terminate
 
text    db 'Hello world (c) Tronix'
textend EQU $
textsize EQU textend-text
clear   db textsize DUP(32)
end
3
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
18.09.2010, 09:08  [ТС] 9
Tronix. не работает тупо черный екран и мегает курсор

Компилировал на TASM 5.0 (сначала Tasm.exe pr.asm потом tlink.exe pr.obj ) Ну может как-то по другому всегда делал так
0
158 / 105 / 6
Регистрация: 22.08.2010
Сообщений: 215
18.09.2010, 10:26 10
это COM программа (модель tiny), линковать нужно с ключем "/t"
tasm text.asm
tlink /t text.obj
0
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
18.09.2010, 10:32  [ТС] 11
ЁмаЁ

Tronix, дружище, ОГРОМНОЕ ТЕБЕ ЧЕЛОВЕЧИСКОЕ СПАСИБО!!!!!!!!!!!!!!!!!!!! Ты не представляешь как меня выручил, блин!!! Супер! Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

З Ы а можно ли её как-то сделать в exe? наверное tiny заменить на какую-то другую модель памяти, что бы в exe работала непокатит ?
0
158 / 105 / 6
Регистрация: 22.08.2010
Сообщений: 215
18.09.2010, 10:54 12
EXE-вариант:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
stk segment stack
db 2 dup(?)
stk ends
 
data segment 
text    db 'Hello world (c) Tronix'
textend EQU $
textsize EQU textend-text
clear   db textsize DUP(32)
data ends
 
code segment
assume cs:code, ds:data, ss:stk
 
start:
    push data
    pop es
 
    mov ax,3
    int 10h
 
    mov dh,15   ; dh = y coord
    mov dl,5    ; dl = x coord
    mov si,1    ; si = direction flag for y
    mov di,si   ; di = direction flag for x
 
    ; main loop
draw_m:
    push dx     ; save current coords
 
    mov ax,1300h
    xor bh,bh   ; zero vid page
    mov bl,0ah  ; color
    mov cx,textsize ; string size
    mov bp,offset text
    int 10h     ; draw string at dh:dl
 
    ; do small delay
delay:
    xor ah,ah
    int 1Ah     ; get timer ticks
    add dx,4    ; 4 * 18.2
    mov bx,dx
d_loop:     
    int 28h     ; NTVDM idle
    int 1Ah     
    cmp dx,bx       ; compare current ticks with BX
    jne d_loop  
 
    pop dx          ; restore coords
 
    mov ah,1    ; get keyboard state
    int 16h
    jz clear_str    ; if no key do clear current string
    xor ah,ah   ; get key from buf
    int 16h
    cmp al,27   ; if ESC presed
    je done_prog
 
clear_str:
    push dx     ; save coords
    mov ax,1300h
    xor bh,bh
    mov bl,0ah
    mov cx,textsize
    mov bp,offset clear
    int 10h     ; draw clear string at current XY
    pop dx
 
    test si,si      ; if si = 0
    jz dec_y    ; then  dec y
    inc dh      ; inc y
    cmp dh,24   ; if y > 24
    jb test_x   
    xor si,si   ; si direction flag = 0
    jmp test_x
dec_y:
    dec dh      ; dec y
    cmp dh,0    ; if y > 0
    ja test_x   
    mov si,1    ; si direction flag = 1
test_x:
    test di,di  ; if di = 0
    jz dec_x    ; then dec x
    inc dl      ; inc x
    cmp dl,80-textsize ; if x > 80-text length
    jb test_done    
    xor di,di   ; di direction flag = 0
    jmp test_done
dec_x:
    dec dl      ; dec x
    cmp dl,0    ; if x > 0
    ja test_done
    mov di,1    ; di derection flag = 1
test_done:
    jmp draw_m  ; go to main loop
 
done_prog:
        mov ah,4ch  ; terminate
        int 21h
 
code ends
end start
2
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
18.09.2010, 15:25  [ТС] 13
Как ты мне помог, ты себе даже не представляешь

З Ы. А как сделать, каждую букву в тексте, разного цвета ??? или фон например белый
0
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
20.09.2010, 14:15  [ТС] 14
Слушай, а можно ли как-то сделать так что бы этот текст плавнее ездил ? и как ?
0
158 / 105 / 6
Регистрация: 22.08.2010
Сообщений: 215
21.09.2010, 13:52 15
Можно. Изменять в реалтайме знакогенератор. Получится прям ваще как в графическом режиме.

Добавлено через 11 минут
PS: Не будет работать в винде. Она чото ваще не эмулирует смену шрифтов. Только в чистом досе да.
0
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
21.09.2010, 14:26  [ТС] 16
Поянтно... спасибо
0
158 / 105 / 6
Регистрация: 22.08.2010
Сообщений: 215
21.09.2010, 14:30 17
Незачто!
0
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
24.09.2010, 16:51  [ТС] 18
Слушай, помоги пожалуйсто ещё сделать какой-то задний фон красивый там цвета какие-то переливающиеся или ещё что-то а то у мне вроди получилось, но как-то не так
0
0 / 0 / 1
Регистрация: 24.06.2009
Сообщений: 232
30.09.2010, 09:17  [ТС] 19
up. Помогите сделать какой-то задний фон
0
30.09.2010, 09:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.09.2010, 09:17
Помогаю со студенческими работами здесь

Delphi + TAdvSmoothSlideShow = ScreenSaver?
Вопрос наверное всё же больше подходит к теме ОС, но т.к. ковыряю я это в Дельфе то тут и обсудим ...

Preview для screensaver`a
Всем доброго времени суток. При открытии в Windows окна настроек заставки, система запускает...

ScreenSaver неполучается закрыть форму
Привет всем Пытаюсь сделать ScreenSaver набросал форму при зупуске она как полагается...

Как сделать ScreenSaver на VB or Delphi
Если кто знает или есть исходник. Заранее сильно благодарю.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru