2013-01-13 96 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位模式下爲字節))