2011-12-13 66 views
0

我對變量如何存儲在數據段中有點困惑。我們給出的代碼這一部分:彙編語言字節計數

 .data 
vala dw 1234h 
valb db 1,2,3,4 
valc db '1234$' 
vald db '12' 

我做了,像這樣的偏移數據表:因爲需要

offset 00 01 02 03 04 05 06 07 08 09 10 11 
data 34 12 01 02 03 04 31 32 33 34 31 32 

我不認爲我在加載到內存中正確的字節總數在內存中是13,我在這裏只有11。有人可以評論我出錯的地方嗎?

還有另外一個問題,詢問有多少字節這些指令後寫入到標準輸出設備:

mov dx,offset valb ;valb has 4 bytes 
mov ah,9    ;4 bytes is written to the output 
int 21h    ;for a total of 8 bytes 

上午我通過這一段的代碼以正確的方式在想什麼?

回答

1

你列出12,而不是11。美元字符缺少一個字節。除此之外,補償似乎很好。

此外,功能9只打印文本,而不是二進制數字。它不會以可讀的方式打印valb中的4個字節(1,2,3和4)。它將打印多少字節......呃,它不會打印美元,因爲它被用作字符串終結符(請參閱文檔,順便說一句,它都在那裏)。所以,它應該只有8個(字節1到4和字符「1」,「2」,「3」和「4」)有4個奇怪的字符。

+0

謝謝,我總是忘記數美元符號。 – raphnguyen