Assembly 如何检查符号是否是TASM宏中的寄存器?
有没有办法检查符号是数字、寄存器还是内存位置Assembly 如何检查符号是否是TASM宏中的寄存器?,assembly,macros,x86-16,tasm,Assembly,Macros,X86 16,Tasm,有没有办法检查符号是数字、寄存器还是内存位置 if AX is a 16 bit register Do this else Do that 我将在宏中使用它来检查符号是否指向8位或16位位置+是否是特定寄存器 是否有类似于装配时间检查的内容?在《Turbo Assembler用户指南》中查找SYMTYPE和.TYPE。这似乎是你想要的。谢谢你的帮助,迈克尔!然而,我的问题仍然没有解决。我的16位TASM不知道什么符号类型,有一个宏名为.type,但它只能区分寄存器(返回30H)和立即值
if AX is a 16 bit register
Do this
else
Do that
我将在宏中使用它来检查符号是否指向8位或16位位置+是否是特定寄存器
是否有类似于装配时间检查的内容?在《Turbo Assembler用户指南》中查找
SYMTYPE
和.TYPE
。这似乎是你想要的。谢谢你的帮助,迈克尔!然而,我的问题仍然没有解决。我的16位TASM不知道什么符号类型,有一个宏名为.type,但它只能区分寄存器(返回30H)和立即值(返回24H)。它返回与AX AH SI BX相同的值。是否有其他的解决方法,或者我遗漏了什么?MOV AX,.type ahi是否有一些汇编时间方法可以有条件地解决我的问题…因此,如果.type AX==0024H,则执行寄存器操作,否则执行该操作。。。或者是没有寄存器的CMP。我不明白为什么需要检查AX
是什么,所以我假设您实际上处理的是一个宏参数,可能是AX
或其他任何东西。因此,IF(.TYPE param)EQ 30h
将在组装时计算为true(如果参数是寄存器)。我不确定是否有一种简单的方法来区分不同的寄存器大小。您可能需要进行一系列字符串比较。请在《Turbo Assembler用户指南》中查找SYMTYPE
和.TYPE
。这似乎是你想要的。谢谢你的帮助,迈克尔!然而,我的问题仍然没有解决。我的16位TASM不知道什么符号类型,有一个宏名为.type,但它只能区分寄存器(返回30H)和立即值(返回24H)。它返回与AX AH SI BX相同的值。是否有其他的解决方法,或者我遗漏了什么?MOV AX,.type ahi是否有一些汇编时间方法可以有条件地解决我的问题…因此,如果.type AX==0024H,则执行寄存器操作,否则执行该操作。。。或者是没有寄存器的CMP。我不明白为什么需要检查AX
是什么,所以我假设您实际上处理的是一个宏参数,可能是AX
或其他任何东西。因此,IF(.TYPE param)EQ 30h
将在组装时计算为true(如果参数是寄存器)。我不确定是否有一种简单的方法来区分不同的寄存器大小。为此,您可能需要进行一系列字符串比较。