📄 tdinfo7.inc
字号:
l187f proc near
call WriteHeader
call ClearHeader
mov cx,16
xor di,di
@@1: push cx
mov word ptr Cnt[di],1
mov cx,di
shr cx,1
mov ax,1
shl ax,cl
mov d3caa,ax
mov Phase,ax
cmp ax,400h
jb @@2
cmp ax,2000h
ja @@2
cmp d3cef,0
je @@4
@@2: call l18f6
mov bx,FirstUnit
@@3: mov es,bx
mov d3cb2,bx
push es di
call cs:l141c[di]
pop di es
mov bx,es:[4]
or bx,bx
jnz @@3
@@4: pop cx
inc di
inc di
loop @@1
ret
l187f endp
l18d6 dw 0c100h,8085h,8000h,0
dw 1,3,92h,4ch
dw 8600h,8500h,0a00h,0
dw 400h,400h,0,-1
l18f6 proc near
mov ax,cs:l18d6[di]
cmp ax,0
je @@5
or d3caa,ax
push di
mov cx,10h
xor di,di
@@1: shr ax,1
jnc @@2
mov word ptr Cnt[di],1
@@2: inc di
inc di
or ax,ax
jz @@3
loop @@1
@@3: pop di
cmp Cnt.TypeCount,1
jne @@4
cmp Phase,100h
je @@4
mov Cnt.TypeCount,21h
@@4: cmp Cnt.ScopeCount,1
jne @@5
push word ptr Cnt[8]
pop Cnt.ScopeCount
@@5: test d3caa,0b00h
jz @@6
not d3cbe
@@6: ret
l18f6 endp
l194e proc near
mov ax,es:[3ch]
inc ax
add Cnt.NameCount,ax
ret
l194e endp
l1958 proc near
mov si,es:[si]
or si,si
jz @@1
push es
mov bl,es:[si+3]
xor bh,bh
lea si,[bx+si+4]
mov si,es:[si+2]
add si,es:[0ch]
mov si,es:[si]
mov es,ProcInfo
add dx,es:[si+8]
pop es
@@1: ret
l1958 endp
WriteHeader proc near
mov ax,30h
cmp Cnt.ClassCount,1
je @@1
add ax,10h
@@1: call GetMem
call StartBuf
call l1a51
mov ax,52fbh
stosw
mov ax,208h
cmp Cnt.ClassCount,1
je @@2
mov ax,209h
@@2: stosw
mov ax,NamePoolSize.Offs
stosw
mov ax,NamePoolSize.Segm
stosw
mov ax,Cnt.NameCount
dec ax
stosw
mov ax,Cnt.TypeCount
dec ax
stosw
mov d3cf0,ax
mov ax,Cnt.MemberCount
dec ax
stosw
mov d3cf2,ax
mov ax,Cnt.SymbolCount
dec ax
stosw
inc di
inc di
mov ax,Cnt.SegmentCount
dec ax
stosw
inc di
inc di
mov ax,Cnt.ScopeCount
dec ax
stosw
mov ax,Cnt.LineNumberCount
dec ax
stosw
mov ax,Cnt.SourceFileCount
dec ax
stosw
mov ax,Cnt.SegmentCount
dec ax
stosw
mov ax,Cnt.CorrelCount
dec ax
stosw
add di,4
cmp OverlaysPresent,1
je @@3
add di,4
inc di
jmp short @@4
@@3: inc di
inc di
mov ax,DataStart
stosw
mov al,2
stosb
@@4: inc di
inc di
mov ax,Cnt.DataCount
dec ax
stosw
mov d3cf6,ax
inc di
mov d3cef,0
cmp Cnt.ClassCount,1
jne @@5
mov d3cf4,0
inc di
inc di
jmp short @@6
@@5: mov d3cef,1
mov ax,10h
stosw
mov ax,Cnt.ClassCount
dec ax
stosw
mov ax,Cnt.ParentCount
dec ax
stosw
mov d3cf4,ax
inc di
inc di
inc di
inc di
mov ax,Cnt.SegmentCount
dec ax
stosw
mov ax,Cnt.SegmentCount
dec ax
stosw
inc di
inc di
inc di
inc di
@@6: call StopBuf
ret
WriteHeader endp
l1a51 proc near
push di
shr ax,1
mov cx,ax
xor ax,ax
rep stosw
pop di
ret
l1a51 endp
l1a5c proc near
push bp
mov bp,sp
push si di ds
mov ax,di
add ax,si
shr ax,1
push ds si di
dec ax
mov cx,9
mul cx
add ax,d3cb6
mov si,ax
call StartBuf
mov dx,di
mov ax,es
mov ds,ax
rep movsb
pop di si es
@@1: mov bx,si
mov al,0
call l1ad2
jz @@2
inc si
jmp @@1
@@2: mov bx,di
mov al,1
call l1ad2
jz @@3
dec di
jmp @@2
@@3: cmp si,di
ja @@5
je @@4
call l1b3f
@@4: inc si
dec di
cmp si,di
jna @@1
@@5: pop ds
cmp [bp-2],di
jae @@6
xchg si,[bp-2]
call l1a5c
mov si,[bp-2]
@@6: cmp [bp-4],si
jbe @@7
mov di,[bp-4]
call l1a5c
@@7: mov sp,bp
pop bp
ret
l1a5c endp
l1aca db 0,3,1,1,3,2,3,3
l1ad2 proc near
push si di dx ax
mov si,dx
mov cx,9
mov ax,bx
dec ax
mul cx
add ax,es:d3cb6
mov di,ax
pop ax
or al,al
jnz @@1
xchg si,di
@@1: lea bx,l1aca
mov al,[di+8]
and al,7
segcs xlat
mov ah,al
mov al,[si+8]
and al,7
segcs xlat
cmp al,ah
jb @@4
ja @@5
cmp al,0
jne @@2
mov ax,[si+6]
cmp ax,[di+6]
jb @@4
ja @@5
mov ax,[si+4]
cmp ax,[di+4]
jb @@4
jmp short @@5
@@2: cmp al,1
jne @@3
mov ax,[si+4]
cmp ax,[di+4]
jg @@4
jmp short @@5
@@3: mov ax,[si]
cmp ax,[di]
jmp short @@7
@@4: mov al,1
jmp short @@6
@@5: mov al,0
@@6: or al,al
@@7: pop dx di si
ret
l1ad2 endp
l1b3f proc near
push si di dx
mov cx,9
mov ax,si
dec ax
mul cx
add ax,es:d3cb6
mov si,ax
mov ax,di
dec ax
mul cx
add ax,es:d3cb6
mov di,ax
@@1: mov al,[si]
xchg al,[di]
mov [si],al
inc si
inc di
loop @@1
pop dx di si
ret
l1b3f endp
l1b6b proc near
mov dx,ax
sub ax,Cnt.SymbolCount
jz @@3
neg ax
push ax
push dx
mov di,ax
mov si,1
push es
call l1a5c
pop es dx cx
push ds es
mov di,d3cb6
mov es,ProcInfo
mov ds,BufPtr.Segm
@@1: mov al,[di+8]
mov ah,al
and al,7
jnz @@2
test ah,20h
jz @@2
and byte ptr [di+8],0dfh
mov bx,[di]
mov es:[bx],dx
mov ax,es:[bx+4]
mov [di],ax
@@2: add di,9
inc dx
loop @@1
pop es ds
@@3: ret
l1b6b endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -