有没有办法以这种方式传递字节:
mov ecx, byte ["mybytes",0xa,0]
而不是:
section .data
mybytes db "mybytes",0xa,0
section .text
global main
main:
mov ecx, mybytes
?
感谢 Peter Cordes,我创建了一个完美的宏:
%macro count2ESI 1
mov esi, %1
%%count_characters:
cmp byte [esi], 0
je %%end
inc esi
jmp %%count_characters
%%end:
sub esi, %1
%endmacro
%macro print 1
[section .rodata]
%%data db %1,0xa,0
__?SECT?__
count2ESI %%data
mov eax, 4
mov ebx, 1
lea ecx, %%data
mov edx, esi
int 0x80
%endmacro
现在我可以简单地
print "string"
并且它有效!