Форум программистов, компьютерный форум, киберфорум
Наши страницы

Assembler: DOS/Real Mode/16-bits

Войти
Регистрация
Восстановить пароль
 
max_1296
0 / 0 / 2
Регистрация: 19.08.2013
Сообщений: 89
#1

Перемещение символа по таймеру - Assembler

17.10.2017, 17:00. Просмотров 154. Ответов 3
Метки нет (Все метки)

Добрый вечер, необходимо реализовать перемещение символа по таймеру. Помогите исправить ошибку, символ не двигается...

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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
.model tiny
.286
.code
 
org 100h
 
start:
    xor     ah,ah
    int     1ah
    add     dx,18
    mov     cs:tick,dx
 
    call    flashch
start_l1:
    call    show
    mov     ah,1
    int     016h
    jz      noupddir
    mov     ah,0
    int     016h
 
    cmp     ah,1
    je      st_done
 
    cmp     al,'6'
    je      upddir
    cmp     al,'4'
    je      upddir
    jmp     noupddir
upddir:
    mov     cs:[dir],al
noupddir:
    call    exec
    jmp     start_l1
 
st_done:
    call    flashch
 
    int 020h
 
exec:
    push    ax
    push    bx
    push    cx
    push    dx
    
    xor     ah,ah
    int     1ah
    cmp     dx,cs:tick
    jg      exec1
    jmp     exdone
exec1:
    add     dx,18
    mov     cs:tick,dx
 
;    call    flashch
    mov     bx,word ptr cs:[posx]
    cmp     cs:[dir],'6'
    jne     ec2
    inc     bl
    cmp     bl,79
    jna     exsav
    xor     bl,bl
    jmp     exsav
ec2:
    cmp     cs:[dir],'4'
    jne     ec2
    dec     bl
    cmp     bl,0
    jnl     exsav
    mov     bl,79
    jmp     exsav
exsav:
    mov     word ptr cs:[posx],bx
;    call    flashch
 
exdone:
    pop     dx
    pop     cx
    pop     bx
    pop     ax
 
    ret    
 
    
flashch:
    push    ax
    push    bx
    push    ds
 
    mov     bx,word ptr cs:[posx]
    call    getpos
    mov     ax,0b800h
    mov     ds,ax
    mov     ax,cs:old
    xchg    ax,ds:[bx]
    mov     cs:old,ax
 
    pop     ds
    pop     bx
    pop     ax    
    ret
 
    
;   al=chr; ah = color
;   bh=y; bl=x
showch:
    push    ds
    push    bx
    push    ax
    mov     ax,0b800h
    mov     ds,ax
    pop     ax
    call    getpos
    mov     ds:[bx], ax
    pop     bx
    pop     ds
    ret
 
;   bh=y; bl=x
;   -> bx -> offset
getpos:
    push    ax
    xor     ax,ax
    mov     al,bh
    imul    cs:[scrw]
    add     al,bl
    adc     ah,0
    shl     ax,1
    mov     bx,ax
    pop     ax
    ret
 
show:
    push ds
    push es
 
    mov ax, 0b800h
    mov es, ax
 
;    mov ax, 0
;    mov ds,ax
;    mov ax, [046ch]
;    mov dx, [046eh]
    xor ah,ah
    int 1ah
    mov ax,dx
 
    mov bx, 0ah
    mov cx,0
l1:
    mov dx,0
    div bx
    add dx,01f30h
    inc cx
    push dx
    or ax,ax
    jnz l1
    mov di,0
    cld
l2:
    pop ax
    stosw 
    dec cx
    jnz l2
    pop es
    pop ds
    ret
 
tick    dw  0
old     dw  2f03h
posx    db  40
posy    db  12
scrw    db  80
dir     db  '6'
 
end start
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2017, 17:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перемещение символа по таймеру (Assembler):

Инвертация цветов по таймеру (TASM) - Assembler
Всем доброе время суток! .model tiny .386 .code org 100h start: mov ax,3 ...

Организовать перемещение символа ‘*’ - Assembler
Организовать перемещение символа ‘*’ из координаты X=28h, Y=0h в координату X=28h, Y=18h. Символ ‘*’ отобразить желтым цветом. Напишите...

Ввод символа, очистка экрана, вывод символа в центре экрана - Assembler
Вывести приглашение к вводу символа, ввести символ, вывести введенный символ в центре очищенного экрана.

перемещение по таймеру! - Delphi
Помогите связать таймер и форму!!!!

Рисование на форме и перемещение по таймеру - C#
Народ, доброго времени суток, помогите пожалуйста разобраться! Есть задача, нужно создать точку-ведущую и группу точек(пока одна...

Перемещение объекта по форме по таймеру - C++ Builder
Как сделать визуализацию? Чтобы допустим перемещался какой-то элемент на форме по времени.

3
R71MT
1673 / 688 / 211
Регистрация: 29.07.2014
Сообщений: 1,687
17.10.2017, 22:03 #2
Цитата Сообщение от max_1296 Посмотреть сообщение
символ не двигается...
.а ты знаешь, что нужно сделать, чтоб символ двигался?
сможешь описать алго?
0
max_1296
0 / 0 / 2
Регистрация: 19.08.2013
Сообщений: 89
18.10.2017, 08:01  [ТС] #3
R71MT, каждый тик таймера надо очищать экран-менять каординаты-выводить символ в новых каординатах
0
alexcoder
1547 / 692 / 91
Регистрация: 03.06.2009
Сообщений: 3,677
Завершенные тесты: 1
18.10.2017, 10:51 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
.model tiny
.286
.code
 
org 100h
 
start:
    xor     ah,ah
    int     1ah
    add     dx,18
    mov     cs:tick,dx
    mov     bx,word ptr cs:[posx]
    call    flashch
start_l1:
 
    call    show
    mov     ah,1
    int     016h
    jz      noupddir
    mov     ah,0
    int     016h
 
    cmp     ah,1
    je      st_done
 
    cmp     al,'6'
    je      upddir
    cmp     al,'4'
    je      upddir
    jmp     noupddir
upddir:
    mov     cs:[dir],al
noupddir:
    mov bp,word ptr cs:[posx]
    call    exec
    mov bx,   bp
    call    flashch
    mov bx,    word ptr cs:[posx]
    call    flashch
    jmp     start_l1
 
st_done:
    call    flashch
 
    int 020h
 
exec:
    push    ax
    push    bx
    push    cx
    push    dx
    
    xor     ah,ah
    int     1ah
    cmp     dx,cs:tick
    jg      exec1
    jmp     exdone
exec1:
    add     dx,18
    mov     cs:tick,dx
 
;    call    flashch
    mov     bx,word ptr cs:[posx]
    cmp     cs:[dir],'6'
    jne     ec2
    inc     bl
    cmp     bl,79
    jna     exsav
    xor     bl,bl
    jmp     exsav
ec2:
    cmp     cs:[dir],'4'
    jne     ec2
    dec     bl
    cmp     bl,0
    jnl     exsav
    mov     bl,79
    jmp     exsav
exsav:
    mov     word ptr cs:[posx],bx
;    call    flashch
 
exdone:
    pop     dx
    pop     cx
    pop     bx
    pop     ax
 
    ret    
 
    
flashch:
    push    ax
    push    bx
    push    ds
 
;    mov     bx,word ptr cs:[posx]
    call    getpos
    mov     ax,0b800h
    mov     ds,ax
    mov     ax,cs:old
    xchg    ax,ds:[bx]
    mov     cs:old,ax
 
    pop     ds
    pop     bx
    pop     ax    
    ret
 
    
;   al=chr; ah = color
;   bh=y; bl=x
showch:
    push    ds
    push    bx
    push    ax
    mov     ax,0b800h
    mov     ds,ax
    pop     ax
    call    getpos
    mov     ds:[bx], ax
    pop     bx
    pop     ds
    ret
 
;   bh=y; bl=x
;   -> bx -> offset
getpos:
    push    ax
    xor     ax,ax
    mov     al,bh
    imul    cs:[scrw]
    add     al,bl
    adc     ah,0
    shl     ax,1
    mov     bx,ax
    pop     ax
    ret
 
show:
    push ds
    push es
 
    mov ax, 0b800h
    mov es, ax
 
;    mov ax, 0
;    mov ds,ax
;    mov ax, [046ch]
;    mov dx, [046eh]
    xor ah,ah
    int 1ah
    mov ax,dx
 
    mov bx, 0ah
    mov cx,0
l1:
    mov dx,0
    div bx
    add dx,01f30h
    inc cx
    push dx
    or ax,ax
    jnz l1
    mov di,0
    cld
l2:
    pop ax
    stosw 
    dec cx
    jnz l2
    pop es
    pop ds
    ret
 
tick    dw  0
old     dw  2f03h
posx    db  40
posy    db  12
scrw    db  80
dir     db  '6'
 
end start
2
18.10.2017, 10:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2017, 10:51
Привет! Вот еще темы с ответами:

Перемещение картинки по таймеру по синусоиде - Delphi
Текст форматировать не умею, только зарегестрировался, прошу не ругать. Есть картинка на форме, должна двигать по таймеру...

Мерцание при перемещение картинки в PictureBox по таймеру - C#
Добрый день. У меня проблема мерцания при перемещение картинки в PictureBox по таймеру. Пробовал много чего. И двойную буферизацию...

Перемещение символа по спирали - Turbo Pascal
текстовый режим написать программу для вывода символа и чтоб он перемещался по спирали по часовой стрелки с верхнего левого угла и...

Перемещение символа по строке - Pascal
Госпада программеры, тут дело такое, нужно сделать перемещение символа по строке. получается только заполнить всю строку. Что нужно...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru