我不知道如何從數據庫字符串中打印字符。所以我們可以說我有如何從數據庫字符串打印字符?
str1 DB "hello"
tmp DB ?
,我想打印的「E」字符。
mov ah, [str1 +1*1]
mov tmp, ah
Invoke StdOut, addr tmp
但是,這段代碼沒有打印出任何東西。我想知道我做錯了什麼。謝謝!
我不知道如何從數據庫字符串中打印字符。所以我們可以說我有如何從數據庫字符串打印字符?
str1 DB "hello"
tmp DB ?
,我想打印的「E」字符。
mov ah, [str1 +1*1]
mov tmp, ah
Invoke StdOut, addr tmp
但是,這段代碼沒有打印出任何東西。我想知道我做錯了什麼。謝謝!
你只有一個字節定義的地址(都在tmp和通過使用啊)。這在Windows中不起作用(我認爲這是給定masm32標記和Invoke的所需平臺)。地址應該至少爲16位,在現代版本的Windows中應該是32位或64位。
您必須將您的代碼構建爲控制檯應用程序。否則,你不會打印任何東西。 查看您的項目/構建選項。
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
http://stackoverflow.com/questions/19144764/masm32-invoking-stdout-gives-no-output(不積極)的可能的複製......你大概還需要提供一個以NULL結尾的字符串...... – TypeIA
完成後,依然如此。 – ddacot