2014-01-20 56 views
0

我不知道如何從數據庫字符串中打印字符。所以我們可以說我有如何從數據庫字符串打印字符?

str1 DB "hello" 
tmp DB ? 

,我想打印的「E」字符。

mov ah, [str1 +1*1] 
mov tmp, ah 
Invoke StdOut, addr tmp 

但是,這段代碼沒有打印出任何東西。我想知道我做錯了什麼。謝謝!

+0

http://stackoverflow.com/questions/19144764/masm32-invoking-stdout-gives-no-output(不積極)的可能的複製......你大概還需要提供一個以NULL結尾的字符串...... – TypeIA

+0

完成後,依然如此。 – ddacot

回答

1

你只有一個字節定義的地址(都在tmp和通過使用啊)。這在Windows中不起作用(我認爲這是給定masm32標記和Invoke的所需平臺)。地址應該至少爲16位,在現代版本的Windows中應該是32位或64位。

0

您必須將您的代碼構建爲控制檯應用程序。否則,你不會打印任何東西。 查看您的項目/構建選項。

1
str1 db 'hello',0  ;6 Bytes 
tmp dd 0    ;DWORD 

...

mov esi,offset str1 ;ESI = Source 
mov edi,offset tmp  ;EDI = Destination 
inc esi    ;Skip first letter 
lodsb     ;Load byte from ESI to AL 
stosb     ;Store AL in EDI 
invoke StdOut,addr tmp ;Output