大会美元符号减号

时间:2013-01-13 16:28:58

标签: assembly x86 x86-16 tasm

假设我有以下代码(它会发出错误:Expected scalar type):

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

有没有办法做一些与装配相同的东西? 编辑:我正在使用TASM for 8086

2 个答案:

答案 0 :(得分:0)

哪个汇编程序? dup看起来像Masmese。在纳什姆,b db ($-$$) - 3将会这样做。您想要将此值放在一个字节中似乎不太可能。我会使用dd或64位代码dq

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

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

答案 1 :(得分:0)

它不是标量类型,因为 db 变量包含一个字节,而($ -3)表示当前偏移减去3(偏移量是一个单词( 2 字节)在16位模式下或双字( 4 字节)在32位模式下)