2017-06-08 56 views
1

即時通訊設法編寫簡單的程序在MASM和即時通訊注意到,我的程序加載其中之一時混合vararas。變量混合加載其中之一

下面是簡單的例子例如:

.386 
.model FLAT, STDCALL 
option casemap:none 
include \masm32\include\masm32rt.inc 
includelib \masm32\lib\kernel32.lib 
includelib \masm32\lib\masm32.lib 

.data 
buffer2  db "34" 
buffer1  db "60" 

.data? 
number1 dd ? 
number2 dd ? 

.code 
start: 

invoke atodw, offset buffer1 
mov number1, eax;    ;Here eax=60 so it's ok 


invoke atodw, offset buffer2 
mov number2, eax    ;but here eax=3460 

invoke ExitProcess, 0 
end start 

什麼更有趣的,我可以通過在.data段切換可變順序改變簡單那些valuses,然後我將看到(1)EAX = 6034,(2)EAX = 34

所以我的問題是:什麼我做錯了,如何解決它?

回答

0

「字符串」表示在MASM32 SDK中始終爲一個空字符結尾的字符串。彙編程序不會將引號中的字符串識別爲具有空終止的字符串,而只是它的一系列字符。

無論我刪除是沒有必要 - masm32rt.inc所有這一切:

include \masm32\include\masm32rt.inc 

.data 
buffer2  db "34",0 
buffer1  db "60",0 

.data? 
number1 dd ? 
number2 dd ? 

.code 
start: 

invoke atodw, offset buffer1 
mov number1, eax;    ;Here eax=60 so it's ok 

printf ("number1: %d\n",[number1]) 

invoke atodw, offset buffer2 
mov number2, eax    ;but here eax=3460 

printf ("number2: %d\n",[number2]) 

invoke ExitProcess, 0 
end start 

對不起,我聽不懂的第二個問題。