454 lines
6.1 KiB
Text
454 lines
6.1 KiB
Text
|
.486
|
||
|
.model flat
|
||
|
extrn __fltused:near
|
||
|
extrn __ftol:near
|
||
|
public _addpoint
|
||
|
_TEXT segment
|
||
|
_addpoint:
|
||
|
push ebx
|
||
|
push esi
|
||
|
push edi
|
||
|
push ebp
|
||
|
mov ebp,esp
|
||
|
mov edi,dword ptr (32)[ebp]
|
||
|
add dword ptr (24)[ebp],edi
|
||
|
mov edi,dword ptr (36)[ebp]
|
||
|
add dword ptr (28)[ebp],edi
|
||
|
mov edi,dword ptr (20)[ebp]
|
||
|
lea esi,(24)[ebp]
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
L1:
|
||
|
mov esp,ebp
|
||
|
pop ebp
|
||
|
pop edi
|
||
|
pop esi
|
||
|
pop ebx
|
||
|
ret
|
||
|
public _canonrect
|
||
|
_canonrect:
|
||
|
push ebx
|
||
|
push esi
|
||
|
push edi
|
||
|
push ebp
|
||
|
mov ebp,esp
|
||
|
sub esp,32
|
||
|
mov edi,dword ptr (32)[ebp]
|
||
|
cmp dword ptr (24)[ebp],edi
|
||
|
jge L10
|
||
|
mov edi,dword ptr (24)[ebp]
|
||
|
mov dword ptr (-20)[ebp],edi
|
||
|
jmp L11
|
||
|
L10:
|
||
|
mov edi,dword ptr (32)[ebp]
|
||
|
mov dword ptr (-20)[ebp],edi
|
||
|
L11:
|
||
|
mov edi,dword ptr (-20)[ebp]
|
||
|
mov dword ptr (-16)[ebp],edi
|
||
|
mov edi,dword ptr (36)[ebp]
|
||
|
cmp dword ptr (28)[ebp],edi
|
||
|
jge L20
|
||
|
mov edi,dword ptr (28)[ebp]
|
||
|
mov dword ptr (-24)[ebp],edi
|
||
|
jmp L21
|
||
|
L20:
|
||
|
mov edi,dword ptr (36)[ebp]
|
||
|
mov dword ptr (-24)[ebp],edi
|
||
|
L21:
|
||
|
mov edi,dword ptr (-24)[ebp]
|
||
|
mov dword ptr (-12)[ebp],edi
|
||
|
mov edi,dword ptr (32)[ebp]
|
||
|
cmp dword ptr (24)[ebp],edi
|
||
|
jle L26
|
||
|
mov edi,dword ptr (24)[ebp]
|
||
|
mov dword ptr (-28)[ebp],edi
|
||
|
jmp L27
|
||
|
L26:
|
||
|
mov edi,dword ptr (32)[ebp]
|
||
|
mov dword ptr (-28)[ebp],edi
|
||
|
L27:
|
||
|
mov edi,dword ptr (-28)[ebp]
|
||
|
mov dword ptr (-8)[ebp],edi
|
||
|
mov edi,dword ptr (36)[ebp]
|
||
|
cmp dword ptr (28)[ebp],edi
|
||
|
jle L37
|
||
|
mov edi,dword ptr (28)[ebp]
|
||
|
mov dword ptr (-32)[ebp],edi
|
||
|
jmp L38
|
||
|
L37:
|
||
|
mov edi,dword ptr (36)[ebp]
|
||
|
mov dword ptr (-32)[ebp],edi
|
||
|
L38:
|
||
|
mov edi,dword ptr (-32)[ebp]
|
||
|
mov dword ptr (-4)[ebp],edi
|
||
|
mov edi,dword ptr (20)[ebp]
|
||
|
lea esi,(-16)[ebp]
|
||
|
mov ecx,16
|
||
|
rep movsb
|
||
|
L5:
|
||
|
mov esp,ebp
|
||
|
pop ebp
|
||
|
pop edi
|
||
|
pop esi
|
||
|
pop ebx
|
||
|
ret
|
||
|
public _makepoint
|
||
|
_makepoint:
|
||
|
push ebx
|
||
|
push esi
|
||
|
push edi
|
||
|
push ebp
|
||
|
mov ebp,esp
|
||
|
sub esp,8
|
||
|
mov edi,dword ptr (24)[ebp]
|
||
|
mov dword ptr (-8)[ebp],edi
|
||
|
mov edi,dword ptr (28)[ebp]
|
||
|
mov dword ptr (-4)[ebp],edi
|
||
|
mov edi,dword ptr (20)[ebp]
|
||
|
lea esi,(-8)[ebp]
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
L39:
|
||
|
mov esp,ebp
|
||
|
pop ebp
|
||
|
pop edi
|
||
|
pop esi
|
||
|
pop ebx
|
||
|
ret
|
||
|
public _makerect
|
||
|
_makerect:
|
||
|
push ebx
|
||
|
push esi
|
||
|
push edi
|
||
|
push ebp
|
||
|
mov ebp,esp
|
||
|
sub esp,16
|
||
|
lea edi,(-16)[ebp]
|
||
|
lea esi,(24)[ebp]
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea edi,(-8)[ebp]
|
||
|
lea esi,(32)[ebp]
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea esi,(-16)[ebp]
|
||
|
sub esp,16
|
||
|
mov edi,esp
|
||
|
mov ecx,16
|
||
|
rep movsb
|
||
|
mov edi,dword ptr (20)[ebp]
|
||
|
push edi
|
||
|
call _canonrect
|
||
|
add esp,20
|
||
|
L42:
|
||
|
mov esp,ebp
|
||
|
pop ebp
|
||
|
pop edi
|
||
|
pop esi
|
||
|
pop ebx
|
||
|
ret
|
||
|
public _ptinrect
|
||
|
_ptinrect:
|
||
|
push ebx
|
||
|
push esi
|
||
|
push edi
|
||
|
push ebp
|
||
|
mov ebp,esp
|
||
|
sub esp,4
|
||
|
mov edi,dword ptr (20)[ebp]
|
||
|
cmp edi,dword ptr (28)[ebp]
|
||
|
jl L53
|
||
|
cmp edi,dword ptr (36)[ebp]
|
||
|
jge L53
|
||
|
mov edi,dword ptr (32)[ebp]
|
||
|
cmp dword ptr (24)[ebp],edi
|
||
|
jl L53
|
||
|
mov edi,dword ptr (40)[ebp]
|
||
|
cmp dword ptr (24)[ebp],edi
|
||
|
jge L53
|
||
|
mov dword ptr (-4)[ebp],1
|
||
|
jmp L54
|
||
|
L53:
|
||
|
mov dword ptr (-4)[ebp],0
|
||
|
L54:
|
||
|
mov eax,dword ptr (-4)[ebp]
|
||
|
L45:
|
||
|
mov esp,ebp
|
||
|
pop ebp
|
||
|
pop edi
|
||
|
pop esi
|
||
|
pop ebx
|
||
|
ret
|
||
|
_TEXT ends
|
||
|
_DATA segment
|
||
|
public _y
|
||
|
align 4
|
||
|
_y label byte
|
||
|
db 97
|
||
|
db 98
|
||
|
db 0
|
||
|
db 1 dup (0)
|
||
|
public _odd
|
||
|
_DATA ends
|
||
|
_TEXT segment
|
||
|
_odd:
|
||
|
push ebx
|
||
|
push esi
|
||
|
push edi
|
||
|
push ebp
|
||
|
mov ebp,esp
|
||
|
sub esp,4
|
||
|
lea edi,(-4)[ebp]
|
||
|
lea esi,(20)[ebp]
|
||
|
mov ecx,4
|
||
|
rep movsb
|
||
|
lea edi,(-4)[ebp]
|
||
|
push edi
|
||
|
lea edi,(L56)
|
||
|
push edi
|
||
|
call _printf
|
||
|
add esp,8
|
||
|
mov eax,0
|
||
|
L55:
|
||
|
mov esp,ebp
|
||
|
pop ebp
|
||
|
pop edi
|
||
|
pop esi
|
||
|
pop ebx
|
||
|
ret
|
||
|
_TEXT ends
|
||
|
_TEXT segment
|
||
|
align 4
|
||
|
L58 label byte
|
||
|
dd 0
|
||
|
dd 0
|
||
|
align 4
|
||
|
L59 label byte
|
||
|
dd 320
|
||
|
dd 320
|
||
|
align 4
|
||
|
L60 label byte
|
||
|
dd -1
|
||
|
dd -1
|
||
|
dd 1
|
||
|
dd 1
|
||
|
dd 20
|
||
|
dd 300
|
||
|
dd 500
|
||
|
dd 400
|
||
|
public _main
|
||
|
_TEXT ends
|
||
|
_TEXT segment
|
||
|
_main:
|
||
|
push ebx
|
||
|
push esi
|
||
|
push edi
|
||
|
push ebp
|
||
|
mov ebp,esp
|
||
|
sub esp,108
|
||
|
lea edi,(-68)[ebp]
|
||
|
lea esi,(L58)
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea edi,(-76)[ebp]
|
||
|
lea esi,(L59)
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea edi,(-36)[ebp]
|
||
|
lea esi,(L60)
|
||
|
mov ecx,32
|
||
|
rep movsb
|
||
|
push -10
|
||
|
push -10
|
||
|
lea edi,(-84)[ebp]
|
||
|
push edi
|
||
|
call _makepoint
|
||
|
add esp,12
|
||
|
lea esi,(-84)[ebp]
|
||
|
sub esp,8
|
||
|
mov edi,esp
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea esi,(-76)[ebp]
|
||
|
sub esp,8
|
||
|
mov edi,esp
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea edi,(-92)[ebp]
|
||
|
push edi
|
||
|
call _addpoint
|
||
|
add esp,20
|
||
|
push 10
|
||
|
push 10
|
||
|
lea edi,(-100)[ebp]
|
||
|
push edi
|
||
|
call _makepoint
|
||
|
add esp,12
|
||
|
lea esi,(-100)[ebp]
|
||
|
sub esp,8
|
||
|
mov edi,esp
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea esi,(-68)[ebp]
|
||
|
sub esp,8
|
||
|
mov edi,esp
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea edi,(-108)[ebp]
|
||
|
push edi
|
||
|
call _addpoint
|
||
|
add esp,20
|
||
|
lea esi,(-108)[ebp]
|
||
|
sub esp,8
|
||
|
mov edi,esp
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea esi,(-92)[ebp]
|
||
|
sub esp,8
|
||
|
mov edi,esp
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
lea edi,(-52)[ebp]
|
||
|
push edi
|
||
|
call _makerect
|
||
|
add esp,20
|
||
|
mov dword ptr (-4)[ebp],0
|
||
|
jmp L64
|
||
|
L61:
|
||
|
mov edi,dword ptr (-4)[ebp]
|
||
|
lea edi,[edi*8]
|
||
|
mov esi,dword ptr (-32)[ebp][edi]
|
||
|
push esi
|
||
|
mov edi,dword ptr (-36)[ebp][edi]
|
||
|
push edi
|
||
|
lea edi,(-60)[ebp]
|
||
|
push edi
|
||
|
call _makepoint
|
||
|
add esp,12
|
||
|
mov edi,dword ptr (-56)[ebp]
|
||
|
push edi
|
||
|
mov edi,dword ptr (-4)[ebp]
|
||
|
mov edi,dword ptr (-36)[ebp][edi*8]
|
||
|
push edi
|
||
|
lea edi,(L65)
|
||
|
push edi
|
||
|
call _printf
|
||
|
add esp,12
|
||
|
lea esi,(-52)[ebp]
|
||
|
sub esp,16
|
||
|
mov edi,esp
|
||
|
mov ecx,16
|
||
|
rep movsb
|
||
|
lea esi,(-60)[ebp]
|
||
|
sub esp,8
|
||
|
mov edi,esp
|
||
|
mov ecx,8
|
||
|
rep movsb
|
||
|
call _ptinrect
|
||
|
add esp,24
|
||
|
cmp eax,0
|
||
|
jne L68
|
||
|
lea edi,(L70)
|
||
|
push edi
|
||
|
call _printf
|
||
|
add esp,4
|
||
|
L68:
|
||
|
mov edi,dword ptr (-40)[ebp]
|
||
|
push edi
|
||
|
mov edi,dword ptr (-44)[ebp]
|
||
|
push edi
|
||
|
mov edi,dword ptr (-48)[ebp]
|
||
|
push edi
|
||
|
mov edi,dword ptr (-52)[ebp]
|
||
|
push edi
|
||
|
lea edi,(L71)
|
||
|
push edi
|
||
|
call _printf
|
||
|
add esp,20
|
||
|
L62:
|
||
|
inc dword ptr (-4)[ebp]
|
||
|
L64:
|
||
|
mov edi,dword ptr (-4)[ebp]
|
||
|
cmp edi,4
|
||
|
jb L61
|
||
|
lea esi,(_y)
|
||
|
sub esp,4
|
||
|
mov edi,esp
|
||
|
mov ecx,4
|
||
|
rep movsb
|
||
|
call _odd
|
||
|
add esp,4
|
||
|
push 0
|
||
|
call _exit
|
||
|
add esp,4
|
||
|
mov eax,0
|
||
|
L57:
|
||
|
mov esp,ebp
|
||
|
pop ebp
|
||
|
pop edi
|
||
|
pop esi
|
||
|
pop ebx
|
||
|
ret
|
||
|
_TEXT ends
|
||
|
extrn _exit:near
|
||
|
_TEXT segment
|
||
|
_TEXT ends
|
||
|
extrn _printf:near
|
||
|
_TEXT segment
|
||
|
_TEXT ends
|
||
|
_TEXT segment
|
||
|
align 1
|
||
|
L71 label byte
|
||
|
db 119
|
||
|
db 105
|
||
|
db 116
|
||
|
db 104
|
||
|
db 105
|
||
|
db 110
|
||
|
db 32
|
||
|
db 91
|
||
|
db 37
|
||
|
db 100
|
||
|
db 44
|
||
|
db 37
|
||
|
db 100
|
||
|
db 59
|
||
|
db 32
|
||
|
db 37
|
||
|
db 100
|
||
|
db 44
|
||
|
db 37
|
||
|
db 100
|
||
|
db 93
|
||
|
db 10
|
||
|
db 0
|
||
|
align 1
|
||
|
L70 label byte
|
||
|
db 110
|
||
|
db 111
|
||
|
db 116
|
||
|
db 32
|
||
|
db 0
|
||
|
align 1
|
||
|
L65 label byte
|
||
|
db 40
|
||
|
db 37
|
||
|
db 100
|
||
|
db 44
|
||
|
db 37
|
||
|
db 100
|
||
|
db 41
|
||
|
db 32
|
||
|
db 105
|
||
|
db 115
|
||
|
db 32
|
||
|
db 0
|
||
|
align 1
|
||
|
L56 label byte
|
||
|
db 37
|
||
|
db 115
|
||
|
db 10
|
||
|
db 0
|
||
|
_TEXT ends
|
||
|
end
|