【发布时间】:2020-02-09 12:41:23
【问题描述】:
我尝试在 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
【问题讨论】:
-
你可以把 0 放在最后,然后计数元素,直到索引处的元素为 0。
-
我正在寻找一些组装时间方法...如果现有值之一变成 0 怎么办?