冰楓論壇

標題: 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內的所有檔案。

實例:
  1. INCLUDE E:\masm64\include64\masm64rt.inc
  2. EXTRN   printf:PROC
  3. EXTRN   scanf:PROC
  4. EXTRN   getchar:PROC
  5. EXTRN   strcat:PROC
  6. ;*********************************************************************
  7. .DATA
  8. now  SYSTEMTIME <>
  9. szName   DB     24 DUP (0)
  10. szFmt1   DB     "%18[^",0Ah,"]",0
  11. szFmt2   DB     "今天是%d月%d日,",0Dh,0Ah,0
  12. szFmt3   DB     "%s,祝您學習x64組合語言順利。",0
  13. szHint   DB     "請輸入您的姓名:",0
  14. Ellipses DB     "...",0
  15. ;*********************************************************************
  16. .CODE
  17. ;---------------------------------------------------------------------
  18. main    PROC
  19. ;印出提示字串,並讓使用者輸入姓名
  20.         invoke  printf,ADDR szHint
  21.         invoke  scanf,ADDR szFmt1,ADDR szName
  22.         call    getchar
  23.         cmp     al,0Ah  ;若AL=0Ah,表示輸入未超過18個字元
  24.         je      ok
  25.         invoke  strcat,ADDR szName,ADDR Ellipses
  26. ;取得今天日期,並印出來
  27. ok:     invoke  GetLocalTime,ADDR now
  28.         xor     rdx,rdx
  29.         sub     r8,r8
  30.         invoke  printf,ADDR szFmt2,now.wMonth,now.wDay
  31. ;印出使用者輸入的姓名及祝福語
  32.         invoke  printf,ADDR szFmt3,ADDR szName
  33.         invoke  ExitProcess,NULL
  34. main    ENDP
  35. ;*********************************************************************
  36. END
複製代碼





歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓