匯編寫c語(yǔ)言函數(shù)調(diào)用 c語(yǔ)言 調(diào)用匯編

c語(yǔ)言中如何調(diào)用匯編程序

1、如果匯編程序是可執(zhí)行文件,比如exe文件,則可以使用system函數(shù)直接調(diào)用。比如下面的代碼,用system()打開(kāi)windows上的記事本程序。

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),光明網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:光明等地區(qū)。光明做網(wǎng)站價(jià)格咨詢:18980820575

#include

#include

int main()

{

system("notepad.exe");

return 0;

}2、在C語(yǔ)言源碼中,可以通過(guò)內(nèi)聯(lián)匯編來(lái)直接編寫匯編程序代碼。不同的編譯器使用內(nèi)聯(lián)匯編的方法不同,vc/vs編譯器中一般使用__asm關(guān)鍵字來(lái)使用內(nèi)聯(lián)匯編,gcc編譯器一般使用asm關(guān)鍵字來(lái)使用內(nèi)聯(lián)匯編,以vc6.0為例,下面的代碼通過(guò)使用內(nèi)聯(lián)匯編來(lái)計(jì)算1+1,并將結(jié)果保存到int型變量result中。

#include

int main()

{

int result;

_asm {

mov eax,1

mov ebx,1

add eax,ebx

mov result, eax

}

printf("1+1=%d\n", result);

return 0;

}

在c語(yǔ)言里怎么調(diào)用匯編函數(shù)?

把匯編寫在另一個(gè)文件里 在main寫個(gè)原型聲明 再把兩個(gè)文件同時(shí)編譯可不可以。

我的gcc編譯器里是這樣寫的

匯編文件m.s

.file "stdio.h"

#hellowrold.s print "hello,world!"

.section .data

output:

.ascii "%d %d %d\0"

.section .text

.globl _fun

_fun:

pushl %ebp

movl %esp, %ebp

subl $16, %esp

movl 0x8(%ebp), %eax

movl %eax, 0x4(%esp)

movl 0xc(%ebp), %eax

movl %eax, 0x8(%esp)

movl 0x10(%ebp), %eax

movl %eax, 0xc(%esp)

movl $output, %eax

movl %eax, (%esp)

call _printf

movl %ebp, %esp

popl %ebp

ret

.end

主函數(shù)前的原型聲明 extern int fun(int i, int j, int k);

匯編語(yǔ)言調(diào)用c語(yǔ)言

如果keil5的話,在匯編內(nèi)調(diào)用c語(yǔ)言的變量,可以

IMPORT (變量名)

LDR r0, =(變量名) //獲得該變量地址到r0

LDR r0,[r0] //將r0其值作為地址,獲取其地址指向的值

這樣c中變量的值就傳遞到r0了

網(wǎng)站欄目:匯編寫c語(yǔ)言函數(shù)調(diào)用 c語(yǔ)言 調(diào)用匯編
鏈接URL:http://muchs.cn/article18/dohcedp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站導(dǎo)航微信小程序、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)