123456789101112131415161718192021222324252627282930313233343536373839404142 |
- .sect .text; .sect .rom; .sect .data; .sect .bss
- .sect .text
- .define .set
- ! #bytes in ecx
- ! bit # in eax
- .set:
- pop ebx ! return address
- xor edx,edx
- !ifdef create set
- sub esp,ecx
- push ebx
- push edi
- mov ebx,esp
- xor edi,edi
- sar ecx,2
- 1:
- mov 8(ebx)(edi),edx
- add edi,4
- loop 1b
- !endif
- mov ebx,8
- div ebx
- cmp eax,edi
- jae 2f
- mov edi,edx
- movb dl,bits(edi)
- mov edi,esp
- add edi,eax
- orb 8(edi),dl
- pop edi
- ret
- 2:
- .extern ESET
- .extern .trp
- pop edi
- mov eax,ESET
- jmp .trp
- .sect .rom
- bits:
- .data1 1,2,4,8,16,32,64,128
|