|
[ kajla @ 20.12.2003. 13:47 ] @
| Imam .LIB fajl pisan za C pod dosom i heder fajl sa deklaracijama funkcija.(lepo radi sa Turbo C-om) Zanima me kako i da li mogu da koristim ovu biblioteku (tj. njene funkcije) u Turbo C++ 3.0? (pokusao sam da uradim kao i u Turbo C-u ali on prijavljuje Linker Error) Da li postoji način da nekako prepravim ovu biblioteku tako da radi pod Windowsom? (ova biblioteka sadrži funkcije za komunikaciju sa hp-ib karticom) Da li neko može da objasni kako se zapravo linkkuje .LIB fajl.
Kako mogu da disasemblujem ovu biblioteku tj. da vidim kod svake funkcije? Da li se format .LIB fajla razlikuje ako je pravljen recimo iz C-a i iz Pascala?
poz. |
[ Ivan Dimkovic @ 20.12.2003. 14:03 ] @
LIB fajl je kolekcija .obj fajlova koji se dobijaju kompajliranjem koda.
Dakle, on sadrzi masinski kod za odredjen procesor i OS, sa referencama ka nekim drugim funkcijama koje se u linkeru razresavaju.
Formati obj fajlova su obicno OMF ili COFF - i tesko da mozes nesto za DOS da linkujes sa Win32 linkerom. Najpametnije bi bilo da kontaktiras autore biblioteke i da ih zamolis da ti dostave verziju za tvoj OS i kompajler.
Drugo resenje, ako nemas nista pametnije, je da uzmes Watcom C kompajler, on je imao neku alatku za disasembliranje OBJ i LIB fajlova ako se dobro secam - i da pokusas to nekako da asembliras sa MASM-om, ali ovo je vrlo tezak posao jer je kod verovatno 16-bitni i koristi CRT funkcije tog starog kompajlera pa ce posao konverzije biti previse naporan da bi se stvarno isplatio.
[ kajla @ 20.12.2003. 15:21 ] @
Dobro. Ali kako da koristim funkcije ove bibiliteke u turbo c++ 3.0 pod dosom?
Nije mi jasno zasto radi u Turbo C, a u C++ javlja gresku?
poz.
[ leka @ 20.12.2003. 15:26 ] @
Mozes li nam makar dati te "linker error" poruke - pa da pokusamo da ustanovimo gde je greska...
[ kajla @ 20.12.2003. 17:35 ] @
Dobijem poruku tipa: "Undefined symbol IOTIMEOUT(long,double) in module MERENJE.CPP" gde je IOTIMEOUT funkcija iz .LIB fajla. I još nešto kad napišem funkciju:
Code:
int zbir(a,b)
int a,b
{
return a+b;
}
Dobijem Linker error sa istom porukom samo za funkciju zbir. Onaj ko je pisao .LIB fajl svoje funkcije je deklarisao kao gore. Predpostavljam da je ovo razlog zašto ovo biblioteka radi u Turbo C-u a neredi u Turbo C++ 3.0. Kako da ovo rešim?
poz
[ sspasic @ 20.12.2003. 20:51 ] @
A da nije u pitanju razlika izmedju toga kako C i C++ ime funkcije pretvaraju u simbol za linker? C++ ugradjuje i tip parametara a C ne.
Promeni ekstenziju fajla u C ili ovaj zbir (moze i include) uokviri sa:
Code:
extern "C" {
... // ovde ubaci deklaraciju funkcije zbir i include
};
Mozda ovo pomogne. Pod uslovom da taj LIB uopste moze da se koristi sa TC++ 3.0.
[ kajla @ 21.12.2003. 10:52 ] @
Heder falj sam izmenio da izgleda ovako:
Code:
extern "C"
{
int far IOABORT(long);
int far IOCLEAR(long);
int far IOCONTROL(long, int, int);
int far IODMA(long, int, int);
int far IOENTER(long, float far *);
int far IOENTERA(long, float far *, int far *);
int far IOENTERAB(long, void far *, int far *, int);
int far IOENTERB(long, void far *, int far *, int);
int far IOENTERS(long, char far *, int far *);
int far IOEOI(long, int);
int far IOEOL(long, char far *, int);
int far IOFASTOUT(long, int);
int far IOGETTERM(long, int far *);
int far IOLLOCKOUT(long);
int far IOLOCAL(long);
int far IOMATCH(long, char, int);
int far IOOUTPUT(long, double);
int far IOOUTPUTA(long, float far *, int);
int far IOOUTPUTAB(long, void far *, int, int);
int far IOOUTPUTB(long, void far *, int, int);
int far IOOUTPUTS(long, char far *, int);
int far IOPPOLL(long, int far *);
int far IOPPOLLC(long, int);
int far IOPPOLLU(long);
int far IOREMOTE(long);
int far IORESET(long);
int far IOSEND(long, char far *, int);
int far IOSPOLL(long, int far *);
int far IOSTATUS(long, int, int far *);
int far IOTIMEOUT(long, double);
int far IOTRIGGER(long);
}
Sada dobijam ovakvu grešku:
Linker Error: Fixup overflow at _TEXT:011F, target = _IOLOCAL in module MERENJE.CPP
Može li neko objasniti zašto javlja ovu grešku?
poz.
[ kajla @ 29.12.2003. 11:02 ] @
Ova biblioteka ne koristi CRT funkcije jer ništa ne ispisuje, već ima funkcije za komunikaciju sa hpib karticom. Koristio sam program obj2asm da disasemblujem ovaj .lib fajl i dobio sam sledeće:
Code:
; OBJASM version 2.0 released on Jan 3, 1991
; (C) Copyright 1988,1989,1990,1991 by Robert F. Day. All rights reserved
Bad record type: [00000000:F0:000D]
TITLE mclarge.ASM
; [0020] ; Unknown COMENT Record (Class 163): '[07]mclarge'
HPIB_DATA SEGMENT WORD PUBLIC 'DATA'
HPIB_DATA ENDS
HPIB_TEXT SEGMENT BYTE PUBLIC 'CODE'
HPIB_TEXT ENDS
DGROUP GROUP HPIB_DATA
IOGROUP GROUP HPIB_TEXT
; [03ED] ; Linker - Pass two marker
EXTRN HPIBLIB_SEND:NEAR
EXTRN HPIBLIB_EOL:NEAR
EXTRN HPIBLIB_OUTPUTAB:NEAR
EXTRN HPIBLIB_OUTPUTS:NEAR
EXTRN HPIBLIB_OUTPUTB:NEAR
EXTRN HPIBLIB_OUTPUTA:NEAR
EXTRN HPIBLIB_TIMEOUT:NEAR
EXTRN HPIBLIB_FASTOUT:NEAR
EXTRN HPIBLIB_LOCKOUT:NEAR
EXTRN HPIBLIB_CONTROL:NEAR
EXTRN HPIBLIB_TRIGGER:NEAR
EXTRN HPIBLIB_IOABORT:NEAR
EXTRN HPIBLIB_ENTERAB:NEAR
EXTRN HPIBLIB_STATUS:NEAR
EXTRN HPIBLIB_PPOLLU:NEAR
EXTRN HPIBLIB_ENTERS:NEAR
EXTRN HPIBLIB_REMOTE:NEAR
EXTRN HPIBLIB_PPOLLC:NEAR
EXTRN HPIBLIB_EOICTL:NEAR
EXTRN HPIBLIB_ENTERB:NEAR
EXTRN HPIBLIB_ENTERA:NEAR
EXTRN HPIBLIB_SPOLL:NEAR
EXTRN HPIBLIB_PPOLL:NEAR
EXTRN HPIBLIB_RESET:NEAR
EXTRN HPIBLIB_MATCH:NEAR
EXTRN HPIBLIB_LOCAL:NEAR
EXTRN HPIBLIB_IODMA:NEAR
EXTRN HPIBLIB_CLEAR:NEAR
EXTRN HPIBLIB_TERMREASON:NEAR
PUBLIC _IOABORT ; Located at 2:0000h Type = 1
PUBLIC _IOCLEAR ; Located at 2:001Dh Type = 1
PUBLIC _IOCONTROL ; Located at 2:003Ah Type = 1
PUBLIC _IODMA ; Located at 2:005Dh Type = 1
PUBLIC _IOENTER ; Located at 2:0080h Type = 1
PUBLIC _IOENTERA ; Located at 2:00A8h Type = 1
PUBLIC _IOENTERAB ; Located at 2:00E5h Type = 1
PUBLIC _IOENTERB ; Located at 2:012Eh Type = 1
PUBLIC _IOENTERS ; Located at 2:016Eh Type = 1
PUBLIC _IOEOI ; Located at 2:01ABh Type = 1
PUBLIC _IOEOL ; Located at 2:01CBh Type = 1
PUBLIC _IOGETTERM ; Located at 2:01F1h Type = 1
PUBLIC _IOLLOCKOUT ; Located at 2:0216h Type = 1
PUBLIC _IOLOCAL ; Located at 2:0233h Type = 1
PUBLIC _IOMATCH ; Located at 2:0250h Type = 1
PUBLIC _IOOUTPUT ; Located at 2:0273h Type = 1
PUBLIC _IOOUTPUTA ; Located at 2:02AAh Type = 1
PUBLIC _IOOUTPUTAB ; Located at 2:02DAh Type = 1
PUBLIC _IOOUTPUTB ; Located at 2:0313h Type = 1
PUBLIC _IOOUTPUTS ; Located at 2:0346h Type = 1
PUBLIC _IOPPOLL ; Located at 2:0376h Type = 1
PUBLIC _IOPPOLLC ; Located at 2:039Fh Type = 1
PUBLIC _IOPPOLLU ; Located at 2:03BFh Type = 1
PUBLIC _IOREMOTE ; Located at 2:03DCh Type = 1
PUBLIC _IORESET ; Located at 2:03F9h Type = 1
PUBLIC _IOSEND ; Located at 2:0416h Type = 1
PUBLIC _IOSPOLL ; Located at 2:0446h Type = 1
PUBLIC _IOSTATUS ; Located at 2:046Bh Type = 1
PUBLIC _IOTIMEOUT ; Located at 2:0493h Type = 1
PUBLIC _IOTRIGGER ; Located at 2:04D0h Type = 1
PUBLIC _IOFASTOUT ; Located at 2:04EDh Type = 1
.286p
.287
HPIB_TEXT SEGMENT
assume cs:HPIB_TEXT
_IOABORT:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
assume cs: IOGROUP
call HPIBLIB_IOABORT
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOCLEAR:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_CLEAR
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOCONTROL:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
mov cx,[bp+00Ch]
mov dx,[bp+00Ah]
call HPIBLIB_CONTROL
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IODMA: push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+00Ah]
mov dx,[bp+00Ch]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_IODMA
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOENTER:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,0001h
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_ENTERA
pop si
pop di
pop ds
mov sp,bp
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOENTERA:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov bx,[bp+00Eh]
mov ds,word ptr [bp+010h]
mov cx,[bx]
cmp cx,+000h
jl $L1
mov di,[bp+00Ah]
mov ds,word ptr [bp+00Ch]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_ENTERA
jmp short $L2
nop
$L1: mov ah,03h
$L2: mov bx,[bp+00Eh]
mov ds,word ptr [bp+010h]
mov [bx],cx
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOENTERAB:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ds,word ptr [bp+0010h]
mov bx,[bp+000Eh]
mov cx,[bx]
cmp cx,+000h
jng $L3
mov ds,word ptr [bp+000Ch]
mov di,[bp+000Ah]
mov ax,[bp+0006h]
mov bx,[bp+0008h]
mov dx,[bp+0012h]
call HPIBLIB_ENTERAB
mov ds,word ptr [bp+0010h]
mov di,[bp+000Eh]
mov [di],cx
jmp short $L4
nop
$L3: mov ah,03h
$L4: mov al,ah
xor ah,ah
pop si
pop di
pop ds
pop bp
ret ; (retf)
_IOENTERB:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ds,word ptr [bp+010h]
mov bx,[bp+00Eh]
mov cx,[bx]
cmp cx,+000h
jng $L5
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
mov dx,[bp+012h]
call HPIBLIB_ENTERB
mov ds,word ptr [bp+010h]
mov di,[bp+00Eh]
mov [di],cx
jmp short $L6
nop
$L5: mov ah,03h
$L6: mov al,ah
xor ah,ah
pop si
pop di
pop ds
pop bp
ret ; (retf)
_IOENTERS:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ds,word ptr [bp+010h]
mov bx,[bp+00Eh]
mov cx,[bx]
cmp cx,+000h
jl $L7
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_ENTERS
mov ds,word ptr [bp+010h]
mov di,[bp+00Eh]
mov [di],cx
jmp short $L8
nop
$L7: mov ah,03h
$L8: mov al,ah
xor ah,ah
pop si
pop di
pop ds
pop bp
ret ; (retf)
_IOEOI: push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov dx,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_EOICTL
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOEOL: push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+00Eh]
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_EOL
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOGETTERM:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_TERMREASON
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov [di],bx
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOLLOCKOUT:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_LOCKOUT
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOLOCAL:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_LOCAL
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOMATCH:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+00Ch]
mov dx,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_MATCH
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOOUTPUT:
push bp
mov bp,sp
push ds
push di
push si
lea di,[bp+00Ah]
push ss
pop ds
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+00Ch]
mov bx,[bp+00Eh]
mov ax,[bp+010h]
call $S9
mov [bp+00Ah],bx
mov [bp+00Ch],ax
mov cx,0001h
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_OUTPUTA
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOOUTPUTA:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+00Eh]
cmp cx,+000h
jl $L10
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_OUTPUTA
jmp short $L11
nop
$L10: mov ah,03h
$L11: pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOOUTPUTAB:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+000Eh]
cmp cx,+000h
jng $L12
mov ds,word ptr [bp+000Ch]
mov di,[bp+000Ah]
mov ax,[bp+0006h]
mov bx,[bp+0008h]
mov dx,[bp+0010h]
call HPIBLIB_OUTPUTAB
jmp short $L13
nop
$L12: mov ah,03h
$L13: pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOOUTPUTB:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+00Eh]
cmp cx,+000h
jng $L14
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
mov dx,[bp+010h]
call HPIBLIB_OUTPUTB
jmp short $L15
nop
$L14: mov ah,03h
$L15: pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOOUTPUTS:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+00Eh]
cmp cx,+000h
jl $L16
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_OUTPUTS
jmp short $L17
nop
$L16: mov ah,03h
$L17: mov al,ah
xor ah,ah
pop si
pop di
pop ds
pop bp
ret ; (retf)
_IOPPOLL:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+0006h]
mov bx,[bp+0008h]
call HPIBLIB_PPOLL
mov di,[bp+000Ah]
mov ds,word ptr [bp+000Ch]
mov [di],bx
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOPPOLLC:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov dx,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_PPOLLC
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOPPOLLU:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_PPOLLU
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOREMOTE:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_REMOTE
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IORESET:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_RESET
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOSEND:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov cx,[bp+00Eh]
cmp cx,+000h
jl $L18
mov ds,word ptr [bp+00Ch]
mov di,[bp+00Ah]
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_SEND
jmp short $L19
nop
$L18: mov ah,03h
$L19: pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOSPOLL:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_SPOLL
mov di,[bp+00Ah]
mov ds,word ptr [bp+00Ch]
mov [di],bx
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOSTATUS:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
mov dx,[bp+00Ah]
call HPIBLIB_STATUS
mov di,[bp+00Ch]
mov ds,word ptr [bp+00Eh]
mov [di],bx
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOTIMEOUT:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
lea di,[bp+00Ah]
push ss
pop ds
push ds
mov cx,[di+002h]
mov bx,[di+004h]
mov ax,[di+006h]
call $S9
pop ds
mov [di],bx
mov [di+002h],ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_TIMEOUT
mov [di],dx
mov [di+002h],cx
cld
pop si
pop di
pop ds
mov sp,bp
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOTRIGGER:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
call HPIBLIB_TRIGGER
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
_IOFASTOUT:
push bp
mov bp,sp
push ds
push di
push si
mov ax,seg DGROUP
mov es,ax
mov ax,[bp+006h]
mov bx,[bp+008h]
mov cx,[bp+00Ah]
call HPIBLIB_FASTOUT
pop si
pop di
pop ds
pop bp
mov al,ah
xor ah,ah
ret ; (retf)
$S9: mov dx,ax
and dx,7FFFh
shr dx,1
shr dx,1
shr dx,1
shr dx,1
cmp dx,07FFh
jz $L20
cmp dx,+000h
jz $L21
jmp short $L22
$L21: jmp $S23
$L22: sub dx,0380h
js $L24
jmp short $L25
$L24: jmp $S26
$L25: jz $L27
jmp short $L28
$L27: jmp $S29
$L28: cmp dx,00FFh
jnl $L30
jmp short $L31
$L30: jmp $S32
$L31: xor dh,dh
push dx
mov dx,ax
and dx,+00Fh
clc
rcl cx,1
rcl bx,1
rcl dx,1
rcl cx,1
rcl bx,1
rcl dx,1
rcl cx,1
rcl bx,1
rcl dx,1
shr ch,1
shr ch,1
shr ch,1
shr ch,1
cmp ch,08h
jl $L33
add bx,+001h
adc dx,+000h
$L33: pop cx
mov ch,cl
xor cl,cl
shr cx,1
or dx,cx
and ah,80h
or dh,ah
mov cl,00h
mov ax,dx
jmp $S34
$L20: test al,0Fh
jnz $L35
cmp cx,+000h
jnz $L35
cmp bx,+000h
jnz $L35
and ax,8000h
or ax,7F80h
mov bx,0000h
mov cx,0002h
jmp short $S34
nop
$L35: mov ax,7FFFh
mov bx,0FFFFh
mov cx,0002h
jmp short $S34
nop
$S23: test al,0Fh
jnz $S32
cmp cx,+000h
jnz $S32
cmp bx,+000h
jnz $S32
and ax,8000h
xor bx,bx
mov cl,00h
jmp short $S34
nop
$S26: cmp dx,-018h
jl $S32
$S29: push si
mov si,ax
and ax,000Fh
or ax,0010h
shl cx,1
rcl bx,1
rcl ax,1
shl cx,1
rcl bx,1
rcl ax,1
shl cx,1
rcl bx,1
rcl ax,1
$L37: cmp dx,+000h
jz $L36
inc dx
shr al,1
rcr bx,1
rcr cx,1
jmp short $L37
$L36: test bx,0001h
jz $L38
add bx,+002h
adc ax,0000h
$L38: shr ax,1
rcr bx,1
and si,8000h
or ax,si
mov cx,0002h
pop si
jmp short $S34
nop
$S32: mov ax,7F80h
mov bx,0000h
mov cl,01h
$S34: ret
HPIB_TEXT ENDS
END
Nije mi jasno gde se nalaze funkcije HPIBLIB_SEND, i druge. Drugo što mi nije jasno kako ova biblioteka radi bez fajla mclarge.ASM? Da li neko može da objasni šta je u pitanju?
poz.
[ kajla @ 30.12.2003. 10:35 ] @
Predpostavljam da ovaj progy nije dobro preveo ovaj .LIB fajl pa me zanima da li postoji još neki progy koji radi ovo. Neko je spomenuo Watcom C compiler ali ja na netu nigde nisam uspeo da nađem link koji radi, pa ako neko zna gde se ovo može naći nek postuje preko foruma.
Drugo što me zanima je kako da debugujem program koji koristi ovu biblioteku i da na taj način vidim kako rade funkcije ove biblioteke.(Ja treba svega dve funkcije iz ove biblioteke da prebacim da rade pod Windowsom) Probao sam sa Turbo Debuggerom za DOS ali nikako nemogu da nadjem gde se pozivaju ove funkcije. Ima li neko ideju za ovo?
poz.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|