第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Windows下用匯編程序編寫Hello World?

如何在Windows下用匯編程序編寫Hello World?

qq_笑_17 2019-07-22 20:06:20
如何在Windows下用匯編程序編寫Hello World?我想在Windows下編寫一些基本的匯編語言,我正在使用NASM,但是我不能讓任何東西工作。如何在Windows上不借助C函數(shù)編寫并編譯Hello World?
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經(jīng)驗 獲得超4個贊

此示例演示如何直接轉到WindowsAPI,而不是在C標準庫中鏈接。

    global _main    extern  _GetStdHandle@4
    extern  _WriteFile@20
    extern  _ExitProcess@4

    section .text
_main:
    ; DWORD  bytes;    
    mov     ebp, esp    sub     esp, 4

    ; hStdOut = GetstdHandle( STD_OUTPUT_HANDLE)
    push    -11
    call    _GetStdHandle@4
    mov     ebx, eax    

    ; WriteFile( hstdOut, message, length(message), &bytes, 0);
    push    0
    lea     eax, [ebp-4]
    push    eax
    push    (message_end - message)
    push    message
    push    ebx
    call    _WriteFile@20

    ; ExitProcess(0)
    push    0
    call    _ExitProcess@4

    ; never here
    hlt
message:
    db      'Hello, World', 10message_end:

要編譯,您需要NASM和LINK.EXE(來自VisualStudioStandardEdition)

   nasm -fwin32 hello.asm
   link /subsystem:console /nodefaultlib /entry:main hello.obj


查看完整回答
反對 回復 2019-07-22
?
FFIVE

TA貢獻1797條經(jīng)驗 獲得超6個贊

這些是使用WindowsAPI調(diào)用的Win 32和Win 64示例。他們是為MASM而不是NASM,但看看他們。您可以在這,這個文章。

;---ASM Hello World Win32 MessageBox.386.model flat, stdcall
include kernel32.inc
includelib kernel32.lib
include user32.inc
includelib user32.lib.data
title db 'Win32', 0msg db 'Hello World', 0.codeMain:push 0            ; uType = MB_OK
push offset title ; LPCSTR lpCaption
push offset msg   ; LPCSTR lpText
push 0            ; hWnd = HWND_DESKTOP
call MessageBoxApush eax          ; uExitCode = MessageBox(...)call ExitProcessEnd Main;---ASM Hello World Win64 MessageBoxextrn MessageBoxA: PROC
extrn ExitProcess: PROC.data
title db 'Win64', 0msg db 'Hello World!', 0.code
main proc  sub rsp, 28h  
  mov rcx, 0       ; hWnd = HWND_DESKTOP
  lea rdx, msg     ; LPCSTR lpText
  lea r8,  title   ; LPCSTR lpCaption
  mov r9d, 0       ; uType = MB_OK
  call MessageBoxA
  add rsp, 28h  
  mov ecx, eax     ; uExitCode = MessageBox(...)
  call ExitProcessmain endpEnd


若要使用MASM組裝和鏈接這些文件,請將其用于32位可執(zhí)行文件:

ml.exe [filename] /link /subsystem:windows 
/defaultlib:kernel32.lib /defaultlib:user32.lib /entry:Main

或者對于64位可執(zhí)行文件:

ml64.exe [filename] /link /subsystem:windows 
/defaultlib:kernel32.lib /defaultlib:user32.lib /entry:main


查看完整回答
反對 回復 2019-07-22
  • 3 回答
  • 0 關注
  • 2109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號