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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在Windows下用匯編程序編寫(xiě)Hello World?

如何在Windows下用匯編程序編寫(xiě)Hello World?

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

3 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

此示例演示如何直接轉(zhuǎn)到WindowsAPI,而不是在C標(biāo)準(zhǔn)庫(kù)中鏈接。

    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(來(lái)自VisualStudioStandardEdition)

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


查看完整回答
反對(duì) 回復(fù) 2019-07-22
?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

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

;---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組裝和鏈接這些文件,請(qǐng)將其用于32位可執(zhí)行文件:

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

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

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


查看完整回答
反對(duì) 回復(fù) 2019-07-22
  • 3 回答
  • 0 關(guān)注
  • 2132 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)