0

私はこのコードを持っています:

.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
.data
num dd ?
.code
start:
mov eax, 1
mov ebx, 1
add eax, ebx
push eax
pop num
sub num, 0
invoke StdOut, addr num
invoke ExitProcess, 0
end start

1 + 1を実行してから、結果をコンソールに表示することになっています。実行すると、数値2ではなく2のASCII文字(2番目のASCII文字)が表示されます。2番目のASCII文字ではなく数値2を表示する方法がわかりません。それ、どうやったら出来るの?

前もって感謝します、

プログラム

4

1 に答える 1

1

変数を文字列として宣言できます。

.data
num DB '2',0 ; maps "2" and a null-symbol to num

また、数値に48を加算することもできます(これにより、正しいASCII数値が得られます)(または、減算して文字列から整数を取得します)。

于 2012-04-16T10:19:35.170 に答える