2013-01-13 95 views
1

假设我有以下代码(它提供了一个错误:Expected scalar type):大会美元符号负数

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

有没有办法做一些等同于组装? 编辑:我正在使用TASM 8086

+3

即汇编 –

+0

您正在使用哪种汇编?你瞄准什么处理器? – nrz

+1

也许是因为'$'是一个'word'或'dword'的值,而你试图把它填充到一个'byte'中? –

回答

0

哪个汇编程序? dup看起来像Masmese。在纳斯姆,b db ($-$$) - 3将做到这一点。似乎不太可能,你想把这个值放在一个字节中。我会去与dd或在64位代码dq

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

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

+0

我正在使用turbo汇编程序8086 @FrankKotler – horiadev

+0

如果我所展示的内容不适用于Tasm,请尝试将标签放在任何你打算用$开始计数的地方。你已经表明这是有效的。我认识Nasm,主要是...... –

0

它不是一个标量类型,因为一分贝变量保存一个字节和($ -3)指当前偏移减去3(偏移量是在16位的一个字(2 字节)模式或双字(在32位模式下为字节))