2013-10-07 62 views
0

我在MASM寫了一個簡單的小彙編程序,但我得到的輸出是意想不到的,由3前綴,像我有上顯示它進入12345顯示爲與DumpMem在MASM意外的輸出 - 大會

輸出

在哪裏,如果我不採取來自用戶的輸入和硬編碼像mystring byte 1,2,3,4,6 - 它顯示像01 02 03 04 06

輸出幫助我理解這一點行爲 - 在此先感謝

下面是程序代碼:

INCLUDE Irvine32.inc 

.data 
disp byte "Enter String : ",0 
mystring byte 5 dup(?) 

.code 
main PROC 
mov edx,offset disp 
call writestring 
mov edx, offset mystring 
mov ecx, 50 
call ReadString 
mov esi, offset mystring 
mov ecx, lengthof mystring 
mov ebx, TYPE mystring 
call dumpmem 

exit 
main ENDP 
END main 

回答

1

你正在傾倒在你的字符串中的字符的ASCII碼的十六進制值,因爲這是他們是如何存儲在內存中。 31十六進制= ASCII'0',32十六進制= ASCII'1'等。

請注意,要將ASCII數字(如'0')轉換爲相應的字節值,您需要減去0x30。相反,您可以通過添加0x30將存儲爲字節的十進制數字轉換爲其等效的ASCII字符代碼。

+1

哦,我的壞 - 它沒有點擊我。謝謝:) –

+0

嘗試輸入非數字字符串,如「Hello world」,只是爲了好玩。 –

+0

是的,我嘗試過。其實,我只是新裝配:P –