123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- .486
- .model flat
- extrn __fltused:near
- extrn __ftol:near
- _DATA segment
- public _x
- align 4
- _x label byte
- dd 1
- db 2
- db 3 dup (0)
- db 03H
- db 040H
- db 2 dup (0)
- db 050H
- db 6
- db 2 dup (0)
- public _i
- align 4
- _i label byte
- dd 16
- public _y
- align 4
- _y label byte
- db 023H
- db 3 dup (0)
- db 09H
- db 00H
- db 00H
- db 00H
- public _main
- _DATA ends
- _TEXT segment
- _main:
- push ebx
- push esi
- push edi
- push ebp
- mov ebp,esp
- movsx edi,byte ptr (_x+13)
- push edi
- mov edi,dword ptr (_x+12)
- sal edi,25
- sar edi,29
- push edi
- mov edi,dword ptr (_x+8)
- sal edi,16
- sar edi,28
- push edi
- mov edi,dword ptr (_x+8)
- sal edi,20
- sar edi,20
- push edi
- movsx edi,byte ptr (_x+4)
- push edi
- mov edi,dword ptr (_x)
- push edi
- lea edi,(L4)
- push edi
- call _printf
- add esp,28
- mov edi,dword ptr (_y+4)
- push edi
- mov edi,dword ptr (_y)
- mov esi,edi
- shr esi,2
- and esi,15
- push esi
- and edi,3
- push edi
- lea edi,(L10)
- push edi
- call _printf
- add esp,16
- mov edi,dword ptr (_x+8)
- and edi,0ffff0fffH
- mov esi,dword ptr (_i)
- sal esi,28
- sar esi,28
- shl esi,12
- and esi,0f000H
- or edi,esi
- mov dword ptr (_x+8),edi
- mov edi,dword ptr (_x+12)
- and edi,0ffffff8fH
- mov dword ptr (_x+12),edi
- movsx edi,byte ptr (_x+13)
- push edi
- mov edi,dword ptr (_x+12)
- sal edi,25
- sar edi,29
- push edi
- mov edi,dword ptr (_x+8)
- sal edi,16
- sar edi,28
- push edi
- mov edi,dword ptr (_x+8)
- sal edi,20
- sar edi,20
- push edi
- movsx edi,byte ptr (_x+4)
- push edi
- mov edi,dword ptr (_x)
- push edi
- lea edi,(L4)
- push edi
- call _printf
- add esp,28
- mov edi,dword ptr (_y)
- and edi,0fffffffcH
- or edi,2
- mov dword ptr (_y),edi
- mov edi,dword ptr (_i)
- mov dword ptr (_y+4),edi
- mov edi,dword ptr (_y+4)
- push edi
- mov edi,dword ptr (_y)
- mov esi,edi
- shr esi,2
- and esi,15
- push esi
- and edi,3
- push edi
- lea edi,(L10)
- push edi
- call _printf
- add esp,16
- lea edi,(_x)
- push edi
- call _f2
- add esp,4
- mov eax,0
- L3:
- mov esp,ebp
- pop ebp
- pop edi
- pop esi
- pop ebx
- ret
- public _f1
- _f1:
- push ebx
- push esi
- push edi
- push ebp
- mov ebp,esp
- mov edi,dword ptr (20)[ebp]
- and dword ptr [edi],0ffffffc3H
- mov edi,dword ptr (20)[ebp]
- mov esi,dword ptr [edi]
- and esi,0fffffffcH
- mov ebx,0
- and ebx,3
- and ebx,3
- or esi,ebx
- mov dword ptr [edi],esi
- mov edi,dword ptr (20)[ebp]
- mov edi,dword ptr [edi]
- and edi,60
- cmp edi,0
- je L22
- lea edi,(L24)
- push edi
- call _printf
- add esp,4
- L22:
- mov edi,dword ptr (20)[ebp]
- or dword ptr [edi],3
- mov edi,dword ptr (20)[ebp]
- or dword ptr [edi],60
- mov edi,dword ptr (20)[ebp]
- mov edi,dword ptr [edi]
- mov esi,edi
- shr esi,2
- and esi,15
- push esi
- and edi,3
- push edi
- lea edi,(L25)
- push edi
- call _printf
- add esp,12
- mov eax,0
- L21:
- mov esp,ebp
- pop ebp
- pop edi
- pop esi
- pop ebx
- ret
- public _f2
- _f2:
- push ebx
- push esi
- push edi
- push ebp
- mov ebp,esp
- sub esp,4
- cmp dword ptr (_i),0
- jne L28
- mov dword ptr (-4)[ebp],1
- jmp L29
- L28:
- mov dword ptr (-4)[ebp],0
- L29:
- mov edi,dword ptr (20)[ebp]
- mov esi,dword ptr [edi]
- and esi,0fffffffcH
- mov ebx,dword ptr (-4)[ebp]
- and ebx,3
- and ebx,3
- or esi,ebx
- mov dword ptr [edi],esi
- mov edi,dword ptr (20)[ebp]
- push edi
- call _f1
- add esp,4
- mov esi,dword ptr [edi]
- and esi,0ffffffc3H
- mov ebx,0
- and ebx,15
- lea ebx,[ebx*4]
- and ebx,60
- or esi,ebx
- mov dword ptr [edi],esi
- mov eax,0
- L26:
- mov esp,ebp
- pop ebp
- pop edi
- pop esi
- pop ebx
- ret
- _TEXT ends
- extrn _printf:near
- _TEXT segment
- _TEXT ends
- _TEXT segment
- align 1
- L25 label byte
- db 112
- db 45
- db 62
- db 97
- db 32
- db 61
- db 32
- db 48
- db 120
- db 37
- db 120
- db 44
- db 32
- db 112
- db 45
- db 62
- db 98
- db 32
- db 61
- db 32
- db 48
- db 120
- db 37
- db 120
- db 10
- db 0
- align 1
- L24 label byte
- db 112
- db 45
- db 62
- db 98
- db 32
- db 33
- db 61
- db 32
- db 48
- db 33
- db 10
- db 0
- align 1
- L10 label byte
- db 121
- db 32
- db 61
- db 32
- db 37
- db 100
- db 32
- db 37
- db 100
- db 32
- db 37
- db 100
- db 10
- db 0
- align 1
- L4 label byte
- db 120
- db 32
- db 61
- db 32
- db 37
- db 100
- db 32
- db 37
- db 100
- db 32
- db 37
- db 100
- db 32
- db 37
- db 100
- db 32
- db 37
- db 100
- db 32
- db 37
- db 100
- db 10
- db 0
- _TEXT ends
- end
|