1

假设我有以下代码(它提供了一个错误:)Expected scalar type

a db 10 dup(2)
b db $-3

有什么办法可以在组装中做一些等效的事情吗?编辑:我将 TASM 用于 8086

4

2 回答 2

0

哪个汇编程序?dup看起来像马斯麦。在 Nasm 中,b db ($-$$) - 3会这样做。您似乎不太可能将此值放在一个字节中。我会选择ddor in 64-bit code dq

我认为您不会在 Nasm 手册的任何地方找到“标量”一词,但它的意思是“不是可重定位的值”。$与任何标签一样,是可重定位的,但两个标签之间的差异是“标量”值。

与 C 不同,我们没有“汇编语言标准委员会”。汇编程序作者可以自由使用他们喜欢的任何语法 - 他们确实这样做了!在 AT&T 语法中(这不是)$具有完全不同的含义。可能不适用于 Masm,但值得一试。您确实需要指定哪个汇编程序!

于 2013-01-13T16:57:59.200 回答
0

它不是标量类型,因为db变量保存一个字节,($-3) 表示当前偏移量减去 3(偏移量在 16 位模式下是一个字(2字节)在32 位模式)

于 2015-03-07T18:57:13.140 回答