2015-06-08 57 views
2
.data 
    myarray BYTE "Hi there",0 
    myarray_len EQU $-myarray 
    myarray2 BYTE myarray_len DUP(' '); sets myarray_len number of 
             ; bytes to be equal to ' ' 

我試圖找出什麼在上面的代碼中第二行則

myarray_len EQU $-myarray 

我知道它創建一個名爲myarray_len項目和EQU將設置該語句的左側與右側類似於C++中的#define。我不確定$-myarray做什麼。基於我可能猜到的其他代碼,但這對我來說無法幫助我,因爲我仍然不知道這兩個符號在做什麼。我看了這個網站和谷歌和維基百科上的幾個地方,我知道它是一個愚蠢的簡單問題,但我無法找到答案。我認爲$與在內存中創建空間有關,因爲它也用於str$,但不確定' - '的作用。

回答

3

$代表當彙編器正在分配數據段中的空間時的當前地址。因此,在這種情況下,它將從myarray開始的地址減去myarray末尾的地址,給出myarray的長度。

然後myarray2分配相同數量的內存,但填充空間字符。