2013-07-29 46 views
0

我花了一兩天的時間鑽研Assembly。我一直在閱讀一個相當好的教程,它涵蓋了不同的寄存器/二進制數字系統的工作原理等。然而,它並沒有真正進入彙編代碼本身。它只是談論Assembly的概念以及它如何工作等(它提供了一些代碼示例,如下所示 - 但沒有解釋代碼中發生了什麼)。瞭解ASM代碼的這一點

msg db 'Displaying 9 stars', 0xa 
len equ $ - msg 
s2 times 9 db '*' 

雖然我覺得我越來越知道事情是如何工作的,我想問一下關於上述代碼中的幾個問題(真的想了解它是如何工作的,而不是接受它的作品的事實)。

1)可以任何文本後0xa(我假設0xa是一個新行)?

2)不$ - 變量(在這種情況下,$ - 味精)獲得一個變量的長度? $的真正目的是什麼?

3)這裏發生的事情:S2次9中Db「*

我的問題#3假設是可變S2是剛剛被設置爲9 的字符串。如果是這樣,爲什麼數據庫''最後? s2 db'*'times是不是更有意義9

+0

組裝芯片? 86?哪一個? –

+0

@JohnSaunders英特爾處理器,x86 – Justin

回答

1

1)當然,你可以有例如第二和第三行,等等。

2)是的。 $表示當前位置,所以$ - 變量表示當前地址減去變量的起始地址,即長度。

3)從當前段分配9個數據字節,每個字節的字符值爲'*',地址給出名稱s2。

+0

啊,謝謝。它看起來像s2是TIMES功能的一部分。 – Justin