如何使用TASM汇编器使用/链接.lib文件作为库?

时间:2019-04-04 01:38:02

标签: assembly tasm lib irvine16

我用汇编语言制作一个项目,需要使用.lib文件。我使用TASM汇编程序,但无法成功运行程序。

我搜索了有关使用TASM链接.lib文件的信息,但是所有资料都向我展示了如何使用MASM链接.lib文件。我找到了一个简短的教程,我一直在尝试从http://grail.cba.csuohio.edu/~jackie/cis335/tasmInfo.htm中使用它,但是仍然无法运行我的程序。

1 个答案:

答案 0 :(得分:0)

IRVINE16.INC使用TASM无法识别的指令(例如PROTO)。 IRVINE16.LIB导出修饰后的名称(例如_WriteString@0)。

首先,您需要使IRVINE16.INC具有可读性:

  • .NOLIST更改为%NOLIST
  • 删除或注释掉每行。包含指令PROTO的代码块(显然是一起的两三行)。
  • 将每个STRUCT更改为STRUC(CursorPosStruc,TimeRecord,FPU_ENVIRON)
  • 将每个DWORD更改为DD。请勿更改ALIGN DWORD
  • 将每个WORD更改为DW
  • 将每个BYTE更改为DB

现在创建一个扩展名为.inc的8.3文本文件。让我们将其命名为beeftasm.inc

EXTRN _Clrscr@0:PROC
EXTRN _Crlf@0:PROC
EXTRN _Delay@0:PROC
EXTRN _DumpMem@0:PROC
EXTRN _DumpRegs@0:PROC
EXTRN _GetCommandtail@0:PROC
EXTRN _GetMaxXY@0:PROC
EXTRN _GetMseconds@0:PROC
EXTRN _Gotoxy@0:PROC
EXTRN _IsDigit@0:PROC
EXTRN _Randomize@0:PROC
EXTRN _RandomRange@0:PROC
EXTRN _Random32@0:PROC
EXTRN _ReadHex@0:PROC
EXTRN _ReadInt@0:PROC
EXTRN _ReadChar@0:PROC
EXTRN _ReadFloat@0:PROC
EXTRN _ReadString@0:PROC
EXTRN _SetTextColor@0:PROC
EXTRN _ShowFPUStack@0:PROC
EXTRN _WaitMsg@0:PROC
EXTRN _WriteBin@0:PROC
EXTRN _WriteBinB@0:PROC
EXTRN _WriteChar@0:PROC
EXTRN _WriteDec@0:PROC
EXTRN _WriteHex@0:PROC
EXTRN _WriteHexB@0:PROC
EXTRN _WriteInt@0:PROC
EXTRN _WriteString@0:PROC
EXTRN _WriteFloat@0:PROC

EXTRN _Str_copy@4:PROC
EXTRN _Str_length@2:PROC
EXTRN _Str_compare@4:PROC
EXTRN _Str_trim@4:PROC
EXTRN _Str_ucase@2:PROC

Str_copy = cs:_Str_copy@4
Str_length = cs:_Str_length@2
Str_compare = cs:_Str_compare@4
Str_trim = cs:_Str_trim@4
Str_ucase = cs:_Str_ucase@2

Clrscr = cs:_Clrscr@0
Crlf = cs:_Crlf@0
Delay = cs:_Delay@0
DumpMem = cs:_DumpMem@0
DumpRegs = cs:_DumpRegs@0
GetCommandtail = cs:_GetCommandtail@0
GetMaxXY = cs:_GetMaxXY@0
GetMseconds = cs:_GetMseconds@0
Gotoxy = cs:_Gotoxy@0
IsDigit = cs:_IsDigit@0
Randomize = cs:_Randomize@0
RandomRange = cs:_RandomRange@0
Random32 = cs:_Random32@0
ReadHex = cs:_ReadHex@0
ReadInt = cs:_ReadInt@0
ReadChar = cs:_ReadChar@0
ReadFloat = cs:_ReadFloat@0
ReadString = cs:_ReadString@0
SetTextColor = cs:_SetTextColor@0
ShowFPUStack = cs:_ShowFPUStack@0
WaitMsg = cs:_WaitMsg@0
WriteBin = cs:_WriteBin@0
WriteBinB = cs:_WriteBinB@0
WriteChar = cs:_WriteChar@0
WriteDec = cs:_WriteDec@0
WriteHex = cs:_WriteHex@0
WriteHexB = cs:_WriteHexB@0
WriteInt = cs:_WriteInt@0
WriteString = cs:_WriteString@0
WriteFloat = cs:_WriteFloat@0

遵循一个小的测试程序,该程序调用{​​{1}}的所有导出函数:

IRVINE16.LIB