TASM 8086(16位):如何获取sizeof数组?

问题描述 投票:1回答:1

我尝试在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 ...

arrays size x86-16 tasm
1个回答
3
投票

我的建议:

© www.soinside.com 2019 - 2024. All rights reserved.