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

Assembler, MASM, TASM

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

Графика MASM - Assembler

26.05.2013, 14:36. Просмотров 424. Ответов 0
Метки нет (Все метки)

Помогите доделать! не могу понять почему движение фигуры происходит только наискось, а должна влево вправо вверх и вниз.

вроде все правильно но не работает, помогите разобраться...

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
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
data segment
col db ?
horiz dw ?
vert dw ?
a dw ?
b dw ?
d dw ?
x dw ?
y dw ?
d1 dw ?
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax
mov bx,0
mov cx,0
jmp main
 
;----процедура указания видео режима 640х480 16 цветов
videoregim proc
mov ah,00h
mov al,12h
int 10h
ret
videoregim endp
 
;----процедура рисования точки
tochka proc 
mov ah,0ch
mov al,col
mov bh,0
int 10h
ret
tochka endp
;---процедура рисования главного прямоугольника 
pryamougolnik proc
mov CX,x ; cx = 220
mov DX,y ; dx = 90
add x,200 ;x = 420
add y,300 ; y = 390
x1: call tochka
inc cx ; 221 
cmp cx,x 
jne x1  ; cx <> x | 220 <> 420
sub cx,200  ; cx = 220
inc dx      ; dx = 91
cmp dx,y    ; dx <> y | 90 <> 390
jne x1 
sub x,200   ; x = 220
sub y,300   ; y = 90
ret
pryamougolnik endp
;----end процедура рисования главного прямоугольника    
;----процедура рисования 5 горизонтальных линии 
liniyag proc
mov CX,x  ; cx = 220
mov DX,y   ; dx = 90
add cx,40  ;  cx = 260
add dx,20   ; dx = 110
add x,160   ; x = 420
add y,110   ; y = 220
x2: call tochka
inc cx
cmp cx,x ; cx <> x  | 260 <> 420 
jne x2 
sub cx,120 ; cx = 260  
add dx,20   ;dx = 130
cmp dx,y
jb x2
sub x,120   ; x = 260
sub y,90   ; y = 110
ret
liniyag endp
;----------------------------------------------------
;---процедура рисования 2х вертикальных линий
liniyav proc
mov cx,x   ; cx = 260
mov dx,y   ; dx = 110
add x,120   ; x = 420
add y,80    ; y = 190
x3: call tochka 
inc dx      ; dx = 111
cmp dx,y    ;  dx <>y | 110<>190
jne x3     
sub dx,80  ; dx = 110
mov cx,x   ; cx = 420
x4:call tochka
inc dx
cmp dx,y
jne x4 
sub x,160  ;  x = 260
sub y,100   ;   y = 110
ret
liniyav endp
;--------------------------------------------
;------процедура рисования квадрата-----
pryamougolnikz proc
add x,70   ; x = 330
add y,120   ; y = 230
mov cx,x    ; cx = 330
mov dx,y    ; dx = 230
add x,60    ; x = 390
add y,21    ; y = 250 
x5:call tochka 
inc cx    ; cx = 331
cmp cx,x   ; cx <> x | 330<>390
jne x5     
inc dx    ; dx = 231
sub cx,60  ; cx = 330
cmp dx,y   ; dx <> y | 230<>250
jne x5
sub x,60  ; x= 330
sub y,21   ; y = 230
mov cx,x    ; cx = 330
mov dx,y     ; dx =230
add x,60     ; x = 390
x6: call tochka
inc cx
cmp cx,x 
jne x6
sub x,60  ; x = 330
add y,10 ; y = 240
mov cx,x  ; cx=330
mov dx,y  ; dx=240
add x,60   ;x=390
mov col,16
x7: call tochka
inc cx
cmp cx,x
jne x7
sub x,50 ;x=340
add y,60 ;y=300
ret
pryamougolnikz endp
;-----------------------------------------
kvadrat proc
mov cx,x   ;cx=340
mov dx,y   ;dx=300
add x,40    ; x = 380
add y,40    ; y = 340    
x8:call tochka
inc cx   ; cx=341
cmp cx,x  ; cx<>x | 340<>380
jne x8
sub cx,40  ; cx=340
add dx,40 ; dx=340
x9: call tochka
inc cx   ; cx= 341
cmp cx,x 
jne x9    
sub cx,40 ; cx=340
sub dx,40 ; dx=300
x10: call tochka
inc dx   ; dx=301
cmp dx,y  ; dx =340
jne x10
sub dx,40 ; dx= 300
mov cx,x    ;cx=380
x11:call tochka
inc dx  
cmp dx,y
jne x11
ret
kvadrat endp
;------------------------------------------
kvadrats proc
sub y,30  ; y=310
mov dx,y  ; dx=310
add y,20  ; y=330
inc x   
mov cx,x  ; cx=381
add x,20  ; x=401
x12:call tochka
inc cx   ; cx=380
cmp cx,x
jne x12
sub cx,20  ; cx=380
inc dx
cmp dx,y   ; dx=y | 310<>330 
jne x12    ; dx=330 cx=380
sub cx,61   ; cx=319
sub dx,20   ;dx=310
mov x,cx    ; x=319
mov y,dx     ;y=310
add x,20     ;x=339
add y,20     ;y=330
x13:call tochka
inc cx       
cmp cx,x
jne x13
sub cx,20
inc dx
cmp dx,y
jne x13
ret
kvadrats endp 
;----------------------------------------
figura proc
call videoregim
call pryamougolnik
mov col,16
call liniyag
call liniyav
mov col,10
call pryamougolnikz
call kvadrat
mov col,10
call kvadrats
ret 
figura endp
;----процедура перемещения----------
left_down proc
    sub x,20
    add y,20
    call figura
    ret
left_down endp
 
right_up proc
    add x,20
    sub y,20
    call figura
    ret
right_up endp
 
up_left proc
    sub y,20
    sub x,20
    call figura
    ret
up_left endp
 
down_right proc
    add y,20
    add x,20
    call figura
    ret
down_right endp
;-----------------------------------
color1 proc
    mov col,6
    call figura
    ret
color1 endp
 
color2 proc
    mov col,5
    call figura
    ret
color2 endp
 
color3 proc
    mov col,4
    call figura 
    ret
color3 endp
 
color4 proc
    mov col,3
    call figura 
    ret
color4 endp
 
;-----------------------------------
move proc
zst:
    mov ax,0
    int 16h 
    cmp ah,02h  ; если 1 то clr1 = жёлтый
    je clr1
    cmp ah,03h  ;2 если 2 то clr2 = красный
    je clr2
    cmp ah,04h  ;3 если 3 то clr3 = синий
    je clr3
    cmp ah,05h  ;4 если 4 то clr4 = розовый
    je clr4
    cmp ax,011bh  ;esc
    je short finish1
    cmp ah,1Eh  ;A
    je zleft
    cmp ah,20h  ;D
    je zright
    cmp ah,11h  ;W
    je zup
    cmp ah,1Fh  ;S
    je zdown
    cmp ah,4Bh  ;left=left+down
    je f1
    cmp ah,4Dh  ;right=right+up
    je f2
    cmp ah,48h  ;up=up+left
    je f3
    cmp ah,50h  ;down=down+right
    je f4
    jne zst
finish1: jmp finish2    
clr1:
    mov col,14  ; жёлтый
    call figura
    jmp zst
clr2:
    mov col,4   ; красный
    call figura
    jmp zst
clr3:
    mov col,1    ; синий
    call figura
    jmp zst
clr4:
    mov col,12   ; розовый
    call figura
    jmp zst
zleft:      ;A
    sub x,20
    call figura
    jmp zst
zright:         ;D
    add x,20
    call figura
    jmp zst
zup:             ; W
    sub y,20
    call figura
    jmp zst
zdown:           ;S
    add y,20
    call figura
    jmp zst
;-----------
f1:   ;left=left+down
    call left_down
    jmp zst
f2:    ;right=right+up
    call right_up
    jmp zst
f3:     ;up=up+left
    call up_left
    jmp zst
f4:  ;down=down+right
    call down_right
    jmp zst
;-----------
finish2: ret
move endp
;------------------------------------
 
main:
    mov col,15
    mov x,220 
    mov y,90
        call figura
        call move
        mov ax,4C00h     
    int 21h      
    code ends    
end start
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 14:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Графика MASM (Assembler):

MASM - Assembler
Подскажите в чем проблема. данные .data FontName db &quot;MS Sans Serif&quot;,0 lf LOGFONT &lt;&gt; Textedit3 db 0,0 Textedit2 db 0,0 ...

MASM - Assembler
Скачал MASM ассамблер, но сомневаюсь что это то что надо.

MASM db - Assembler
Только начал изучать асм, а лабы уже надо сдавать... никак не могу найти инфы. Зачем в данном примере &quot;, 0&quot;? mess1 db &quot;Input string:...

masm - Assembler
помогите решить пожалуйста (masm) С помощью клавиш курсора осуществляется движение «кисти» по экрану. Цифровые клавиши 0..9...

MASM - Assembler
добрый вечер всем.. мне вот задали задание пример решить на языке асамблера.. воть мой труд.. все супер все правильно =) ...

TASM-MASM - Assembler
Здравствуйте стоит задача, написать программу на MASM32 ( Отображение списка файлов в каталоге ). С MASM'ом я раньше не сталкивался...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 14:36
Привет! Вот еще темы с ответами:

Из Fasm в MASM - Assembler
Ребят обращаюсь вот по какому вопросу , я сделал курсовой проект в FASM , с ним более менее знаком и как по мне он более прост, при здаче...

Программа на MASM - Assembler
Всем привет. Нужно сделать программу: создать на ассемблере простую программу, содержащую переключаемые страницы (достаточно двух) на одну...

Masm и массивы - Assembler
Всем привет ) Скажите пожалуйста в masm можно создавать массивы(не struct) например из db, а потом работать с каждым элементом по...

Линкование в masm - Assembler
Пишу на masme т.к. учебников по нему больше и они понятнее. Пытаюсь скомпилировать и линковать исходник. Не получается. В bat файле пишу...


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

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

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