Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
 
Narax!ss
0 / 0 / 1
Регистрация: 07.11.2010
Сообщений: 46
1

Найти и исправить ошибки в приведенном коде

25.11.2012, 17:10. Просмотров 362. Ответов 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
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
; masm windows gui #
.686p
.model flat
 
include windows.inc
includelib user32.lib
includelib kernel32.lib
includelib gdi32.lib
includelib opengl32.lib
includelib glu32.lib
 
extern _imp__SwapBuffers@4:dword
extern _imp__SetPixelFormat@12:dword
extern _imp__ChoosePixelFormat@8:dword
extern _imp__ExitProcess@4:dword
extern _imp__glTranslatef@12:dword 
extern _imp__glMatrixMode@4:dword 
extern _imp__glNormal3f@12:dword 
extern _imp__glPopMatrix@0:dword 
extern _imp__glPushMatrix@0:dword 
extern _imp__glRotatef@16:dword 
extern _imp__glMaterialf@12:dword 
extern _imp__glMaterialfv@12:dword 
extern _imp__glVertex3f@12:dword 
extern _imp__glViewport@16:dword 
extern _imp__wglCreateContext@4:dword 
extern _imp__wglDeleteContext@4:dword 
extern _imp__wglMakeCurrent@8:dword 
extern _imp__glShadeModel@4:dword 
extern _imp__glLoadIdentity@0:dword 
extern _imp__glBegin@4:dword 
extern _imp__glEnd@0:dword  
extern _imp__glFinish@0:dword 
extern _imp__glClear@4:dword 
extern _imp__glEnable@4:dword 
extern _imp__glFrustum@48:dword 
extern _imp__glLightfv@12:dword 
extern _imp__GetMessageA@16:dword 
extern _imp__CreateWindowExA@48:dword 
extern _imp__GetClientRect@8:dword  
extern _imp__GetDC@4:dword  
extern _imp__ReleaseDC@8:dword 
extern _imp__DispatchMessageA@4:dword 
extern _imp__RegisterClassA@4:dword 
extern _imp__PostMessageA@16:dword 
extern _imp__DefWindowProcA@16:dword 
extern _imp__SetTimer@16:dword
extern _imp__KillTimer@8:dword
 
.code
start:  xchg eax,ebx
        mov edi,offset szClassName
        mov esi,400000h
 
    push edi
    push ebx
    push COLOR_WINDOWTEXT+1
    push 10011h
    push ebx
    push esi
    push ebx
    push ebx
    push offset MainLoop
    push ebx
    push esp
    call _imp__RegisterClassA@4
        push ebx
    push esi
        shl esi,9
    push ebx
    push ebx
    push 12Ch
    push 12Ch
    push esi
    push esi;Wtx
    push WS_CAPTION ;or WS_SYSMENU or WS_MINIMIZEBOX or WS_VISIBLE
    push edi
    push edi
    push ebx
    call _imp__CreateWindowExA@48
    push ebx
    push 10
    push ebx
        push eax
        call _imp__SetTimer@16
    mov ebp,esp
StartLoop: 
    push ebx
    push ebx
    push ebx
    push ebp            
    call _imp__GetMessageA@16
    push ebp
    call _imp__DispatchMessageA@4
    jmp short StartLoop
 
MainLoop    PROC    
hWin    equ [ebp+8]
uMsg    equ [ebp+12]
wParam  equ [ebp+16]
lParam  equ [ebp+20]
left1   equ qword ptr [ebp-8]
right1  equ qword ptr [ebp-10h]
bottom1 equ qword ptr [ebp-18h]
top1    equ qword ptr [ebp-20h]
WINRect equ ebp-sizeof(RECT)-20h
 
    enter sizeof(RECT)+20h,0
    mov eax,uMsg
    dec eax;WM_CREATE
    je short @@WM_CREATE
    dec eax;WM_DESTROY
    je short @@WM_DESTROY
    sub eax,WM_SIZE-WM_DESTROY
    je @@WM_SIZE
    sub eax,WM_TIMER-WM_SIZE
    je @@WM_TIMER   
    leave
    jmp _imp__DefWindowProcA@16
@@WM_DESTROY:  ;Kill OpenGL
    push ebx    
    push ebx    
    call _imp__wglMakeCurrent@8
    push OpenDC 
    call _imp__wglDeleteContext@4
    push MainHDC        
    push hWin       
    call _imp__ReleaseDC@8
;end kill OpenGL
    push ebx;0
    push hWin
    call _imp__KillTimer@8
        push ebx
    call _imp__ExitProcess@4
@@WM_CREATE:;Setup OpenGL
    push hWin   
    call _imp__GetDC@4
    mov MainHDC,eax
 
    mov edi,offset PixFrm       
    push edi
    push eax;MainHDC        
    call _imp__ChoosePixelFormat@8
    push edi
    push eax
    push MainHDC        
    call _imp__SetPixelFormat@12
    push MainHDC        
    call _imp__wglCreateContext@4
    mov OpenDC,eax
    push eax;OpenDC     
    push MainHDC        
    call _imp__wglMakeCurrent@8
; position viewer
    push GL_MODELVIEW
    call _imp__glMatrixMode@4
    push 0C0000000h
    push ebx
    push ebx
    call _imp__glTranslatef@12
; position light
    push offset lightPos
    push GL_POSITION
    push GL_LIGHT0
    call _imp__glLightfv@12
    mov edi,_imp__glEnable@4
    push GL_LIGHTING
    call edi;_imp__glEnable@4
    push GL_LIGHT0
    call edi;_imp__glEnable@4
    push GL_DEPTH_TEST
    call edi;_imp__glEnable@4
    push GL_SMOOTH
    call _imp__glShadeModel@4
@@WM_SIZE: cmp OpenDC,ebx
    jz a1
    push esp        
    push hWin   
    call _imp__GetClientRect@8
;Set GLProjection
    fld glHalf
    fst right1
    fst top1
    fchs
    fst left1
    fstp bottom1
    push GL_PROJECTION
    call _imp__glMatrixMode@4
    call _imp__glLoadIdentity@0
    fild [WINRect+RECT.right]
    fild [WINRect+RECT.bottom]
 
    mov eax,[WINRect+RECT.right] 
    cmp eax,[WINRect+RECT.bottom]
    ja short a4
    fxch st(1)
a4: sbb edi,edi
    and edi,2
    fdivp st(1),st
    fld st
    fmul right1[edi*8]
    fxch st(1)
    fmul left1[edi*8]
    fstp left1[edi*8]
    fstp right1[edi*8]
    push 40080000h
    push ebx
    push 3FF00000h
    push ebx
    push dword ptr top1+4
    push dword ptr top1
    push dword ptr bottom1+4
    push dword ptr bottom1
    push dword ptr right1+4
    push dword ptr right1
    push dword ptr left1+4
    push dword ptr left1
    call _imp__glFrustum@48
    push GL_MODELVIEW
    call _imp__glMatrixMode@4
;end Set GLProjection
    push [WINRect+RECT.bottom]
    push [WINRect+RECT.right]
    push ebx
    push ebx
    call _imp__glViewport@16
a1: leave
    retn 10h
@@WM_TIMER: cmp OpenDC,ebx
    jz short a2
 
    push GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT
    call _imp__glClear@4
 
    call _imp__glPushMatrix@0
    push GL_MODELVIEW
    call _imp__glMatrixMode@4
    push ebx
    push 3F800000h
    push ebx
    push Roll
    call _imp__glRotatef@16
    fld Roll
    fadd rotstep
    fstp Roll
    push ebx
    push ebx
    push 3F800000h
    push Roll
    call _imp__glRotatef@16
 
    push 24;numMinor=24
    push 32;numMajor=32
    push 3E4CCCCDh;minorRadius=0.2
    push 3F19999Ah;majorRadius=0.6
    call glTorus
    call _imp__glPopMatrix@0
    call _imp__glFinish@0
    push MainHDC        
    call _imp__SwapBuffers@4
a2: leave
    retn 10h
MainLoop endp
 
glTorus     proc near
 
v0Z     equ dword ptr [ebp-4Ch]
v1Z     equ dword ptr [ebp-48h]
v0Y     equ dword ptr [ebp-44h]
v1Y     equ dword ptr [ebp-40h]
v0X     equ dword ptr [ebp-3Ch]
v1X     equ dword ptr [ebp-38h]
n0Z     equ dword ptr [ebp-34h]
n1Z     equ dword ptr [ebp-30h]
n0Y     equ dword ptr [ebp-2Ch]
n1Y     equ dword ptr [ebp-28h]
n0X     equ dword ptr [ebp-24h]
n1X     equ dword ptr [ebp-20h]
cos1        equ dword ptr [ebp-1Ch]
sin1        equ dword ptr [ebp-18h]
cos0        equ dword ptr [ebp-14h]
sin0        equ dword ptr [ebp-10h]
majorStep   equ dword ptr [ebp-0Ch]
minorStep   equ dword ptr [ebp-8]
baseMat     equ dword ptr [ebp-4]
majorRadius equ dword ptr [ebp+8]
minorRadius equ dword ptr [ebp+0Ch]
numMajor    equ dword ptr [ebp+10h]
numMinor    equ dword ptr [ebp+14h]
 
    enter 4Ch,0
    fldpi
    fadd st,st
    fld st
    fidiv numMinor
    fstp minorStep
    fidiv numMajor
    mov ecx,numMajor
    fstp majorStep
majorLoop: push ecx
    fild dword ptr [esp]
    fmul majorStep
    fld st
    fadd majorStep
    fsincos       
    fxch st(2)    
    fsincos       
    and ecx,1
    mov baseMat,ecx
    fstp cos0
    fstp sin0
    fstp sin1
    fstp cos1
    push GL_TRIANGLE_STRIP
    call _imp__glBegin@4
    mov ecx,numMinor
minorLoop: push ecx
    push ecx
    mov edi,_imp__glMaterialfv@12
    push offset mat1_Ambient
    push GL_AMBIENT
    push GL_FRONT
    call edi
 
    fild dword ptr [esp]
    fmul minorStep
    fsincos           
    fld st
    fmul minorRadius
    fadd majorRadius
    fxch st(2)
    fmul minorRadius
    fxch st(1) 
        
    fld st(0)
    fmul cos0
    fstp n0X
    fld st(0)
    fmul sin0
    fstp n0Y
    fld st(0)
    fmul cos1
    fstp n1X
    fmul sin1
    fstp n1Y
    fst v0Z
    fst v1Z
    fdiv minorRadius
    fst n0Z
    fstp n1Z
    fld st(0)
    fmul cos0
    fstp v0X
    fld st(0)
    fmul sin0
    fstp v0Y
    fld st(0)
    fmul cos1
    fstp v1X
    fmul sin1
    fstp v1Y
    pop ecx
    and ecx,1
    xor ecx,baseMat
 
    push handle[ecx*4]
    push GL_DIFFUSE
    push GL_FRONT
    call edi
    push offset mat1_Specular
    push GL_SPECULAR
    push GL_FRONT
    call edi;_imp__glMaterialfv@12
    push mat0_Shine
    push GL_SHININESS
    push GL_FRONT
    call _imp__glMaterialf@12
 
    mov edi,1
a3: push n0Z[edi*4]
    push n0Y[edi*4]
    push n0X[edi*4]
    call _imp__glNormal3f@12
    push v0Z[edi*4]
    push v0Y[edi*4]
    push v0X[edi*4]
    call _imp__glVertex3f@12
    dec edi
    jns short a3
    pop ecx
    dec ecx
    jns minorLoop
    call _imp__glEnd@0
    pop ecx
    dec ecx
    jnz majorLoop
    leave
    retn 
glTorus endp
 
szClassName db 'Iczelion Tutorial: OpenGL #8',0
 
 
PixFrm PIXELFORMATDESCRIPTOR <SIZEOF PixFrm,1,\
PFD_SUPPORT_OPENGL+PFD_DOUBLEBUFFER+PFD_DRAW_TO_WINDOW,PFD_TYPE_RGBA,\
16,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,PFD_MAIN_PLANE,0,0>
Roll        dd 0.0          
rotstep     dd 1.35         
lightPos    dd 0.70,0.70,1.25, 0.0
handle      dd mat0_Diffuse,mat0_Diffuse+16
mat0_Diffuse    dd 0.65,0.05, 0.2, 0.6,0.05, 0.7, 0.2, 0.8
mat1_Ambient    dd 0.01,0.01,0.01,1.0
mat1_Specular   dd 0.5, 0.5, 0.5, 1.0
mat0_Shine  dd 20.0
glHalf      dd 0.5
MainHDC     dd ?
OpenDC      dd ?
end start
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2012, 17:10
Ответы с готовыми решениями:

Исправить ошибки в приведенном коде
Привет! Нашел на сайте пример. Вроде все компилится, все ок. Но не работает! Не пишет строчку!...

Найти ошибки в коде
.model TINY .code .286 org 100H StarsT: ; ªÀŽ‚…ÀÏ…Œ Š?ŠŽ‰ ÀŽÆ…ÁÁŽÀ - …Á‹Ð ÁÂ?À*… 286, ÂŽ...

Разделит ли функция div ah на bh в приведенном коде
xor ah,ah xor bh,bh xor ch,ch mov ax,p shr ax,2 mov bx,q shl bx,1 add ax,bx inc ax xor...

Как организовать задержку в приведенном коде
Подскажите пожалуйста как организовать задержку в таком коде: CSEG segment org 100h Begin: ...

Что произойдет с переменной в приведенном коде
Помогите! на защите лабы по ассемблеру, меня препод попросил написать там определённые команды, в...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2012, 17:10

Что происходит с флагом переноса в приведенном коде
Добрый день. Возник вопрос: Что происходит с флагом переноса в такой ситуации? mov al,ff mov...

В приведенном коде добавляется один байт, при переполнении
program SumN; {$APPTYPE CONSOLE} uses SysUtils; label cycl, end_p; Const N:byte=10;...

Найти ошибки в куске кода и исправить их
.data byteVal. .db. 1,2,3,4 wordVal. dw ...


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

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

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