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 的 ASCII 字符(第二个 ASCII 字符),而不是数字 2。我不知道如何让它显示数字 2,而不是第二个 ASCII 字符。我怎么做?

提前致谢,

程序

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 回答