0
下面的MASM程序的目標是聲明一個簡單的稱爲Date的結構。我將它的字段(日,月,年)分別初始化爲(09,01,1980)。我只想打印Day字段的值。如何使用MASM打印來自數據結構的字段值
這裏的MASM代碼:
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
include \masm32\include\msvcrt.inc
includelib \masm32\lib\msvcrt.lib
Date struct
Day DWORD ?
Month DWORD ?
Year DWORD ?
Date ends
.data
PrintString BYTE "%s", 0
Monday Date <09, 1, 1980>
.data?
Pointer DWORD ?
.code
start:
mov ebx, OFFSET Monday
mov ecx, [ebx].Date.Day
invoke crt_printf, PrintString,
[ebx].Date.Day
;invoke crt_printf, PrintString,
; ecx
_quit:
invoke ExitProcess, 0
end start
兩個 'crt_printf' 將調用失敗。沒有他們,程序會成功完成。執行帶有消息「myExe.exe已停止工作」的消息框。我想我有一個「分段錯誤」問題。所以我不明白爲什麼我的註冊表是空的,或者它不是存儲這類數據的正確註冊表,或者我的方法可能不是很好。
有人能幫助我嗎?
感謝您的回答,但即使我使用%d或%u也是如此。解決方法是使用print str $(ecx)。有用 ! – user1364743 2013-03-14 18:06:35
這可能也適用,但使用'crt_printf'確實可以處理我列出的更改。我在我的系統上確認了它。 – Michael 2013-03-14 18:17:31