我尝试在TASM中使用SIZE运算符以获取数组的大小。但是这里有一个小问题...
如果我使用EQU指令设置数组的数据,
ASSUME CS:CODE,DS:DATA
ARRAY EQU 10H,20H,30H,40H
CODE SEGMENT
;[...Initialize data segment...]
MOV AX,SIZE ARR
;[...Rest of the code(if any)...]
CODE ENDS
DATA SEGMENT
ARR DB ARRAY
DATA ENDS
END
它的大小为1。
最有可能发生的事情是TASM计算大小的方式
SYMBOL_NAME DB(=1) (*) ARRAY[1+NUMBER OF COMMAS]
有什么方法可以克服它。可以通过使用其他一些指令,也可以在组装之前有条件地扩展宏。
使用上述解决方案后的输出。 (DOSBox 0.74)
Turbo Assembler Version 3.0 Copyright (c) 1988, 1991 Borland International
Assembling file: exp14b.ASM
ADD DI,$-ARR
**Error** exp14b.ASM(12) Can't subtract dissimilar relative quantities
Error messages: 1
Warning messages: None
Passes: 1
Remaining memory: 476k
我尝试在TASM中使用SIZE运算符以获取数组的大小。但是这里有一个小问题...如果我使用EQU指令设置数组的数据,则ASSUME CS:CODE,DS:DATA ARRAY ...
我的建议: