Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 7

Создание движущейся рамки

10.11.2010, 14:35. Показов 1941. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Прошу вас помочь написать программу - средствами прерывания 10h отобразить на экране рамку из псевдографических символов, которая сужается к центру при нажатии любой клавиши.


Или хотя бы скажите с какой стороны подступиться)
Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.11.2010, 14:35
Ответы с готовыми решениями:

Создание рамки
Ребята, помогите пожалуйста сделать мне рамку с помощью таблицы в ворде, а то у меня не чего не получается. Вот образец. Заранее всем...

Создание нестандартной рамки
Добрый день. Подскажите, как можно создать подобную рамку? И можно ли это именно рамкой сделать? Я изначально подумал сделать как...

Создание вложенной рамки
Нужно чтобы внутренняя рамка сверху и сбоку отступала на определённое расстояние, как на рисунке В 20-й строке указан margin-top:...

3
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
10.11.2010, 14:54
не ругаетесь сильно на неоптимальный код, одна из моих первых программ, осталась еще с учебы. Там немного переделай под свою
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
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
; Программа рисует в центре экрана квадрат из символов псевдографики.
; По нажатию стрелок квадрат смещается в соответствующую сторону (но не далее края экрана).
; По нажатию "Page Up" квадрат увеличивается, по "Page Down" - уменьшается. По нажатию пробела изменяется цвет внутренней части квадрата
 
SGSTACK SEGMENT PARA STACK 'STACK'
DB 32 DUP(?)
SGSTACK ENDS
 
DATA SEGMENT PARA PUBLIC 'DATA'
wsize   dw  5       ; начальный размер квадрата (будет не квадрат потому что высота символа и ширина не совпадают)
DATA ENDS
 
CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE, DS:DATA, SS:SGSTACK
 
start:
    mov ax, DATA        ; загрузить в DS адрес сегмента данных
    mov ds, ax
 
    mov ax, 3       ; установим режим 80х25
    int 10h
 
    mov dx, 0c28h       ; для курсора  это середина экрана
    mov ax, wsize       ; размер окна
    shr ax, 1       ; пополам
    sub dl, al      ; установить курсор на верхний левый угол окна
    sub dh, al
    call    SetCursor       ; процедура установки курсора
    mov bx, 1       ; атрибут
MainLoop:
    call    CLR     ; очистим экран
    call    SetCursor       ; установим курсор
    call    window      ; нарисуем окно
    xor ax, ax      ; ждем нажатия клавиши
    int 16h
    or  al, al      ; функциональная клавиша?
    jz  FuncKey     ; перейдем на обработку функциональных клавиш
    cmp al, 27      ; ESC?
    jz  _EXIT       ; выход
    cmp al, 20h     ; пробел?
    jnz MainLoop
    add bx, 16      ; если да - поменяем цвет фона (младшие 4 разряда не трогаем - это цвет текста)
    jmp MainLoop
 
FuncKey:
    cmp ah, 49h     ; PageUp?
    jz  _PageUp
    cmp ah, 51h     ; PageDown?
    jz  _PageDown
    cmp ah, 48h     ; клавиша вверх?
    jz  _Up
    cmp ah, 4bh     ; клавиша  влево?
    jz  _Left
    cmp ah, 4dh     ; клавиша вправо?
    jz  _Right
    cmp ah, 50h     ; клавиша  вниз?
    jz  _Down
    jmp MainLoop
 
_PageUp:
    dec dh      ; курсор вверх
    jz  _borderUp       ; дошли до верхней границы?
    mov ax, wsize       ; загрузим размер
    add ax, 2       ; увеличим на 2 (на 1 во все стороны)
    mov cx, ax      ;
    add cl, dh      ; проверим не вылезло ли окно за экран
    cmp cx, 25      ; справа
    jnb _borderUp
    dec dl      ; курсор влево
    jz  _borderLeftUp   ; дошли до левой границы?
    mov cx, ax
    add cl, dl
    cmp cx, 80
    jnb _borderLeftUp
    mov wsize, ax
    jmp MainLoop
 
_PageDown:
    add dx, 0101h
    mov ax, wsize
    sub ax, 2
    cmp ax, 2
    jna _collaps
    mov wsize, ax
    jmp MainLoop
 
_EXIT:
    jmp EXIT
_Up:
    dec dh
    jz  _borderUp
    jmp MainLoop
 
_Left:
    dec dl
    jz  _borderLeft
    jmp MainLoop
 
_Right:
    inc dl
    mov ax, 80
    sub ax, wsize
    cmp dl, al
    jnb _borderRight
    jmp MainLoop
 
_Down:
    inc dh
    mov ax, 25
    sub ax, wsize
    cmp dh, al
    jnb _borderDown
    jmp MainLoop
 
_borderUp:
    inc dh
    jmp MainLoop
_borderLeft:
    inc dl
    jmp MainLoop
_borderRight:
    dec dl
    jmp MainLoop
_borderDown:
    dec dh
    jmp MainLoop
_collaps:
    sub dx, 0101h
    jmp MainLoop
_borderLeftUp:
    add dx, 0101h
    jmp MainLoop
 
EXIT:
    XOR AL, AL  ; выход в OS
    MOV AH, 4CH
    INT 21H
 
window  proc    near
    push    dx
    push    bx
    mov si, bx
    mov bx, 1
; верхняя линия
    call    SetCursor
    mov al, 0c9h
    mov cx, 1
    call    OutSym
    inc dl
    call    SetCursor
    mov al, 0cdh
    mov cx, wsize
    sub cl, 2
    call    OutSym
    add dx, wsize
    sub dl, 2
    call    SetCursor
    mov al, 0bbh
    mov cx, 1
    call    OutSym
; середина
    mov cx, wsize
    sub cl, 2
window_1:
    push    cx
    sub dx, wsize
    inc dl
    inc dh
    call    SetCursor
    mov al, 0bah
    mov cx, 1
    call    OutSym
    inc dl
    call    SetCursor
    mov bx, si
    mov al, ' '
    mov cx, wsize
    sub cl, 2
    call    OutSym
    mov bx, 1
    add dx, wsize
    sub dl, 2
    call    SetCursor
    mov al, 0bah
    mov cx, 1
    call    OutSym
    pop cx
    loop    window_1
; нижняя линия
    sub dx, wsize
    inc dl
    inc dh
    call    SetCursor
    mov al, 0c8h
    mov cx, 1
    call    OutSym
    inc dl
    call    SetCursor
    mov al, 0cdh
    mov cx, wsize
    sub cl, 2
    call    OutSym
    add dx, wsize
    sub dl, 2
    call    SetCursor
    mov al, 0bch
    mov cx, 1
    call    OutSym
    pop bx
    pop dx
    ret
window  endp
 
; вывод символа в текущее положение курсора
OutSym  proc
    mov ah, 09h     ; вывод символа
    xor bh, bh
    int 10h
    ret
OutSym  endp 
 
; процедура установки положения курсора
; положение курсора: dl - строка dh - столбец
SetCursor   proc
    mov ah, 2
    xor bh, bh
    int 10h
    ret
SetCursor   endp
 
;               Очистка экрана:
CLR proc
    push    bx
    push    dx
    mov ah, 06h ; Прокрутить  вверх
    mov al, 24  ; на 24 строки
    mov bh, 7   ; Нормальный ч/б
    xor cx, cx  ; Координаты от 00,00
    mov dx, 184Fh   ; до 24,79 (полный экран)
    int 10h ;Вызов BIOS
    pop dx
    pop bx
    ret
CLR endp
 
 
CODE ENDS
END START
1
0 / 0 / 0
Регистрация: 10.11.2010
Сообщений: 7
10.11.2010, 15:15  [ТС]
Спасибо большое! База есть, пошел переделывать)
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16372 / 7684 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
12.11.2010, 11:04
poggi,
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
; masm dos com #
.286
.model tiny
.code
org 100h 
start:  push 0B800h
    pop es
    mov cx,12
    mov ax,3; чистим экран
    int 10h
a0: push cx
    mov ax,0CDBh; красный квадрат на черном фоне
    mov di,x1; первоначальное положение рамки
    mov cx,x2; рисуем верхнюю полосу
    rep stosw
    add di,x5
    mov cx,x3
a1: stosw; боковушки
    add di,x4
    stosw
    add di,x5
    loop a1
    mov cx,x2
    rep stosw; рисуем нижнюю полосу
    mov ah,2Ch
    int 21h
    mov bl,dh      
@@: int 21h; крутимся до тех пор пока не получится
    cmp bl,dh; задержка в 1 Сек
    jz @b
    mov ax,00DBh; черный квадрат на черном фоне
    mov di,x1; стираем предыдущую рамку
    mov cx,x2
    rep stosw
    add di,x5
    mov cx,x3
a2: stosw
    add di,x4
    stosw
    add di,x5
    loop a2
    mov cx,x2
    rep stosw
    add x1,162
    sub x2,2
    sub x3,2
    sub x4,4
    add x5,4
    pop cx
    loop a0
    retn; выходим из программы
x1 dw 0
x2 dw 80
x3 dw 23
x4 dw 156
x5 dw 0
end start
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2010, 11:04
Помогаю со студенческими работами здесь

Создание рамки вокруг формы
Здравствуйтею, уважаемые. Перейду сразу к делу) У меня имеется wap-игра, но нехватает для оформления одного, разделителя на блоки, но...

Создание рамки в ворд 2010
Всем привет! Помогите пожалуйста создать собственную рамку в ворде.

Создание рамки средствами php, css и т.д.
На сайте большое количство картинок - разнотипных и разноразмерных. Хотелось бы как нибудь создать рамки вокруг них, повернуть их и т.д.,...

Создание рамки-растягивателя для объектов в форме
Возник такой вопрос... При кидании на форму (еще на этапе создания приложения) у объекта появляется рамка с 8 черными квадратами,...

Создание рамки с картинкой при наведении на ссылку
Здравствуйте! Есть одна небольшая проблема которую не знаю как решить... В общем в таблице у меня выводится список программ с названием,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru