stargazer吧 关注:16贴子:139
  • 0回复贴,共1

32位控制台“hello world”汇编程序

只看楼主收藏回复

.386
.model flat,stdcall
option casemap:none
includelib kernel32.lib 
includelib user32.lib 
GetStdHandle PROTO :DWORD
ExitProcess PROTO :DWORD
WriteFile PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD
lstrlenA PROTO :DWORD
STD_INPUT_HANDLE                     equ -10
STD_OUTPUT_HANDLE                    equ -11
STD_ERROR_HANDLE                     equ -12
NULL                                 equ 0
.data 
mess    db 'Hello World',10,0    ;要显示的信息 
.data? 
StdOut  dd ?    ;存放标准输出的句柄 
CharOut dd ?    ;记录实际输出的字符数 
.code 
start:   
        invoke GetStdHandle,STD_OUTPUT_HANDLE   ;获取标准输出的把柄 
        mov StdOut,eax      ;保存把柄号 
        lea eax,mess 
        invoke lstrlenA,eax  ;求字符串的长度 
        lea ecx,CharOut 
        invoke WriteFile,StdOut,offset mess,eax,ecx,NULL  ;写文件 
         
        invoke ExitProcess,NULL   ;程序结束 
end start 
Setting environment for using Microsoft Visual Studio 2008 x86 tools.
ml /coff /c "h32con.asm"
Microsoft (R) Macro Assembler Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.
 Assembling: h32con.asm
link /SUBSYSTEM:CONSOLE "h32con.obj"
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.
C:\Users\Admin\Desktop>h32con.exe
Hello World



1楼2009-03-29 18:30回复