冰楓論壇
標題:
WIN64組合語言也能呼叫C語言函式
[打印本頁]
作者:
ikj78i
時間:
半小時前
標題:
WIN64組合語言也能呼叫C語言函式
微軟實作了 C 語言標準函式庫,稱為 MSVCRT.DLL(這是 Microsoft Visual C++ Runtime 的縮寫)動態連結成式庫。MSVCRT.DLL 包含了 C 語言常用的函式,譬如 scanf、printf、sqrt……,在組合語言中也可以呼叫它們。
實作:
1.安裝MASM64 SDK:到
MASM論壇
下載masm64sdk_beta_2b.exe,安裝。
2.依據\masm64\bin64\FileList.txt內容,到
PCONLIFE
下載FileList.txt內的所有檔案。
實例:
INCLUDE E:\masm64\include64\masm64rt.inc
EXTRN printf:PROC
EXTRN scanf:PROC
EXTRN getchar:PROC
EXTRN strcat:PROC
;*********************************************************************
.DATA
now SYSTEMTIME <>
szName DB 24 DUP (0)
szFmt1 DB "%18[^",0Ah,"]",0
szFmt2 DB "今天是%d月%d日,",0Dh,0Ah,0
szFmt3 DB "%s,祝您學習x64組合語言順利。",0
szHint DB "請輸入您的姓名:",0
Ellipses DB "...",0
;*********************************************************************
.CODE
;---------------------------------------------------------------------
main PROC
;印出提示字串,並讓使用者輸入姓名
invoke printf,ADDR szHint
invoke scanf,ADDR szFmt1,ADDR szName
call getchar
cmp al,0Ah ;若AL=0Ah,表示輸入未超過18個字元
je ok
invoke strcat,ADDR szName,ADDR Ellipses
;取得今天日期,並印出來
ok: invoke GetLocalTime,ADDR now
xor rdx,rdx
sub r8,r8
invoke printf,ADDR szFmt2,now.wMonth,now.wDay
;印出使用者輸入的姓名及祝福語
invoke printf,ADDR szFmt3,ADDR szName
invoke ExitProcess,NULL
main ENDP
;*********************************************************************
END
複製代碼
歡迎光臨 冰楓論壇 (https://bingfong.com/)
Powered by 冰楓