【发布时间】:2016-08-14 07:43:44
【问题描述】:
我正在尝试将宏从 MASM6 移植到 TASM5(在 IDEAL 模式下),但遇到了错误。宏本身组装良好,但当我尝试调用它时,我在组装过程中收到以下错误:
错误 xxx.asm(##) 不能在表达式中使用宏名:M_SWAP16
宏从文本宏中获取数值并执行字节交换。宏通常与采用立即值的操作或在变量初始化期间调用。
MACRO M_swap16 operand
LOCAL result
result = (((operand and 0FFh) shl 8) or ((operand and 0FF00h) shr 8))
exitm %result
ENDM
IPPROTO_TCP EQU 6
.
.
.
mov [protocol], M_swap16(IPPROTO_TCP) ; fails
.
.
.
protocol DW ?
protocol_default DW M_swap16(IPPROTO_TCP) ; fails
它在 MASM 6.11 中运行良好。将 TASM 从 IDEAL 模式切换到 MASM 模式并没有帮助。也不会将宏移动到 EQU 语句中。想法?
【问题讨论】: