十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
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;
}
把匯編寫在另一個(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);
如果keil5的話,在匯編內(nèi)調(diào)用c語(yǔ)言的變量,可以
IMPORT (變量名)
LDR r0, =(變量名) //獲得該變量地址到r0
LDR r0,[r0] //將r0其值作為地址,獲取其地址指向的值
這樣c中變量的值就傳遞到r0了