0
section .data
intArray dw 100,90,80,70,60
twoNums db ' %d %d ',0,10
num dw 10
numIs db ' %d ',10,0
hello : db 'hello',10,0
section .text
global main
extern printf
main :
mov ebx,intArray
mov esi,0
arrayTravel:
movzx eax,word[intArray+esi]
movzx ebx,word[intArray+esi+2]
push ebx
push eax
push twoNums
call printf
add esp,12
sub eax,ebx
push eax
push numIs
call printf
add esp,8
ret
sonuç yerine printf
o EAX
basılan karakter sayısını döndürür aradığınızda i t bu durumda, bundan 12. Çıkart 90 -78neden çıkarma sonucudur? Montaj x86
yerine esp, 12 ile esp ekle, 4 sonra her iki regs için pop kullanılır. iyi çalışıyor. çok teşekkürler. – matheromqq
@matheromqq, düzeltmeniz bu durumda da işe yarayacaktır. Burada işlev parametreleri (değere göre geçirilir) işleve geçmek için yığına kopyalanır. Ancak, çağrı yapan kongre aksi belirtilmedikçe, çağrılan işlev bu kopyaları değiştirme hakkına sahiptir. Bu nedenle, değerleri arama işlevinin kontrol ettiği bir yerde korumalısınız. örneğin, bir (korunmuş) kayıt, yığın, hafıza vb. Öte yandan, eğer yaptığınız gibi, yazmaçların saklanmadığını varsayarsanız, kendiniz için hayatı çok daha zorlaştırırsınız! –