匯程式設計序呼叫c程式

2021-04-01 09:51:57 字數 778 閱讀 9245

首先是匯程式設計序,還是前面的例子,只是加了2行程式:

extern main             ;說明這個函式從外面程式獲得

[section .data]

charact  db  'a'

[section .text]

global _start

_start:

mov ecx,charact

push ecx   

call usestack   

pop ecx

mov edx,1

mov ebx,1

mov eax,4

int 0x80

call main       ;在這裡呼叫函式

mov eax,1

mov ebx,0

int 0x80

usestack:

mov ebp, esp

pushad

mov ebp,dword[ebp+4]

inc  word[ebp]  

popad

ret  

下面是c語言程式:

#include

int main(void)

printf("hello/n");

return 0;

將組合語言編譯成.o檔案:

na** -f elf stack.a**  生成stack.o

將c語言編譯成.o檔案:

gcc -c hello.c  ,生成hello.o

然後用以下命令連線:

呼叫c ARM匯程式設計序呼叫 C 程式

在arm 匯程式設計序和c 程式之間相互呼叫時必須遵守 atpcs 規則,atpcs 規定了一些函式間呼叫的基本規則。一 atpcs 規則 atpcs 即 arm thumb procedure call standard arm thumb過程呼叫標準 的簡稱,是基於arm指令集和thumb指令集...

ARM彙編程式設計之C程式呼叫匯程式設計序

編寫乙個彙編子程式,實現兩個字資料的加法運算,編寫乙個c程式來呼叫該彙編子程式,並將運算結果使用printf 函式顯示出來。示例如下 為解決這個問題,分別編寫滿足需求的c程式和匯程式設計序。c程式源 define uint32 unsigned int extern uint32 add uint3...

匯程式設計序 呼叫C庫函式

當我們在vs環境下學習組合語言的時候,呼叫win32的api函式進行控制台的輸入和輸出是非常麻煩的。但是c的庫函式怎麼呼叫又好像不清楚,以下是在vs2017環境下呼叫c庫函式printf和scanf函式實現控制台輸入輸出.includelib kernel32.lib 這個庫用於呼叫win32的ex...