我正在尝试打印我声明的数组中的第一个值:
global _main
extern _printf
section .data
array db "1","2","3","4","5","6","7","8","9"
fmt db "%d",0
section .text
_main:
push ebp
mov ebp, esp
mov ebx, array
mov eax, [ebx]
push eax
push fmt
call _printf
add esp, 4
pop eax
mov esp, ebp
pop ebp
ret
但是,输出不是1
,而是一些非常大的数字。我想通过在每个整数周围加上引号,我会打印符号,而不是等效的ASCII。
答案 0 :(得分:1)
您使用db
,这意味着定义字节,单个字符,而您似乎期望格式为%d
的整数。
您应该使用dd
代替并删除引号:
array dd 1, 2, 3, 4, 5, 6, 7, 8, 9
fmt db "%d", 0
如果要打印字符,请使用%c
:
array dd "1","2","3","4","5","6","7","8","9"
fmt db "%c", 0
加上,在这里:
add esp, 4
应该是:
add esp, 8
你推了两个论点。