Ecco i due sorgenti, quello del programma principale e quello di una procedura esterna:
extrn X:near ;definiamo il segmento text segment public ;inizio del programma start: mov ah,00h mov al,03h int 10h mov al,'X' call X mov ah,00h int 16h mov ah,4ch int 21H text ends end start
public X text segment public X proc near mov ah,09h mov bh,00h mov bl,0ch mov cx,1 int 10h ret X endp text ends endassemblo e linko insieme l'uno e l'altro:
c:\Assembly>ml /Zm /c uno.asm Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: uno.asm c:\Assembly>ml /Zm /c proced.asm Microsoft (R) Macro Assembler Version 6.14.8444 Copyright (C) Microsoft Corp 1981-1997. All rights reserved. Assembling: proced.asm c:\Assembly>link uno proced Microsoft (R) Segmented Executable Linker Version 5.60.339 Dec 5 1994 Copyright (C) Microsoft Corp 1984-1993. All rights reserved. Run File [uno.exe]: List File [nul.map]: Libraries [.lib]: Definitions File [nul.def]: LINK : warning L4021: no stack segment c:\Assembly>e funziona:
X c:\Assembly>
Adesso, invece di linkare due files oggetto insieme uso una libreria:
Costruisco una libreria.
c:\Assembly>lib libreria Microsoft (R) Library Manager Version 3.40 Copyright (C) Microsoft Corp 1983-1993. All rights reserved. Library does not exist. Create? (y/n) y Operations: List file: c:\Assembly>dir libreria* Il volume nell'unità C non ha etichetta. Numero di serie del volume: ECE6-4560 Directory di c:\Assembly 20/09/2013 00.31 1.033 libreria.lib 1 File 1.033 byte 0 Directory 12.002.516.992 byte disponibili c:\Assembly>Adesso ci agginugo il file oggetto proced.obj.
Troviamolo...
c:\Assembly>dir proced* Il volume nell'unità C non ha etichetta. Numero di serie del volume: ECE6-4560 Directory di c:\Assembly 19/09/2013 22.07 137 proced.asm 20/09/2013 00.33 77 proced.obj 2 File 214 byte 0 Directory 12.002.582.528 byte disponibili c:\Assembly>Eccolo!
Aggiungiamolo:
c:\Assembly>lib libreria + proced Microsoft (R) Library Manager Version 3.40 Copyright (C) Microsoft Corp 1983-1993. All rights reserved. List file: Output library: c:\Assembly>Leggiamo la libreria per vedere se contiene la procedura:
c:\Assembly>lib libreria Microsoft (R) Library Manager Version 3.40 Copyright (C) Microsoft Corp 1983-1993. All rights reserved. Operations: List file: con X.................proced proced Offset: 00000010H Code and data size: cH X c:\Assembly>Perfetto!
Nessun commento:
Posta un commento