123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454 |
- .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
|