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

2021-09-17 23:40:54 字數 2322 閱讀 9458

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

includelib kernel32.lib;這個庫用於呼叫win32的exitprocess api函式.

includelib ucrt.lib;這個庫裡面有c函式的實現.

includelib legacy_stdio_definitions.lib;這個庫裡面有c函式的宣告,不包含這個庫鏈結時會出錯,跟vs版本有關(vs2017必須包含).

printf    proto c : dword,:vararg;對printf函式宣告.

scanf proto c : dword,:vararg;對scanf函式宣告.

format byte '%s',0;用於printf函式格式化輸出.

msg1 byte 'hello,world!',10,0;用於printf函式直接輸出.

msg2 byte 'hello,world!',10,0;用於printf格式化輸出.

invoke printf,offset msg1

invoke printf,offset format,offset msg2

format2 byte '%d%d',0;用於scanf函式格式化輸入.

format3 byte 'value1 = %d value2 = %d',10,0;用於printf函式格式化輸出.

msg3 byte 'please input two number:',10,0;用於printf函式輸出提示資訊.

value1 dword 0;用於存放scanf函式讀入的值.

value2 dword 0;用於存放scanf函式讀入的值.

invoke printf,offset msg3

invoke scanf,offset format2,offset value1,offset value2

invoke printf,offset format3,dword ptr value1,dword ptr value2

includelib kernel32.lib;這個庫用於呼叫win32的exitprocess api函式.

includelib ucrt.lib;這個庫裡面有c函式的實現.

includelib legacy_stdio_definitions.lib;這個庫裡面有c函式的宣告,不包含這個庫鏈結時會出錯,跟vs版本有關(vs2017必須包含).

.386

.model flat,stdcall

exitprocess proto,

dwexitcode:dword

printf proto c : dword,:vararg;對printf函式宣告.

scanf proto c : dword,:vararg;對scanf函式宣告.

.data

format byte '%s',0;用於printf函式格式化輸出.

msg1 byte 'hello,world!',10,0;用於printf函式直接輸出.

msg2 byte 'hello,world!',10,0;用於printf格式化輸出.

format2 byte '%d%d',0;用於scanf函式格式化輸入.

format3 byte 'value1 = %d value2 = %d',10,0;用於printf函式格式化輸出.

msg3 byte 'please input two number:',10,0;用於printf函式輸出提示資訊.

value1 dword 0;用於存放scanf函式讀入的值.

value2 dword 0;用於存放scanf函式讀入的值.

.code

main proc

invoke printf,offset msg1

invoke printf,offset format,offset msg2

invoke printf,offset msg3

invoke scanf,offset format2,offset value1,offset value2

invoke printf,offset format3,dword ptr value1,dword ptr value2

push 0h

call exitprocess

main endp

end main

匯程式設計序呼叫c程式

首先是匯程式設計序,還是前面的例子,只是加了2行程式 extern main 說明這個函式從外面程式獲得 section data charact db a section text global start start mov ecx,charact push ecx call usestack ...

呼叫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...