I added inhalt.asm to my fortran to deal with its fussiness about un-declared integer and real variables and functions, your rot8left64,asm function being "real" to fortran and the receiver variable (MW) in my main program being an "integer." Discrimination!? But there's still a linking problem (see bottom output).
-mjrice
-----------------TEST.F95----------------------
100 FORMAT(A8)
READ(*,100) LW
WRITE(*,100) LW
MW=INHALT(ROT8LEFT64(LW))
WRITE(*,100) MW
END
------------------------------------------------
global inhalt_
section .text ;return contents given the addr of a 64-bit integer
inhalt_:
push ebp
mov ebp, esp
mov eax, [ebp+8]
mov eax, [eax]
pop ebp
; fld qword [eax]
mov edx, [eax+4]
mov eax, [eax]
ret
-----------------------------------
struc rot8left64_stk
resd 1 ; return address.
.lo: resd 1
.hi: resd 1
endstruc
section .text
global rot8left64
rot8left64:
mov eax, [esp+rot8left64_stk.lo]
mov edx, [esp+rot8left64_stk.hi]
mov ecx, eax
shld eax, edx, 8
shld edx, ecx, 8
ret
-------------------------------------------
mrice@debian10-uni:~$ cd work
mrice@debian10-uni:~/work$ nasm -f elf inhalt.asm -o inhalt.o
mrice@debian10-uni:~/work$ nasm -f elf rot8left64.asm -o rot8left64.o
mrice@debian10-uni:~/work$ gfortran -c -fdefault-integer-8 -fdefault-real-8 -fno-range-check test.f95 -o test.o
mrice@debian10-uni:~/work$ gfortran test.o inhalt.o rot8left64.o -o test
/usr/bin/ld: test.o: in function `MAIN__':
test.f95:(.text+0x115): undefined reference to `rot8left64_'
collect2: error: ld returned 1 exit status
mrice@debian10-uni:~/work$