Fichier .obj

Signaler
Messages postés
34
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
10 août 2004
-
Messages postés
34
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
10 août 2004
-
Hello tt le monde :)
Alors voila j'ai un petit problème, j'ai deux fichiers un .obj et un .asm qui sont apelés dans un programme sous delphi mais a la compilation il me dt qu'il y a imcompatibilté car le fichier lié est en 16bits et qu'il faut le mettre en 32 bits.... et ca je sais pas comment faire qq'un a une suggestion?
Merci de votre aide :)

5 réponses

Messages postés
570
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 janvier 2021
2
Salut,
Si le fichier asm accepte d'être recompiler avec un assembleur 32 bits c'est gagné.
Dans le cas contraire,il faut trouver le bon assembleur,compatible avec delphi (masm32 a des chances de l'être) et retravailler le source pour que le compilateur accepte de produire le fichier objet.
Sa risque d'être long,ToutEnMasm
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
masm32 produit du obj 32 compatible Delphi.

Comme dit ToutEnMasm, le prob c'est le source a reecrire en 32 bits, supprimer appels aux interruptions etc...
Bonne route.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
34
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
10 août 2004

Voila ma source vous la pensez compatible en 32bits?

code segment byte public
assume cs:code
public mmsend
public mmread
public binread

;************************************************

mmsend proc far

cmd_add equ <8[bp]>
mm_add equ <6[bp]>

push bp
mov bp,sp

push ax
push bx
push dx
push si
push ds

lds si,cmd_add ;string address (offset) into SI
;segment into ds
inc si ;skip over the length byte

mov dx,mm_add ;port address into DX; passed by value
inc dx

wait_mm_rdy:
in al,dx ;wait for MM2000 to be ready
cmp al,80h ;bit 7=1
jne wait_mm_rdy

mov al,byte ptr[si] ;get data
mov ah,al ;save data

dec dx
out dx,al ;send data
inc dx

or al,80h ;send DAV signal
out dx,al ;output data and DAV signal

wait_mm_dac:
in al,dx ;wait for MM2000 to accept data
cmp al,0 ;i.e. not ready -- bit 7=0
jne wait_mm_dac

cli ;disable interrupts

mov al,0 ;set DAV not data valid and
out dx,al ;remove data

inc si
cmp ah,0dh ;test if last char. sent
je wait_mm_rdy_exit

sti ;enable interrupts
jmp wait_mm_rdy

wait_mm_rdy_exit:
in al,dx ;wait for MM2000 to be ready for exit
cmp al,80h ;bit 7=1
jne wait_mm_rdy_exit

sti ;enable interrupts
pop ds
pop si
pop dx
pop bx
pop ax
mov sp,bp
pop bp
ret 6

mmsend endp

;************************************************

mmread proc far

resp_add equ <8[bp]>
mm_addr equ <6[bp]>

push bp
mov bp,sp

push ax
push bx
push dx
push di
push ds

lds di,resp_add ;string address (offset) into di
;segment into ds
mov bx,di ;save pointer to string length
mov al,0
mov [bx],al ;string length = 0 at start
inc di ;point to beginning of string

mov dx,mm_addr ;port address into DX
inc dx

wait_mm_ready:
in al,dx ;wait for MM2000 not ready to receive
cmp al,0 ;i.e. ready to send
jne wait_mm_ready

pc_ready_for_data:
mov al,80h
out dx,al ;send PC ready to interface

wait_mm_dav:
in al,dx ;wait for MM2000 to indicate DAV
cmp al,80h ;bit 7=1
jb wait_mm_dav ;jump if below

dec dx ;get data
in al,dx
inc dx

mov [di],al ;store data at string address
inc byte ptr [bx] ;inc. resp. string length
mov ah,al ;save received character
inc di

mov al,0 ;indicate to MM2000 data accepted
out dx,al ;set bit 7=0
cmp ah,0ah
je exit

wait_mm_ndav:
in al,dx ;wait for MM2000 to indicate not DAV
cmp al,0 ;bit 7=0
jne wait_mm_ndav

jmp pc_ready_for_data

; Exit if character received is line feed

exit:
in al,dx
cmp al,80h
jne exit

pop ds
pop di
pop dx
pop bx
pop ax
mov sp,bp
pop bp
ret 6

mmread endp

;***************************************

binread proc

bin_add equ <8[bp]>
mm_addr equ <6[bp]>

push bp
mov bp,sp

push ax
push bx
push dx
push di

mov dx,mm_addr ;port address into DX
inc dx

lds bx,bin_add ;bx<-offset, ds<-segment
mov cx,bx
add cx,3
dec bx

bwait_mm_ready:
in al,dx ;wait for MM2000 not ready to receive
cmp al,0 ;i.e. ready to send
jne bwait_mm_ready

bpc_ready_for_data:
mov al,80h
out dx,al ;send PC ready to interface

bwait_mm_dav:
in al,dx ;wait for MM2000 to indicate DAV
cmp al,80h ;bit 7=1
jb bwait_mm_dav ;jump if below

dec dx ;get data
in al,dx
inc dx

inc bx
mov [bx],al

mov al,0 ;indicate to MM2000 data accepted
out dx,al ;set bit 7=0

cmp bx,cx
je bexit

bwait_mm_ndav:
in al,dx ;wait for MM2000 to indicate not DAV
cmp al,0 ;bit 7=0
jne bwait_mm_ndav

jmp bpc_ready_for_data

; Exit if character received is line feed

bexit:
in al,dx
cmp al,80h
jne bexit

pop di
pop dx
pop bx
pop ax
mov sp,bp
pop bp
ret 6

binread endp

;---------------------------------------
code ends
end



Merci pour les réponses :)
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
25
pas du tout.
cli, sti, etc n'ont rien a faire en mode protege.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
34
Date d'inscription
vendredi 11 juillet 2003
Statut
Membre
Dernière intervention
10 août 2004

mouarf oki thx kan meme