簡體   English   中英

如何將數組從組件傳遞到 C function

[英]How to pass array from assembly to a C function

我想將匯編代碼中定義的數組傳遞給 C function,但是當我嘗試在 Z0D61F8370CAD1D412F80B84D143E125Z 代碼中訪問該數組時出現段沖突錯誤。 這是匯編代碼(我使用的是nasm):

%include "io.inc"
extern minimo ;My C function
extern printf

section .data
   array db 1, 2, 3, 4, 5 ;My array
   alen db 5               ;My array length
   fmt db "%d", 10, 0      ;Format for the printf function

section .text
global CMAIN
CMAIN:
   xor eax, eax

   mov ebx, [alen]
   mov ecx, [array]
   
   push ebx
   push ecx
   call minimo
   add esp, 8

   push eax
   push fmt
   call printf
   add esp, 8
   
   mov eax, 1
   mov ebx, 0
   int 80h

這是我的 C 代碼:

int minimo(int *array, int size){
   int ret = array[0];
   for (int i = 1; i < size; i++){
      if(array[i] < ret){
         ret = array[i];
      }
   }
   return ret;
}

mov ecx, [array]移動位於“array”指向的位置的值,所以你需要移動一個地址mov ecx, array就可以

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM