0

私はアセンブリ言語が初めてで、2 つの数値を追加して結果を表示する単純なプログラムを理解しようとしています。

section .data

message1 db "value=%d%d",10,0

 section .text
   global main
   extern printf
   main:
   mov eax, 55
   mov ebx, 45
   add eax,ebx
   push eax
   push ebx
   push message1
   call printf
   add esp, 8
   ret

出力が出てくるのは45 100です

eax ebx 命令の追加後、結果は eax レジスタに格納されます。

しかし、次の行で何が起こるか

 push eax   // push 100 on to stack

 push ebx   // push 45 on to stack

 push message1  // push "value=%d" on to stack // I m bit doubtful here 

私が知りたいのは、「call printf」が実行されるとどうなるのですか??

「esp、8を追加」の目的は何ですか??

4

1 に答える 1